FFmpeg tutorial0-4 总结

实验一总结:

      -------处理视频文件的过程

1.要打开一个音视频文件,第一步,我们要初始化媒体库,对于ffmpeg我们将avcodec.havformat.h包含进来就行了,这两个文件包含了库所支持的所有文件格式和编解码器,通过调用av_register_all() 将这些信息进行注册,这样就可以将相应的文件格式对应到合适的解码器。

1.第二步,打开文件,使用av_open_input_fileAVFormatContext **ptr, const char *filename, AVInputFormat *fmt, int buf_size, AVFormatParameters *ap),利用第二个参数filename打开文件,将文件头和关于文件格式的存储信息保存到ptr指向AVFormateContext结构体中,fmt:不为NULL时则强制规定文件的格式,buf_size:可选的缓冲区大小,ap用于规定解码时的特定参数(时基、采样率、通道数、宽、高、像素格式等),后三个参数如果不指定值,则libavformat会自动检测。

2.第三步,上个函数只是获得了文件的头信息,下面我们要知道文件stream信息,使用av_find_stream_info(),它会寻找stream的不太明显的信息,并将这些信息填充到pFormatCtxstreams域中,这对没有文件头的MPEG文件是很有用的。到此文件的相关信息都已得到,然后会调用dump_format(pFormatCtx, 0, argv[1], 0)将这些信息进行输出,以确定正确性。

3.第四步,上一步中存储在streams域中的是一个指针数组(AVStream类型),nb_streams是文件中streams的个数,然后找到所有的视频stream,并获得该视频stream的编解码器信息,即编解码器的上下文(codec contextpCodecCtx(AVCodecContext类型)(帧速率、采样率、通道数等);

4.这一步我们要找到相应的编解码器,使用avcodec_find_decoder (enum CodecID id ),它利用上一步编解码器上下文pCodecCtx的到的编解码器的id找到相应的编解码器,使用avcodec_openAVCodecContext *, AVCodec *)使用找到编解码器初始化pCodecCtx

5.下一步是分配存储帧的物理空间,首先使用avcodec_alloc_

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值