ffmpeg: Could not find codec parameters for stream 0 (Video: h264) unspecified size

I try to convert a video from .raw to .mp4. For this reason I did download, build and install both x264 and ffmpeg. However, command:

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

fails with error (shown in picture below). Is there any way to fix this?

enter image description here

Commands I also run:

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

Solution 1:

Your input is simply not an h264 stream, yet you are telling ffmpeg it is one.

You need to tell ffmpeg what it actually is: a v4l2 stream in mjpeg or yuyv format (depending on what format your camera was set to at the time of capture, of the two listed by v4l2-ctl --list-formats). If you want ffmpeg to transcode it to an h264, you need to tell it that, too.

If the input is raw YUYV frames, you want:

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

Replace 640x480 and 25 with the dimensions and framerate of your video.

If the input is MJPEG, you should be able to just leave out the -f and ffmpeg should figure it out:

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

Incidentally, you do not need another capture tool; ffmpeg can capture from v4l2 devices just fine:

ffmpeg -f v4l2 -r 25 -s:v 640x480 -i /dev/video0 -c:v libx264 output.mp4