ffmpeg学习

想基于ffmpeg,做个android平台的播放器,这段时间一直在弄这个。和大家分享一下学习的情况吧!

一、ffmpeg概述

     libavcodec 音视频编码或解码的核心代码

     libavdeivce 操作计算机中常用的音视频捕获或输出设备:ALSA、AUDIO_BEOS、JACK等

     libavfilter 音视频滤波器的开发,宽高比、裁剪、格式化、非格式化、伸缩等

     libavformat 音视频流的格式解析,为libavcodec分析码流提供独立的音频或视频码流源

     libavutil 实用工具库,包括算术运算、字符操作等

     libpostproc 音视频应用的后处理,如图像的去块效应

    libswscale 图像颜色空间或格式转换,如RGB的24、32等于YUV的420等之间的转换

一、初始化流程

     首先自己想了想,如果要我做,怎么做?思路:找到音视频,解码,保存,音视频同步,输出到屏幕等,初步应该是这个思路吧!看了ffmpeg后,清楚大概流程应该为:

     1、完成FFMPEG支持的编解码格式注册av_register_all,avcodec_register_all;

     2、打开本地or网络服务端的多媒体文件av_open_input_file;

     3、分别找音/视频的流索引ID信息av_find_stream_info;

     4、根据ID信息寻找相应的解码器avcodec_find_decoder;

     5、打开解码器avcodec_open;

     6、开辟缓存avcodec_alloc_frame;

     (7、开始对音/视频解码avcodec_decode_video;)

     (7、图象进行 YUV 和 RGB之间的转换img_convert;)

二、openVideo打开视频

     还是想想若是自己做,是个什么思路:要打开视频,即开始解码,再将解码后的音/视频输出显示即可,但是如何做到音视频同步了?思考,但是下载的源码中已经实现了同步,并且封装了,不能查看。

     7、开始对音/视频解码avcodec_decode_video,即initVideo、initAudio;

     8、用surfaceView类将视频显示;

三、startVideo播放视频     

     9、开缓存、读解码后的信息,读完后释放开辟的缓存。

     以上是对播放视频流程的基本了解。

 

    

posted @ 2012-10-17 15:43  little_star  阅读(563)  评论(0编辑  收藏  举报