FFmpeg: Difference between revisions
No edit summary |
|||
Line 29: | Line 29: | ||
==C API== | ==C API== | ||
A doxygen reference manual for their C api is available at [https://ffmpeg.org/doxygen/trunk/index.html]. | A doxygen reference manual for their C api is available at [https://ffmpeg.org/doxygen/trunk/index.html]. | ||
===Muxing to memory=== | |||
You can specify a custom <code>AVIOContext</code> and attach it to your <code>AVFormatContext->pb</code> to mux directly to memory or to implement your own buffering. |
Revision as of 23:48, 8 October 2019
FFmpeg is a library for encoding and decoding multimedia. You can interact with FFmpeg using their command-line interface or using their C API. I find it useful for converting videos to gifs. You can also extract videos into a sequence of images or vice-versa.
CLI
Basic usage is as follows:
ffmpeg -i input_file [-s resolution] [-b bitrate] [-ss start_second] [-t time] [-r output_framerate] output.mp4
x264
x264 is a software h264 decoder and encoder.
[1]
Changing Pixel Format
Encode to h264 with YUV420p pixel format
ffmpeg -i input.mp4 -c:v libx264 -profile:v high -pix_fmt yuv420p output.mp4
Images to Video
Reference
Assuming 60 images per second and you want a 30 fps video.
ffmpeg -framerate 60 -i image-%03d.png -r 30 video.mp4
C API
A doxygen reference manual for their C api is available at [2].
Muxing to memory
You can specify a custom AVIOContext
and attach it to your AVFormatContext->pb
to mux directly to memory or to implement your own buffering.