文档介绍:ffmpegSDK开发手册来源:ChinaUnix博客日期:13:02 (共有0条评论)我要评论 FFMpegSDK开发手册FFMpeg中比较重要的函数以及数据结构如下::(1)AVFormatContext(2)AVOutputFormat(3)AVInputFormat(4)ontext(5)AVCodec(6)AVFrame(7)AVPacket(8)AVPicture(9):(1)av_register_all()(2)avcodec_open()(3)avcodec_close()(4)av_open_input_file()(5)av_find_input_format()(6)av_find_stream_info()(7)av_close_input_file():(1)avcodec_find_decoder()(2)avcodec_alloc_frame()(3)avpicture_get_size()(4)avpicture_fill()(5)img_convert()(6)avcodec_alloc_context()(7)avcodec_decode_video()(8)av_free_packet()(9)av_free():(1)avnew_steam()(2)av_read_frame()(3)av_write_frame()(4)dump_format():(1)avpicture_deinterlace()(2)ImgReSampleContext()以下就根据,。在此之前还是先谈一下ffmpeg的编译问题。在linux下的编译比较简单,这里不多说了。在windows下的编译可以参考以下网页:值得一提的是,在使用编译后的sdk进行测试时()编译过程中可能会有以下两个问题:。然而这个头文件在win下和linux下有所不同。具体在win下可以用以下方法解决:/snprintf/,或是vc6的命令行进行编译,inline可能不认。,#ifdef_MSC_VAR#defineinline__inline#endif交待完毕进入正题。:,很多函数都要用到它作为参数。FFmpeg代码中对这个数据结构的注释是:formatI/Ocontext此结构包含了一个视频流的格式内容。其中存有了AVInputFormat(orAVOutputFormat同一时间AVFormatContext内只能存在其中一个),和AVStream、AVPacket这几个重要的数据结构以及一些其他的相关信息,比如title,author,copyright等。还有一些可能在编解码中会用到的信息,诸如:duration,file_size,bit_rate等。。Useage:声明:AVFormatContext*oc;(1)初始化:由于AVFormatConext结构包含许多信息因此初始化过程是分步完成,而且有些变量如果没有值可用,也可不初始化。但是由于一般声明都是用指针因此一个分配内存过程不可少:oc=av_alloc_format_context();(2)结构中的AVInputFormat*(或AVOutputFormat*)是一定要初始化的,基本上这是编译码要使用什么codec的依据所在:oc->oformat=fmt;oroc->iformat=fmt;(3)其中AVOutputFormat*fmt或AVInputFormat*fmt。(AVInputFormatandAVOutputFormat的初始化在后面介绍。:snprintf(oc-filename,sizeof(oc->filename),“%s”,filename);(4)还不是十分清楚有什么作用,估计是先要在输出文件中写一些头信息。在完成以上步骤後,(初始化完毕AVInputFormat*(或AVOutputFormat*)以及AVFormatContext)接下来就是要利用oc初始化本节开始讲到的AVFormatContext中的第二个重要结构。AVStream(假设已经有了