偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.
全部博文(1750)
分类: 其他平台
2018-02-24 15:08:42
Ffmpeg 的参考代码在 /usr/share/doc/ffmpeg/examples
逐步分析:
cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o avio_dir_cmd.o avio_dir_cmd.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o avio_reading.o avio_reading.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o decode_audio.o decode_audio.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o decode_video.o decode_video.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o demuxing_decoding.o demuxing_decoding.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o encode_audio.o encode_audio.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o encode_video.o encode_video.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o extract_mvs.o extract_mvs.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o filtering_video.o filtering_video.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o filtering_audio.o filtering_audio.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o http_multiclient.o http_multiclient.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o metadata.o metadata.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o muxing.o muxing.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o remuxing.o remuxing.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o resampling_audio.o resampling_audio.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o scaling_video.o scaling_video.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o transcode_aac.o transcode_aac.c cc -I/usr/include/x86_64-linux-gnu -Wall -g -c -o transcoding.o transcoding.c cc avio_dir_cmd.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o avio_dir_cmd cc avio_reading.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o avio_reading cc decode_audio.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o decode_audio cc decode_video.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o decode_video cc demuxing_decoding.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o demuxing_decoding cc encode_audio.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -lm -o encode_audio cc encode_video.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o encode_video cc extract_mvs.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o extract_mvs cc filtering_video.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o filtering_video cc filtering_audio.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o filtering_audio cc http_multiclient.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o http_multiclient cc metadata.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o metadata cc muxing.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -lm -o muxing cc remuxing.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o remuxing cc resampling_audio.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -lm -o resampling_audio cc scaling_video.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o scaling_video cc transcode_aac.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o transcode_aac cc transcoding.o -lavdevice -lavformat -lavfilter -lavcodec -lswresample -lswscale -lavutil -o transcoding |
SHAPE \* MERGEFORMAT
/**
* @file
* libavformat AVIOContext API example.
*
* Make libavformat demuxer access media
content through a custom AVIOContext read callback.
* @example avio_reading.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* audio decoding with libavcodec API
example
*
* @example decode_audio.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* video decoding with libavcodec API
example
*
* @example decode_video.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* Demuxing and decoding example.
*
* Show how to use the libavformat and
libavcodec API to demux and
* decode audio and video data.
* @example demuxing_decoding.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* audio encoding with libavcodec API
example.
*
* @example encode_audio.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* video encoding with libavcodec API
example
*
* @example encode_video.c
*/
SHAPE \* MERGEFORMAT
ffhash.c
This example is a simple command line
application that takes one or more arguments. It demonstrates a typical use
of the hashing API with allocation, initialization, updating, and
finalizing.
SHAPE \* MERGEFORMAT
/**
* @file
* libavfilter API usage example.
*
* @example filter_audio.c
* This example will generate a sine wave
audio,
* pass it through a simple filter chain,
and then compute the MD5 checksum of
* the output data.
*
* The filter chain it uses is:
* (input) -> abuffer -> volume ->
aformat -> abuffersink -> (output)
*
* abuffer: This provides the endpoint
where you can feed the decoded samples.
* volume: In this example we hardcode it
to 0.90.
* aformat: This converts the samples to
the samplefreq, channel layout,
* and sample format required by the audio device.
* abuffersink: This provides the endpoint
where you can read the samples after
* they have passed through the
filter chain.
*/
SHAPE \* MERGEFORMAT
/**
* @file
* API example for audio decoding and
filtering
* @example filtering_audio.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* API example for decoding and filtering
* @example filtering_video.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* API example for audio decoding and
filtering
* @example filtering_audio.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* libavformat multi-client network API
usage example.
*
* @example http_multiclient.c
* This example will serve a file without
decoding or demuxing it over http.
* Multiple clients can connect and will
receive the same file.
*/
SHAPE \* MERGEFORMAT
/**
* @file
* HW-Accelerated decoding example.
*
* @example hw_decode.c
* This example shows how to do
HW-accelerated decoding with output
* frames from the HW video surfaces.
*/
SHAPE \* MERGEFORMAT
/**
* @file
* Shows how the metadata API can be used
in application programs.
* @example metadata.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* libavformat API example.
*
* Output a media file in any supported
libavformat format. The default
* codecs are used.
* @example muxing.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* Intel QSV-accelerated H.264 decoding
example.
*
* @example qsvdec.c
* This example shows how to do
QSV-accelerated H.264 decoding with output
* frames in the GPU video surfaces.
*/
SHAPE \* MERGEFORMAT
/**
* @file
* libavformat/libavcodec demuxing and
muxing API example.
*
* Remux streams from one container format
to another.
* @example remuxing.c
*/
SHAPE \* MERGEFORMAT
/**
* @example resampling_audio.c
* libswresample API use example.
*/
SHAPE \* MERGEFORMAT
/**
* @file
* libswscale API use example.
* @example scaling_video.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* Simple audio converter
*
* @example transcode_aac.c
* Convert an input audio file to AAC in an
MP4 container using FFmpeg.
* Formats other than MP4 are supported
based on the output file extension.
* @author Andreas Unterweger
(dustsigns@gmail.com)
*/
SHAPE \* MERGEFORMAT
/**
* @file
* API example for demuxing, decoding,
filtering, encoding and muxing
* @example transcoding.c
*/
SHAPE \* MERGEFORMAT
/**
* @file
* Intel VAAPI-accelerated encoding
example.
*
* @example vaapi_encode.c
* This example shows how to do
VAAPI-accelerated encoding. now only support NV12
* raw file, usage like: vaapi_encode 1920
1080 input.yuv output.h264
*
*/
SHAPE \* MERGEFORMAT
/**
* @file
* Intel VAAPI-accelerated transcoding
example.
*
* @example vaapi_transcode.c
* This example shows how to do
VAAPI-accelerated transcoding.
* Usage: vaapi_transcode input_stream
codec output_stream
* e.g: - vaapi_transcode input.mp4
h264_vaapi output_h264.mp4
* - vaapi_transcode input.mp4 vp9_vaapi output_vp9.ivf
*/