【发布时间】:2012-03-28 14:03:01
【问题描述】:
我正在使用 FFMpeg 来解码 Mjpeg 流。 最近我遇到了来自 FFMpeg 的访问冲突异常,经过调查,我发现由于网络数据包丢失,我正在向 FFMpeg 传递一个可能有“间隙”的帧。 FFMpeg 可能会崩溃,因为它会跳转到帧内存中不存在的标记负载。
知道在哪里可以找到 mjpeg 结构验证器吗? 有什么方法可以配置 FFMpeg 自行执行此类验证?
谢谢。
【问题讨论】:
我正在使用 FFMpeg 来解码 Mjpeg 流。 最近我遇到了来自 FFMpeg 的访问冲突异常,经过调查,我发现由于网络数据包丢失,我正在向 FFMpeg 传递一个可能有“间隙”的帧。 FFMpeg 可能会崩溃,因为它会跳转到帧内存中不存在的标记负载。
知道在哪里可以找到 mjpeg 结构验证器吗? 有什么方法可以配置 FFMpeg 自行执行此类验证?
谢谢。
【问题讨论】:
我倾向于在这里使用 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 帧并继续流。
【讨论】:
没有真正找到问题的答案。 显然,ffmpeg 不能很好地处理损坏的帧。 决定尝试不同的 3rd 方解码器而不是 ffmpeg。目前,至少对于 Jpeg 来说,它运行得更快、更健壮。
【讨论】: