我想获得有关ffmpeg转码并将其广播到DVB-C环境的一些建议。 拥有一台基于Linux的服务器和基于Nvidia P4000的外置GPU。该机器的目标是在HLS上获取实时流,然后将文件转码为多播UDP。在转码后,多播TS到达接收器(Sumavision EMR 3.0),然后使用QAM卡调制到DVB-C,以便下一次传输到光纤。
所以,有一个奇怪的麻烦。在IPTV中,这种流没有明显的麻烦。分析TS,发现PCR精度(> 500 ms'伪CBR的原因)和非常罕见的不连续性错误的错误,这可能是基于源错误。 然后我将它带到Sumavision并应用入站参数(只需通过制作忠诚参考,缓冲区大小值和CBR输出值来重新多路复用此流)。在使用QAM调制器定制输出流(例如PSI / SI表,频率,符号率等)之后,分析器没有问题。
在一些测试电视上看到结果后。第一个显示这个频道很好,没有明显的麻烦(没有人工制品,没有异步声音)。第二台电视有视频问题,看起来像丢帧。有时声音会中断一毫秒。但是没有冻结 ' ETR 101 290的原因很好,可能是这种型号的电视解码此服务不正确。视频记录示例为here。
这是ffmpeg的代码。可能是,我错过了一些常见的参数,可能会让这些调谐器的输出效果更好。你能看到它没事吗?
sudo -u nobody ffmpeg -threads 0 -v warning -re -hwaccel cuvid -hwaccel_device 2 -c:v h264_cuvid -deint 0 -i http://x.x.x.x/playlist.m3u8 -bsf:v h264_mp4toannexb -map 0:0 -map 0:1 -vcodec h264_nvenc -gpu 2 -cbr true -sc_threshold 0 -filter:v scale_npp=960:540:interp_algo=lanczos -vprofile baseline -b:v 1000k -bufsize 1400k -maxrate 1400k -minrate 900k -force_key_frames 1 -g 50 -bf 0 -refs 1 -r 25 -strict experimental -c:a aac -b:a 64K -af aresample=44100 -ac 2 -flags -global_header -f segment -segment_format mpegts -segment_time 10 /path1/segment-1507744758-%06d.ts -map 0:0 -map 0:1 -vcodec h264_nvenc -gpu 2 -cbr true -sc_threshold 0 -vprofile high -b:v 8000k -bufsize 400k -maxrate 9000k -minrate 7200k -force_key_frames 1 -g 50 -bf 2 -refs 1 -r 25 -strict experimental -c:a aac -b:a 192K -af aresample=44100 -ac 2 -flags -global_header -f tee
[f=segment:segment_format=mpegts:segment_time=10]/path2/segment-1507744758-%06d.ts|[f=mpegts:muxrate=9333k:mpegts_pmt_start_pid=0xB4A:mpegts_start_pid=0xB4B]'udp://y.y.y.y:1234?buffer_size=0&overrun_nonfatal_option=1&pkt_size=1316&ttl=15'