запись ffmpeg до и после применения фильтров - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь использовать ffmpeg для выполнения следующих действий:

  • получить потоковый ввод [OK]
  • сохранить на диск видео как есть [TODO]
  • применить фильтр, т. Е. Drawtext [OK]
  • сохранить на диск наложенное видео [OK]
  • просмотреть наложенное видео [OK]

Вот моя текущая командная строка:

ffmpeg -rtsp_transport tcp -i <path-to-stream> -vf "[in]drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2[out]" -vcodec libx264 -f tee -map 0:v "[f=mp4]test.mp4|[f=nut]pipe:" | ffplay pipe:

Единственное, что я не понимаю, как это сделать, - это запись видео до drawtext.Я думаю, мне нужно создать еще один tee:

INPUT ---> TEE ---->RECORD
                |
                |-->FILTERS---> TEE ---->RECORD
                                     |
                                     |-->PLAY

Поэтому я попытался с помощью этой громоздкой команды:

ffmpeg -rtsp_transport tcp -i <path-to-stream> -vcodec libx264 -f tee -map 0:v "[f=mp4]before.mp4|[f=nut]pipe:" | ffmpeg -f mp4 -i pipe: -vf "[in]drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2[out]" -vcodec libx264 -f tee -map 0:v "[f=mp4]after.mp4|[f=nut]pipe:" | ffplay pipe:

Она не выдает ошибки, записи "before.mp4"но ни "after.mp4", ни предварительный просмотр не работают.Конечно, я забыл что-то в синтаксисе.

1 Ответ

1 голос
/ 07 мая 2019

Отобразите видео дважды и примените фильтр только к первому выходному потоку.

Используйте

ffmpeg -rtsp_transport tcp -i <path-to-stream> -map 0:v -map 0:v -filter:v:0 "drawtext=textfile='text.txt': reload=1: font=arial: fontcolor=red: fontsize=80: box=1: boxcolor=yellow@0.5: boxborderw=5: x=(w-text_w)/2: y=(h-text_h)/2" -c:v libx264 -f tee "[f=mp4:select=\'v:0\']withtext.mp4|[f=mp4:select=\'v:1\']notext.mp4|[f=nut:select=\'v:0\']pipe:" | ffplay pipe:

...