【发布时间】:2019-12-05 20:11:13
【问题描述】:
我正在尝试使用我找到的信息here 使用 ffmpeg 进行流式传输。
-
服务器
ffmpeg -f dshow -i video="john":audio="doe" -vcodec libx264 -preset ultrafast -tune zerolatency -acodec aac -f mpegts udp://localhost:1234 -
客户
ffmpeg -i udp://localhost:1234?listen test.mp4
客户端实际上会直播视频,但出于测试目的,我现在将输出写入文件。
有趣的部分来了。我在一个黑暗的房间里开始播放流(视频和音频),一切都很好。 我打开房间的灯,客户哭了很多错误。我后来检查了输出,在灯打开的部分确实非常损坏。这背后的原因可能是什么?如果可以提供帮助,我会在此处发布错误。
一些错误:
udp://localhost:1234?listen: corrupt decoded frame in stream 0trate= 845.6kbits/s dup=1250 drop=0 speed=1.08x
Last message repeated 1 times
[h264 @ 0000026c4af69400] Invalid NAL unit 1, skipping.7.61 bitrate= 864.7kbits/s dup=1441 drop=0 speed=1.07x
[h264 @ 0000026c4af69400] Invalid level prefix
[h264 @ 0000026c4af69400] error while decoding MB 18 8
[h264 @ 0000026c4af69400] concealing 911 DC, 911 AC, 911 MV errors in P frame
[h264 @ 0000026c4af4b780] Invalid NAL unit 1, skipping.
[h264 @ 0000026c4af4b780] negative number of zero coeffs at 10 14
[h264 @ 0000026c4af4b780] error while decoding MB 10 14
[h264 @ 0000026c4af4b780] concealing 679 DC, 679 AC, 679 MV errors in P frame
udp://localhost:1234?listen: corrupt decoded frame in stream 0
Last message repeated 1 times
[h264 @ 0000026c4ba1e1c0] Invalid NAL unit 1, skipping.8.21 bitrate= 858.0kbits/s dup=1460 drop=0 speed=1.07x
[h264 @ 0000026c4ba1e1c0] out of range intra chroma pred mode
[h264 @ 0000026c4ba1e1c0] error while decoding MB 34 18
[h264 @ 0000026c4ba1e1c0] concealing 495 DC, 495 AC, 495 MV errors in P frame
[h264 @ 0000026c4bb16840] top block unavailable for requested intra mode
[h264 @ 0000026c4bb16840] error while decoding MB 10 0
[h264 @ 0000026c4bb16840] concealing 160 DC, 160 AC, 160 MV errors in P frame
udp://localhost:1234?listen: corrupt decoded frame in stream 0
[h264 @ 0000026c4bb16cc0] Invalid NAL unit 0, skipping.8.58 bitrate= 853.9kbits/s dup=1463 drop=0 speed=1.06x
[h264 @ 0000026c4bb16cc0] corrupted macroblock 16 28 (total_coeff=-1)
[h264 @ 0000026c4bb16cc0] error while decoding MB 16 28
[h264 @ 0000026c4bb16cc0] concealing 113 DC, 113 AC, 113 MV errors in P frame
[h264 @ 0000026c4bb17140] cbp too large (84) at 12 0
[h264 @ 0000026c4bb17140] error while decoding MB 12 0
[h264 @ 0000026c4bb17140] concealing 160 DC, 160 AC, 160 MV errors in P frame
[mpegts @ 0000026c4aeb8d80] PES packet size mismatch
编辑:作为建议,我将这些参数添加到服务器。
-b:v 1M -bufsize 2M
现在错误大多消失了。除了有一次它似乎发生在我关灯的时候,虽然我尝试了 4-5 次后无法重现。
错误:
[h264 @ 000002646f0d2f80] cbp too large (118) at 23 1422.25 bitrate= 659.5kbits/s dup=368 drop=0 speed=1.33x
[h264 @ 000002646f0d2f80] error while decoding MB 23 14
[mpegts @ 000002646e578d80] PES packet size mismatch
[h264 @ 000002646f0d2f80] concealing 666 DC, 666 AC, 666 MV errors in P frame
[h264 @ 000002646f0d0f80] concealing 160 DC, 160 AC, 160 MV errors in P frame
[aac @ 000002646e64d640] Number of bands (59) exceeds limit (43).
Error while decoding stream #0:1: Invalid data found when processing input
[aac @ 000002646e64d640] Multiple frames in a packet.
[aac @ 000002646e64d640] Reserved bit set.
[aac @ 000002646e64d640] Number of bands (31) exceeds limit (29).
Error while decoding stream #0:1: Invalid data found when processing input
[h264 @ 000002646e5e11c0] concealing 160 DC, 160 AC, 160 MV errors in P frame
udp://localhost:1234?listen: corrupt decoded frame in stream 0trate= 633.1kbits/s dup=368 drop=0 speed=1.35x
Last message repeated 2 times
错误减少是因为我提高了比特率? (顺便说一下,我不知道默认比特率)。明亮解码失败,因为它携带更多信息,数据? (在原始视频中相同,但文件可能是较重的编码亮帧)
【问题讨论】:
-
如果从开灯开始,你有这个问题吗?还是只有在从黑暗过渡到光明时?而且,出于同样的原因,如果您快速将相机对准一个全新的场景,您会遇到问题吗?
-
@Brad 问题在灯亮时存在,并且在关闭时消失。
-
啊,好吧,那么使用 i-frame 就不是问题了。抱歉,帮不上忙……这超出了我所知道的范围。
-
强制固定比特率怎么样?问题是否可以在某个比特率以上重现?可能是打包的问题,并且在灯亮的情况下,对场景进行编码需要更多位?
-
@Brad 请检查编辑。
标签: ffmpeg udp video-streaming h.264 mpeg2-ts