1

Я хочу объединить две команды ffmpeg в одну команду. Я использую готовый двоичный файл ffmpeg в своем приложении для Android. Я хочу .ts файлы и наложить изображение.

Я использую следующие команды:

  1. Чтобы .ts файлы:

    String[] ffmpegcommand = {"ffmpeg", "-i","concat:"+input_file_path+"|"+input_file_path1, "-c", "copy", "-bsf:a", "aac_adtstoasc", output_file_path};
    
  2. Применить эффект наложения изображения:

    String[] ffmpegcommand = {"ffmpeg","-y" ,"-i", input_file_path,"-strict","experimental", "-vf","movie="+AppStaticData.BASE_FOLDER_PATH + File.separator + "watermarklogo.png"+" [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]", AppStaticData.BASE_FOLDER_PATH+"/" + output_file_path};
    

2 ответа2

3

Вы можете сделать это одной командой с помощью фильтра concat:

ffmpeg -i input0.ts -i input1.ts -i input2.ts -i overlay.png -filter_complex \
"[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[vv][a]; \
 [vv][3:v]overlay=W-w-10:10[v]" \
-map "[v]" -map "[a]" output.mp4
0

Большое спасибо LordNeckbeard только за то, что вы можете подумать, что его решение не работает, потому что, если вы скопируете и вставите все, не будет работать. Просто поместите все в одну строку, и это будет работать так:

ffmpeg -i file1.mp4 -i file2.mp4 -i file3.mp4 -i watermark.png -filter_complex "[0:v]setpts=PTS-STARTPTS[v0]; [1:v]setpts=PTS-STARTPTS[v1]; [2:v]setpts=PTS-STARTPTS[v2]; [v0][0:a][v1][1:a][v2][2:a]concat=n=3:v=1:a=1[v][aout]; [v][3:v]overlay=W-w-10:10[vout]" -map "[vout]" -map "[aout]" output.mp4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .