FFmpeg学习

FFmpeg介绍

FFmpeg是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流式传输、过滤和播放人类与机器创建的任何内容。它支持最晦涩的古代格式,直至最前沿。无论它们是由某些标准委员会,社区还是公司设计的。它还具有高度可移植性:FFmpeg 在各种构建环境,机器架构和配置下编译,运行和通过测试基础架构 FATE从Linux,Mac OS X,Microsoft Windows,BSD到Solaris等。它包含可供应用程序使用的libavcodec,libavutil,libavformat,libavfilter,libavdevice,libswscale和libswresample。与ffmpeg,ffplay和ffprobe一样,最终用户可以使用它进行转码和播放。

主要的几个函数

  • av_register_all()初始化libavformat库和注册所有编解码库和协议
  • avformat_network_init()初始化网络
  • avformat_alloc_context()创建上下文
  • avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options)打开输入的流并且读取流头
  • avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)读取媒体文件的报文,获取媒体文件信息
  • AVCodec *avcodec_find_decoder(enum AVCodecID id)在注册的所有解码器中查找匹配的解码器
  • av_read_frame(AVFormatContext *s, AVPacket *pkt)此函数返回存储在文件中的内容, 并且不验证解码器有有效的帧。它将将存储在文件中的内容拆分为帧, 并为每个调用返回一个帧。它不会省略有效帧之间的无效数据, 以便为解码器提供解码所需的最大信息。
  • avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, const AVPacket *avpkt)解码视频帧

流媒体播放器流程

FFmpeg工作过程.png

视频解码后的YUV文件通过OpenGL渲染播放画面。

你可能感兴趣的:(FFmpeg学习)