FFmpeg浅尝辄止(一)——工欲善其事,必先利其器
2014-04-02 21:56
344 查看
好久没更新blog了,最近一直在看ffmpeg方面的资料,也是应急,学的也是皮毛。我只是把我学习的一些弯路跟大家分享一下,希望能对大家有些许帮助,如果哪里说的不对,还请大神指点啊。
首先,当然还是开发工具的选择,我去ffmpeg的官网看了一下,吓死人,竟然都更新到0.11.1,真是版本更新的快啊,我看网上广泛使用的都是6.0以下的版本,即使我们最爱的OpenCV也是用FFmpeg0.7.x进行的开发。于是去http://ffmpeg.org/看了一下。n多的下载链接让我凌乱了,下载下来也发现是n多源代码,泪奔啊。我只是想用用其中的dll和lib开发一下而已,他们藏哪去了,还好我找到了组织,在一个中文开发网站http://www.ffmpeg.com.cn,我找到了我想要的利器——FFmpeg
SDK。现在这个SDK的版本做到了3.2,对应的FFmpeg版本是0.4.9,虽然有些古老,但我还是忍忍用了吧。说白了SDK其实就是几个lib,几个dll,几个对应的头文件,特别是有个FFmpeg SDK 开发手册,可以读读。
这个SDK的安装也比较容易,我想对于配置过OpenCV的大虾们肯定不在话下。也就是把lib和头文件添加到vs开发环境的目录里,还有把dll所在的路径添加到系统的环境变量path中。
配置好了,感觉自己还是不太会用,网上关于FFmpeg的资料都没有很系统的,估计跟FFmpeg版本更新的太快也有关。只好自己搜集了一些。
首先,关于编码解码,大家普遍推荐的是直接看ffmpeg.c,关于播放器,看ffplay.c。当然,看这两个文件完全是高端选手,因为它们实在是太大了。。。
其次,我这里推荐http://dranger.com/ffmpeg/。网站的开头就提醒大家,他这个教程有些过时,但我感觉里面的内容对于入门级选手和轻量级的ffmpeg开发是很不错的。
这里还要提一点,如果想实现视频播放,必须得和硬件打交道了,大多数的方案是结合SDL进行的开发,关于SDL,有百度百科哦,亲,我就不多介绍了。我这里推荐的学习SDL的链接,http://lazyfoo.net/SDL_tutorials/index.php。
最后还要介绍我的一点心得,因为我源文件是cpp文件,但是FFmpeg是c风格的代码,所以在头文件的包含时要使用extern “C”,声明为c编译链接方式。例如:
[cpp] view
plaincopy
extern "C"
{
#include <libavcodec\avcodec.h>
#include <libavformat\avformat.h>
#include <libswscale\swscale.h>
};
还有一点就是如果要添加stdio.h等其他头文件的话,一定要放在上述extern “C”代码的前面,不然也会报错。让人很烦恼。
最后祝大家开发的愉快,见笑啦
首先,当然还是开发工具的选择,我去ffmpeg的官网看了一下,吓死人,竟然都更新到0.11.1,真是版本更新的快啊,我看网上广泛使用的都是6.0以下的版本,即使我们最爱的OpenCV也是用FFmpeg0.7.x进行的开发。于是去http://ffmpeg.org/看了一下。n多的下载链接让我凌乱了,下载下来也发现是n多源代码,泪奔啊。我只是想用用其中的dll和lib开发一下而已,他们藏哪去了,还好我找到了组织,在一个中文开发网站http://www.ffmpeg.com.cn,我找到了我想要的利器——FFmpeg
SDK。现在这个SDK的版本做到了3.2,对应的FFmpeg版本是0.4.9,虽然有些古老,但我还是忍忍用了吧。说白了SDK其实就是几个lib,几个dll,几个对应的头文件,特别是有个FFmpeg SDK 开发手册,可以读读。
这个SDK的安装也比较容易,我想对于配置过OpenCV的大虾们肯定不在话下。也就是把lib和头文件添加到vs开发环境的目录里,还有把dll所在的路径添加到系统的环境变量path中。
配置好了,感觉自己还是不太会用,网上关于FFmpeg的资料都没有很系统的,估计跟FFmpeg版本更新的太快也有关。只好自己搜集了一些。
首先,关于编码解码,大家普遍推荐的是直接看ffmpeg.c,关于播放器,看ffplay.c。当然,看这两个文件完全是高端选手,因为它们实在是太大了。。。
其次,我这里推荐http://dranger.com/ffmpeg/。网站的开头就提醒大家,他这个教程有些过时,但我感觉里面的内容对于入门级选手和轻量级的ffmpeg开发是很不错的。
这里还要提一点,如果想实现视频播放,必须得和硬件打交道了,大多数的方案是结合SDL进行的开发,关于SDL,有百度百科哦,亲,我就不多介绍了。我这里推荐的学习SDL的链接,http://lazyfoo.net/SDL_tutorials/index.php。
最后还要介绍我的一点心得,因为我源文件是cpp文件,但是FFmpeg是c风格的代码,所以在头文件的包含时要使用extern “C”,声明为c编译链接方式。例如:
[cpp] view
plaincopy
extern "C"
{
#include <libavcodec\avcodec.h>
#include <libavformat\avformat.h>
#include <libswscale\swscale.h>
};
还有一点就是如果要添加stdio.h等其他头文件的话,一定要放在上述extern “C”代码的前面,不然也会报错。让人很烦恼。
最后祝大家开发的愉快,见笑啦
相关文章推荐
- FFmpeg浅尝辄止(一)——工欲善其事,必先利其器
- FFmpeg浅尝辄止(一)——工欲善其事,必先利其器
- FFmpeg浅尝辄止(一)
- 0.1工欲善其事,必先利其器--GCC以及MINGW zz
- 工欲善其事,必先利其器——图文并茂详解VisualStudio使用技巧
- 工欲善其事, 必先利其器
- 工欲善其事,必先利其器 之 VS2013全攻略(安装,技巧,快捷键,插件)!
- Learning Android 第1章 - 工欲善其事,必先利其器
- 工欲善其事,必先利其器
- 工欲善其事,必先利其器之windows快捷键组合
- ✈工欲善其事,必先利其器✔
- 工欲善其事,必先利其器----一些javascript的数据结构和工具类
- 工欲善其事,必先利其器,php的菜鸟们,这些工具你选对了吗?
- 基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器
- 工欲善其事,必先利其器.
- 工欲善其事,必先利其器---IDE使用
- 工欲善其事,必先利其器
- 工欲善其事,必先利其器——图文并茂详解VisualStudio使用技巧
- 工欲善其事,必先利其器 之 WPF篇: 随着开发轨迹来看高效WPF开发的工具和技巧