深入分析FFmpeg之一-打开媒体文件并读取文件头信息
来源:互联网 发布:好像喜欢上一个人知乎 编辑:程序博客网 时间:2024/05/16 03:19
分析了一段时间的ffmpeg源代码,是时候写个笔记做个总结了。所以决定写一系列关于分析FFmpeg架构及API使用的笔记,现在计划涵盖的内容包括从打开一个媒体文件(access)到demux,然后到decode,最后render出来这整个过程,循序渐进,当然也包括转码过程, 其中每个过程我都会尽量仔细分析并对源代码注释,并给出相应的实例代码。希望能够让刚接触ffmpeg的朋友获得一些帮助,因为ffmpeg方面的资料确实很少,自己学习的时候也走了不少弯路。
FFmpeg版本2.1, 我的操作环境是Ubuntu12.04 X64, GCC4.6.1.
ffmpeg是一套功能非常不可思议的开源的多媒体框架,而且开发速度很快,如果感兴趣可以加入到ffmpeg开发的邮件列表,甚至为ffmpeg做出自己的贡献。
首先可以去ffmpeg的官网下载最新版的ffmpeg,我这里的版本是2.1,因为ffmpeg是开源的,依赖于gcc,所以最好在linux下编译和开发,如果实在想用windows,那么也可以在windows上安装cygwin(一个仿linux的环境),不过笔者还是建议在linux下编译和开发。编译和安装都很简单,这里还是废话一下,执行.configure来产生Makefile,然后执行make;makeinstall安装ffmpeg库到系统,之后就可以进行ffmpeg的开发了,当然知识想调用ffmpeg的SDK的话可以不用下载源码,仅仅下载SDK(包括ffmpeg的几个库和相应的include文件).
下面一段代码非常简单,仅仅几行就可以读出媒体文件的信息,这段程序主要是用了ffmpeg中的libavformat库下面先贴出程序的执行效果
#include <libavformat/avformat.h>
//#include <libswscale/swscale.h>
static ShowUseage(const char* p)
{
printf("you must specify an input file as: %s youfile.avi!!!\n", p);
}
int main(int argc, char* argv[])
{
AVFormatContext *pFormatContext = NULL;
if(argc<2)
{
ShowUseage(argv[0]);
return -1;
}
char *filepath = argv[1];
av_register_all();
//pFormatContext = avformat_alloc_context();
if(avformat_open_input(&pFormatContext,filepath,NULL,NULL)!=0) //Open the media file and read the header
{
printf("Can not open the media file you specified!\n");
return -1;
}
printf("****************file information*****************\n");
av_dump_format(pFormatContext,0,filepath,0); //dump input information to the stdio
printf("*************************************************\n");
avformat_close_input(&pFormatContext);
return 0;
}
http://blog.chinaunix.net/uid-26611383-id-3971425.html
- 深入分析FFmpeg之一-打开媒体文件并读取文件头信息
- 深入分析FFmpeg之一-打开媒体文件并读取文件头信息
- 深入分析FFmpeg之一-打开媒体文件并读取文件头信息
- C# 打开文件目录并读取整个目录信息
- ffmpeg学习之点点滴滴——打开文件并获取文件流信息
- ffmpeg初始化文件头信息时
- 头文件无法打开的情况之一
- POI读取Word文件头信息
- 打开文件(读取文件),并实现显示
- 打开文件并读取文件内容
- 读取bmp图片的文件头,与位图信息头
- FFmpeg任意文件读取漏洞分析
- FFmpeg任意文件读取漏洞分析
- FFmpeg任意文件读取漏洞分析
- VC打开bmp文件,读取信息
- 读取并分析wgetrc文件
- 读取并分析wgetrc文件
- C#调用FFMPEG,并异步读取输出信息的代码
- Linux静态库和动态库
- Android Fragment 真正的完全解析(下)
- PHP中的错误处理、异常处理机制
- IOS推送功能的实现(badgeNumber问题)
- Android中判断是否连接到网络
- 深入分析FFmpeg之一-打开媒体文件并读取文件头信息
- web前端不可错过的开发工具–Adobe Brackets(开源、简洁强大的HTML、CSS和JavaScript集成开发环境)
- 社説 20150311 大震災4年 優先度を見極めて復興進めよ
- PSSQL注册码10.0可用
- Android ffmpeg解码
- RSA算法原理与加密解密
- 基础练习 特殊回文数
- Rotate Array
- hibernate 深入理解持久化对象