gpt4 book ai didi

ffmpeg - 通过 ffplay 播放 USB 网络摄像头流时获取 "unable to decode APP fields"

转载 作者:行者123 更新时间:2023-12-01 22:56:38 28 4
gpt4 key购买 nike

我正在尝试在 Windows 中使用 ffplay 播放 USB 网络摄像头流(不确定它是什么格式..)。我可以毫无问题地观看视频,但我在控制台中不断收到以下错误。

ffplay.exe -f dshow -i video="Logitech HD Webcam C615" -loglevel debug

[mjpeg @97a118cc80] 无法解码 APP 字段:处理输入时发现无效数据 check logs for more details

我真的需要担心这个错误吗?或者我需要在命令中提供的任何过滤器来消除此错误。

注意:我尝试使用 ffmpeg 将流保存到文件中,但遇到了同样的问题。

提前致谢。

最佳答案

那些APP字段消息不是错误。您所看到的是罗技专有的 Motion-jpeg 格式,他们在许多网络摄像机中使用该格式。例如,我在 C270 和较新的 c922 中看到过它。 mjpeg流包含一系列jpeg图像,有些是关键帧,完整的图像,有些是其他帧如增量帧,描述帧之间的差异。 Logitech 所做的是将 H264 数据作为 APP 附件附加到 jpeg 帧上,从而将 H264 流嵌入到 mjpeg 流中,即它是流中的流。当您播放或转码 mjpeg 流中的数据时,ffmpeg 会遇到这些 APP 附件,并且不知道如何处理它们。我相信像 Skype 这样的程序能够读取外部 mjpeg 流和内部 H264 流。

如果您想亲自看到这一点,您可以从摄像机的 mjpeg 流中编码一个小视频,然后提取 jpeg 图像,然后查看 jpeg 图像的结构,您将看到嵌入的视频。

# create a small mp4, copying mjpeg stream off the cam for a second or two
$ ffmpeg -f v4l2 -input_format mjpeg -i /dev/video0 -c:v copy test.mp4

# extract the unaltered jpeg files inside the stream
$ ffmpeg -i test.mp4 -vcodec copy %03d.jpg

# view any of the jpeg files for APP attachments
$ exiv2 -pS 001.jpg

STRUCTURE OF JPEG FILE: 001.jpg address | marker | length | data
0 | 0xffd8 SOI
2 | 0xffe0 APP0 | 33 | AVI1.....x.x....................
37 | 0xffdb DQT | 67
106 | 0xffdb DQT | 67
175 | 0xffdd DRI | 4
181 | 0xffe0 APP0 | 4 | ....
187 | 0xffc0 SOF0 | 17
206 | 0xffda SOS

看到 jpeg 上的那些 APP0 附件了吗?这就是解码器/播放器提示的嵌入式 H264 数据。

关于ffmpeg - 通过 ffplay 播放 USB 网络摄像头流时获取 "unable to decode APP fields",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439184/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com