我有和RTP视频广播流(使用NOVUS - H.264 / MPEG-4 HD / SD广播编码器)。我有一个Windows Server 2012(Intel Xeon E5-2690,128Gb RAM),其服务正在将此流记录到文件中(使用最新的FFmpeg,将其称为外部进程)。每隔2-5分钟录制停止并再次开始新文件。
视频中有时存在显着(而非)滞后。这些滞后最多位于起始文件中,有时位于中心/末尾。关于日志,有丢包。
可能是网络问题,但是:
我从控制台手动运行另一个ffmpeg实例并开始按时间分段记录相同的广播流。在这种情况下,录音非常好(错过数据包1..5非常非常少),没有滞后。在第一时间,当第一个ffmpeg记录第二个ffmpeg时没有问题。
这种行为可能是什么原因?两个ffmpeg实例并行运行并读取相同的udp输入,但是当第二个感觉良好时,第一个错过数据包。没有内存问题,没有硬盘问题,没有CPU过载。我也试图设置第一个ffmpeg进程的最高优先级,但它没有帮助。我看到的唯一区别是第一个ffmpeg是从服务运行的,第二个是从本地管理员运行的。说实话,我之前使用vlc作为录音机,但它也遇到了同样的问题......而且我可以肯定地说视频流是可以的,因为它在另一台PC上24小时不间断地在VLC播放器中播放...
这就是我从windows服务(C#)运行ffmpeg的方法:
_process = new Process();
var startInfo = new ProcessStartInfo(@"ffmpeg\ffmpeg.exe");
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
startInfo.Arguments = "-loglevel debug -y -ss 1 -i \"" + _url + "\" -vcodec copy -y -an \"" + _outputFileName + "\"";
startInfo.CreateNoWindow = true;
从Windows服务自动录制视频的命令:
ffmpeg.exe -loglevel debug -y -ss 1 -i "rtp://225.1.1.1:1024" -vcodec copy -y -an "Session-021221.ts"
手动录制视频的命令。
D:\ffmpeg\ffmpeg -i "rtp://225.1.1.1:1024" -vcodec copy -an -f segment -strftime 1 -segment_time 300 "novus-%Y-%m-%d_%H-%M-%S.ts"
这是其中一个损坏记录的日志的一部分(附加了一些其他完整日志):
...
2017.09.01 18R:22:56.171 frame= 172 fps= 45 q=-1.0 size= 2816kB time=00:00:03.45 bitrate=6674.9kbits/s speed=0.909x
2017.09.01 18R:22:56.174 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:22:56.686 Last message repeated 26 times
2017.09.01 18R:22:56.687 frame= 199 fps= 46 q=-1.0 size= 3072kB time=00:00:03.99 bitrate=6297.7kbits/s speed=0.926x
2017.09.01 18R:23:04.554 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:04.571 Last message repeated 26 times
2017.09.01 18R:23:04.571 frame= 226 fps= 47 q=-1.0 size= 3584kB time=00:00:04.53 bitrate=6472.7kbits/s speed=0.939x
2017.09.01 18R:23:04.571 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:04.572 Last message repeated 26 times
2017.09.01 18R:23:04.572 frame= 253 fps= 47 q=-1.0 size= 4096kB time=00:00:05.07 bitrate=6610.4kbits/s speed=0.948x
2017.09.01 18R:23:04.572 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:04.572 frame= 254 fps= 21 q=-1.0 size= 4096kB time=00:00:05.09 bitrate=6584.5kbits/s speed=0.418x
2017.09.01 18R:23:04.572 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:04.655 Last message repeated 5 times
2017.09.01 18R:23:04.684 [rtp @ 0000000000a3a9a0] max delay reached. need to consume packet
2017.09.01 18R:23:04.684 [rtp @ 0000000000a3a9a0] RTP: missed 4147 packets
2017.09.01 18R:23:04.685 [rtp @ 0000000000a3a9a0] RTP: PT=21: bad cseq a237 expected=9204
2017.09.01 18R:23:04.685 [rtp @ 0000000000a3a9a0] max delay reached. need to consume packet
2017.09.01 18R:23:04.685 [rtp @ 0000000000a3a9a0] RTP: missed 4148 packets
2017.09.01 18R:23:04.685 [rtp @ 0000000000a3a9a0] Continuity check failed for pid 256 expected 8 got 15
2017.09.01 18R:23:04.686 [rtp @ 0000000000a3a9a0] Continuity check failed for pid 272 expected 10 got 15
2017.09.01 18R:23:04.686 [rtp @ 0000000000a3a9a0] Continuity check failed for pid 32 expected 13 got 4
2017.09.01 18R:23:04.686 [rtp @ 0000000000a3a9a0] Continuity check failed for pid 0 expected 14 got 6
2017.09.01 18R:23:04.767 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:05.255 Last message repeated 25 times
2017.09.01 18R:23:05.256 frame= 286 fps= 22 q=-1.0 size= 4608kB time=00:00:12.51 bitrate=3016.0kbits/s speed=0.971x
2017.09.01 18R:23:05.257 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:05.77 Last message repeated 26 times
2017.09.01 18R:23:05.77 frame= 313 fps= 23 q=-1.0 size= 5120kB time=00:00:13.05 bitrate=3212.5kbits/s speed=0.974x
2017.09.01 18R:23:05.773 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:06.287 Last message repeated 26 times
2017.09.01 18R:23:06.288 frame= 340 fps= 24 q=-1.0 size= 5376kB time=00:00:13.59 bitrate=3239.2kbits/s speed=0.977x
2017.09.01 18R:23:06.29 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:06.803 Last message repeated 26 times
2017.09.01 18R:23:06.804 frame= 367 fps= 25 q=-1.0 size= 5888kB time=00:00:14.13 bitrate=3412.2kbits/s speed=0.979x
2017.09.01 18R:23:06.808 [NULL @ 0000000000a89ee0] ct_type:0 pic_struct:0
2017.09.01 18R:23:07.324 Last message repeated 26 times
2017.09.01 18R:23:07.324 frame= 394 fps= 26 q=-1.0 size= 6144kB time=00:00:14.67 bitrate=3429.5kbits/s speed=0.981x
...
一些完整日志: