Using ffmpeg to encode a raw video to H.264 format


10

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?

What about your previous question, wasn't that solved? ffmpeg usage to encode a video to H264 codec format
slhck

@slhck - Thanks but, When I used:- ffmpeg -s 352x240 -i 352x240_420.yuv -vcodec libx264 out.mp4. It gave error - "Unknown encoder 'libx264'". Any further pointers. Is libx264 same as x264 library or something other.
goldenmean

Regarding compiling ffmpeg and x264 on Linux, see here: ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide
slhck

Risposte:


11

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

-1

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.