我正在使用FFMpeg解码Mjpeg流。 最近我遇到了来自FFMpeg的访问冲突异常,经过调查,我发现由于网络数据包丢失,我将FFMpeg传递给可能存在“缺口”的帧。 FFMpeg可能会崩溃,因为它会跳转到帧内存中不存在的标记有效负载。
我知道在哪里可以找到mjpeg结构验证器吗? 有没有办法配置FFMpeg自己执行这样的验证?
感谢。
答案 0 :(得分:1)
我倾向于使用Gstreamer而不是ffmpeg并将jpegdec插件中的“max-errors”属性设置为-1。
gst-launch -v souphttpsrc location="http://[ip]:[port]/[dir]/xxx.cgi" do-timestamp=true is_live=true ! multipartdemux ! jpegdec max-errors=-1 ! ffmpegcolorspace ! autovideosink
。
这会处理损坏的jpeg帧并继续流。
答案 1 :(得分:0)
没有真正找到问题的答案。 显然,ffmpeg并不能很好地处理损坏的帧。 决定尝试使用不同的第三方解码器而不是ffmpeg。目前,至少对于Jpeg来说,它的工作速度更快,更强大。