@ltlovezh
2020-03-20T02:09:46.000000Z
字数 2320
阅读 3241
ffmpeg
Register a bitstream filter
av_register_bitstream_filter
av_get_default_channel_layout : 根据channel个数,获取默认的channel_layout(uint64_t)
av_get_channel_layout_nb_channels : 根据channel_layout(uint64_t)获取对应的channel数。
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}
ffmpeg -s 1280*720 -pix_fmt nv12 -i output-nv12.yuv -b:v 2000k -vcodec libx264 output-2000.h264
对NV12格式的YUV数据,进行H264编码。
-s表示视频帧的宽高,格式为W*H-pix_fmt表示像素格式,可以通过ffmpeg -pix_fmts查看FFmpeg支持的所有格式-i表示输入文件-b:v表示视频码率-b:a表示音频码率-vcodec or -c:v表示视频编码器,copy表示直接copy原始视频流-acodec or -c:a表示音频编码器,copy表示直接copy原始音频流
//解码为yuv420pffmpeg -i output.h264 [-pix_fmt yuv420p] output.yuv//解码为rgb24ffmpeg -i output.h264 [-pix_fmt rgb24] output.yuv
-pix_fmt指定解码的格式,默认为yuv420p。
ffmpeg -s 1920x1080 -pix_fmt rgb24 -i origin.rgb -s 1920x1080 -pix_fmt yuv420p origin.yuv
通过FFmpeg可以进行RGB和YUV、YUV和YUV等格式的转换。
//截取一定时间内的视频帧ffmpeg -s 1920x1080 -pix_fmt yuv420p -i origin-500-libyuv.yuv -ss 5 -t 10 out.yuv//截取指定的帧数ffmpeg -s 1920x1080 -pix_fmt yuv420p -i origin.yuv -ss 5 -vframes 100 out.yuv//截取某一帧,保存成图片ffmpeg -s 1920x1080 -pix_fmt yuv420p -i origin.yuv -ss 5 -vframes 1 out.jpg//把视频帧,拆分成图片ffmpeg -s 1920x1080 -pix_fmt yuv420p -i origin.yuv %04d.jpg//从第10秒开始,以每秒截取1张图片的速度,截取5秒时长的图片ffmpeg -i origin.mp4 -r 1 -ss 00:00:10 -t 00:00:05 images%04d.jpg
-ss表示开始时间,-t表示需要截取的时长,-r表示fps,-vframes表示截取的帧数
//把1920*1080的YUV转成到1280*720的YUVffmpeg -s:v 1920x1080 -i origin.yuv -vf scale=1280:720 -c:v rawvideo -pix_fmt yuv420p output.yuv
ffplay -i leon.rgb -pixel_format rgb24 -video_size 720x1280
typedef struct AVStream {/** stream index in AVFormatContext */int index;} AVStream;
enum AVMediaType {AVMEDIA_TYPE_UNKNOWN = -1,AVMEDIA_TYPE_VIDEO, // 视频流AVMEDIA_TYPE_AUDIO, // 音频流AVMEDIA_TYPE_DATA,AVMEDIA_TYPE_SUBTITLE, // 字幕流AVMEDIA_TYPE_ATTACHMENT,AVMEDIA_TYPE_NB};typedef struct AVCodecParameters {/*** General type of the encoded data.* 流类型*/enum AVMediaType codec_type;/*** Specific type of the encoded data (the codec used).* 流编码类型,H264是AV_CODEC_ID_H264,H265是AV_CODEC_ID_HEVC或者AV_CODEC_ID_H265*/enum AVCodecID codec_id;/*** 有关编解码器的附加信息,可以通过宏:av_fourcc_make_string转换为四字母字符串,例 * 如:avc1、mp4a*/uint32_t codec_tag;} AVCodecParameters;
