ffmpeg:找不到流0(视频:h264)未指定大小的编解码器参数


9

我尝试将视频从.raw转换为.mp4。因此,我确实下载,构建并安装了x264和ffmpeg。但是,命令:

ffmpeg -f h264 -i output.raw -vcodec copy output.mp4

失败并显示错误(如下图所示)。有没有什么办法解决这一问题?

在此处输入图片说明

我还运行的命令:

1个

root@beagleboard:/# v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUV 4:2:2 (YUYV)

        Index       : 1
        Type        : Video Capture
        Pixel Format: 'MJPG' (compressed)
        Name        : MJPEG

2

root@beagleboard:/dev# v4l2-ctl --set-fmt-video=pixelformat=0

您是否可以发布此输出:ffmpeg -i output.raw假设您尝试进行转换output.raw。另外,如果您尝试ffmpeg -i output.raw -vcodec libx264 -pix_fmt yuv420p output.mp4控制台输出什么?
拉吉卜2014年

感谢您的回复。如上所编辑,两个输出完全相同。您认为在捕获视频时编码或文件中是否存在问题?
dempap

output.raw从何处获得的以及如何创建的?
slhck 2014年

通过执行./capture -f -c 100 -o > output.raw。从以下网站下载的capture.c:linuxtv.org/downloads/v4l-dvb-apis/capture-example.html
dempap 2014年

Answers:


0

您的输入根本不是h264流,但是您告诉ffmpeg它是一个。

您需要告诉ffmpeg实际上是什么:一个mjpeg或yuyv格式的v4l2流(取决于相机在捕获时设置为哪种格式,由列出的两种格式v4l2-ctl --list-formats)。如果您希望ffmpeg将其转码为h264,则也需要告诉它。

如果输入是原始YUYV帧,则需要:

ffmpeg -f rawvideo -pix_fmt yuyv422 -s:v 640x480 -r 25 -i output.raw -c:v libx264 output.mp4

将640x480和25替换为视频的尺寸和帧速率。

如果输入是MJPEG,则应该可以省略,-f而mpmpeg应该可以解决:

ffmpeg -i output.raw -c:v libx264 output.mp4

顺便说一句,您不需要其他捕获工具。ffmpeg可以很好地从v4l2设备捕获:

ffmpeg -f v4l2 -r 25 -s:v 640x480 -i /dev/video0 -c:v libx264 output.mp4
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.