![如何防止 ffmpeg 因“AVC:最终大小”错误而出现间歇性故障?](https://linux22.com/image/32576/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%20ffmpeg%20%E5%9B%A0%E2%80%9CAVC%EF%BC%9A%E6%9C%80%E7%BB%88%E5%A4%A7%E5%B0%8F%E2%80%9D%E9%94%99%E8%AF%AF%E8%80%8C%E5%87%BA%E7%8E%B0%E9%97%B4%E6%AD%87%E6%80%A7%E6%95%85%E9%9A%9C%EF%BC%9F.png)
我正在尝试打开来自的 NASA HDTV 视频流ustream.tv直接在vlc
.我遇到的问题是它只有时有效。我正在使用的命令如下:
ffmpeg -i "rtmp://ustreamlivefs.fplive.net/ustream2live-live/stream_live_1_1_6540154 swfUrl=http://www.ustream.tv/flash/viewer.swf live=1" -c copy -bsf h264_mp4toannexb -y -f mpegts pipe: | vlc -
当它起作用时,只要我让流保持运行,它就可以很好地工作。然而,它通常会导致启动失败并给出如下输出:
[h264 @ 0x2273760] AVC: nal size 21135391
[h264 @ 0x2273760] no frame!
Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec copy: Invalid argument
[mpegts @ 0x227b360] H.264 bitstream malformed, no startcode found, use the h264_mp4toannexb bitstream filter (-bsf h264_mp4toannexb)
av_interleaved_write_frame(): Invalid argument
[0x7fb5140014e8] main stream error: cannot pre fill buffer
该命令的一些背景知识:最终目标不是vlc
通过 DLNA 进行分发以在电视上观看 - 因此需要转换为mpegts
容器格式。 DLNA 传输正在通过 进行mediatomb
。此配置遇到与上述示例相同的间歇性故障问题。
我在 Arch Linux 64 位上使用 ffmpeg 版本 1.1.3。
我试图寻找这个问题的答案,但我一直找不到任何有用的东西——我所看到的一切都是相似但不同的。我可以修改命令以使其更可靠吗?如果可以,如何修改?