15

On a Ubuntu 10.04, I am trying to encode a raw video (YUV format) to a H.264 encoded video using below ffmpeg commands:

ffmpeg -i input.mp4 output.h264

but I get an error saying

Unsupported codec for output stream #0.0

Then when I try this option:

ffmpeg -i input.mp4 -formats h264 output.h264

it still does not encode.

Now I understood that ffmpeg uses libx264 for encoding to H.264 format. Now I have the package x264 - fast H.264 encoder installed on this Ubuntu.

My questions:

  1. Is there any relation between this libx264 which ffmpeg needs and x264 program?
  2. How do I install libx264 and make ffmpeg use this to allow me to encode a video to H.264 format?
3

2 Answers 2

17

First of all, those commands you use look syntactically incorrect. In order to have ffmpeg use x264, you need to supply the -c:v libx264 argument.

Now, if you have a raw YUV file, you need to tell ffmpeg which pixel format, which size, etc. is used:

ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 25 -i input.yuv \
-c:v libx264 output.mp4

Change these according to your YUV file's specifications. Have a look at ffmpeg -pix_fmts for a list of supported pixel formats. fourcc.org is also a good resource on that.

If you just want the raw H.264 bitstream in a .264 file:

ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 25 -i input.yuv \
-c:v libx264 -f rawvideo output.264
3
  • Why do you have to tell ffmpeg size, pix and frame rate? Why can't it detect it normaly like when using a non-raw video... Feb 25 at 0:46
  • @RicardoBohner Because raw video, like the name says, is just a bunch of video pixels (simply speaking). In order to know how many pixels a frame is, and how fast to play each frame, you have to tell ffmpeg these metadata. Normally, that is all stored in a container, which, for raw video, is not present.
    – slhck
    Feb 28 at 16:39
  • thank you very much for the expanation Feb 28 at 18:23
0

ffmpeg -f rawvideo -pix_fmt yuv420p -s:v 1920x1080 -r 23.976 -i raw_i420_1920_1080 -vcodec libx264 -f rawvideo output.264

-vcodec tells it which codec to use. man ffmpeg will help you learn more.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .