Сжигание субтитров разных разрешений - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь создать прямой эфир с тремя качественными профилями с разными разрешениями (SD, HD и FullHD). В прямом эфире есть субтитры, и я должен записать их для совместимости.

Я знаю, как это сделать с одним профилем, но многие не знают.

ffmpeg -nostdin -loglevel error -hwaccel cuvid -deint 2 -drop_second_field 1 -surfaces 15 -c:v h264_cuvid -resize 1280x720 -y -i udp://xxx.xxx.xxx.xxx:xxxxx?pkt_size=1316\&buffer_size=409600\&fifo_size=1000000\&overrun_nonfatal=1 -filter_complex [i:0x2c6]hwdownload,format=nv12[base];[i:0x993]setpts=(2.5)/TB+PTS[subs];[subs]scale=1280:720[subtitle];[base][subtitle]overlay[v];[v]hwupload_cuda[v] -map [v] -c:v hevc_nvenc -preset llhq -rc vbr_hq -cq 23 -qp 23 -tier high -profile:v main10 -level 4.0 -b:v 2000k -maxrate 2400k -bufsize 1000k -map i:0x2bd -c:a libfdk_aac -ac 2 -b:a 64k -map i:0x2be -c:a libfdk_aac -ac 2 -b:a 64k -metadata:s:a:0 language=eng -metadata:s:a:1 language=spa -f mpegts -mpegts_flags resend_headers+pat_pmt_at_frames -mpegts_copyts 1 -pcr_period 40 udp://yyy.yyy.yyy.yyy:yyyy?ttl=31\?pkt_size=1316\&buffer_size=409600\&fifo_size=1000000\&overrun_nonfatal=1

Apparenlty, Iffmpeg не разрешает использовать фильтр -vf с filter_complex.

Я использую ffmpeg 3.4, cuda 8.

1 Ответ

0 голосов
/ 01 мая 2018

Используйте

ffmpeg -nostdin -loglevel error -hwaccel cuvid -deint 2 -drop_second_field 1 -surfaces 15
      -c:v h264_cuvid -y -i udp://xxx.xxx.xxx.xxx:xxxxx?pkt_size=1316\&buffer_size=409600\&fifo_size=1000000\&overrun_nonfatal=1
      -filter_complex "[i:0x2c6]hwdownload,format=nv12,split=3[fhd][hd][sd];
                       [i:0x993]setpts=(2.5)/TB+PTS,split=3[subfhd][subhd][subsd];
                       [fhd]scale=1920:1080[fhd];
                       [hd]scale=1280:720[hd];
                       [sd]scale=960:540[sd];
                       [subfhd]scale=1920:1080[subfhd];
                       [subhd]scale=1280:720[subhd];
                       [subsd]scale=960:540[subsd];
                       [fhd][subfhd]overlay,hwupload_cuda[v-fhd];
                       [hd][subhd]overlay,hwupload_cuda[v-hd];                           
                       [sd][subsd]overlay,hwupload_cuda[v-sd]"
      -map [v-fhd] -map [v-hd] -map [v-sd] -c:v hevc_nvenc -preset llhq -rc vbr_hq -cq 23 -qp 23 -tier high
      -profile:v main10 -level 4.0 -b:v 2000k -maxrate 2400k -bufsize 1000k 
      -map i:0x2bd -map i:0x2be -c:a libfdk_aac -ac 2 -b:a 64k 
      -metadata:s:a:0 language=eng -metadata:s:a:1 language=spa
      -f mpegts -mpegts_flags resend_headers+pat_pmt_at_frames -mpegts_copyts 1
      -pcr_period 40 udp://yyy.yyy.yyy.yyy:yyyy?ttl=31\?pkt_size=1316\&buffer_size=409600\&fifo_size=1000000\&overrun_nonfatal=1

Вам нужно будет настроить битрейт видео и размеры буфера по мере необходимости, но это основной шаблон команды.

...