刻录字幕不同的分辨率

时间:2018-04-30 20:28:47

标签: ffmpeg nvidia subtitle

我尝试使用具有不同分辨率(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 doen不允许在filter_complex中使用-vf过滤器。

我正在使用ffmpeg 3.4,cuda 8。

1 个答案:

答案 0 :(得分:-1)

使用

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

您必须根据需要调整视频比特率和缓冲区大小,但这是基本的命令模板。