FFMpeg中apiexample.c例子分析——编码分析1
2015-06-05 08:57
441 查看
apiexample.c例子教我们如何去利用ffmpeg库中的api函数来自己编写编解码程序。
(1)首先,main函数中一开始会去调用avcodec_init()函数,该函数的作用是初始化libavcodec,而我们在使用avcodec库时,该函数必须被调用。
(2)avcodec_register_all()函数,注册所有的编解码器(codecs),解析器(parsers)以及码流过滤器(bitstream filters)。当然我们也可以使用个别的注册函数来注册我们所要支持的格式。
(3)video_encode_example()函数用于视频编码,由图可知,所有的编码工作都在该函数内完成。
(4)avcodec_find_encoder()函数用于查找一个与codec ID相匹配的已注册的编码器。
(5)avcodec_alloc_context()函数用于分配一个AVCodecContext并设置默认值,如果失败返回NULL,并可用av_free()进行释放。
(6)avcodec_alloc_frame()函数用于分配一个AVFrame并设置默认值,如果失败返回NULL,并可用av_free()进行释放。
(7)设置参数:
设置采样参数,即比特率。
c->bit_rate = 400000;
设置分辨率,必须是2的倍数。
c->width = 352;
c->height = 288;
设置帧率。
c->time_base = (AVRational){1,25}; 该帧率为25,其实timebase = 1/framerate,花括号内分别为分子和分母。
设置GOP大小。
c->gop_size = 10; 该值表示每10帧会插入一个I帧(intra frame)。
设置B帧最大数。
c->max_b_frames = 1; 该值表示在两个非B帧之间,所允许插入的B帧的最大帧数。
设置像素格式。
c->pix_fmt = PIX_FMT_YUV420P; 该值将像素格式设置为YUV420P。
(8)avcodec_open()函数用给定的AVCodec来初始化AVCodecContext。
(9)接着是打开文件,f = fopen( filename, “wb” );
相关文章推荐
- Android Manifest 用法
- Managed Media Aggregation using Rtsp and Rtp
- 一个小型js框架myJSFrame附API使用帮助
- 详细分析交换机、路由器、集线器的区别和联系
- 批处理的api WMIC学习体会有感第1/2页
- 批处理 API实现文件下载的代码第1/2页
- Lua教程(十七):C API简介
- 强制删除工具 xdelbox xdelbox1.5正式版下载
- 揪出交换机端口背后“凶手”导致网速太慢
- 电脑重启后突然检测不到硬盘的原因分析与解决办法
- C#中设计、使用Fluent API
- Google官方支持的NodeJS访问API,提供后台登录授权
- PQ分区出错! 巧用Ghost急速补救的绝妙办法
- 深入C++中API的问题详解
- 使用WindowsAPI实现播放PCM音频的方法
- 40余种刻录盘片详细对照分析介绍第1/2页
- 利用Ffmpeg获得flv视频缩略图和视频时间的代码
- fullCalendar中文API官方文档
- 详解ASP.NET WEB API 之属性路由
- jquery与google map api结合使用 控件,监听器