《An ffmpeg and SDL Tutorial》
1. 在最新的ffmpeg上运行Tutorial需要改很多地方,改来改去的到最后都不知道自己想干什么了。新手嘛就要把精力花在学习知识点上,只要把原理弄明白了,以后不管它API接口怎么变,照样可以搞的定。
所以不用最新的ffmpeg而用老版本的ffmpeg,这样改动少,一边看tutorial一边看代码,最重要的一点是还能调试,这样效率比较高。
2. 这儿选ffmpeg-0.5,看到很多博客上说这个tutorial用的版本是ffmpeg-0.4.8,花了很长时间终于把ffmpeg-0.4.8编过了,发现接口少了很多,像avcodec_decode_audio2、av_q2d都没有,难道是我下错了代码?见鬼了!
ffmpeg-0.5下载地址:
编译系统 ubuntu 12.04
+ gcc 4.6.3
-
sun@ubuntu:~/code/ffmpeg/test$ gcc --version
-
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
-
Copyright (C) 2011 Free Software Foundation, Inc.
-
This is free software; see the source for copying conditions. There is NO
-
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ffmpeg-0.5不用修改任何代码,./configure --prefix=./install && make && make install 就好了。
3. 编译好之后就可以把tutorial上的代码拿来用了,只需要代三个地方
-
a. 修改include
-
< #include <ffmpeg/avcodec.h>
-
< #include <ffmpeg/avformat.h>
-
---
-
> #include <libavcodec/avcodec.h>
-
> #include <libavformat/avformat.h>
-
-
b. 把所有的alloc_picture代为alloc_picture_t
-
315c315
-
< void alloc_picture(void *userdata) {
-
---
-
> void alloc_picture_t(void *userdata) {
-
-
c. 把pstrcpy改为av_strlcpy, 里面的参数要换一下
-
> //pstrcpy(is->filename, sizeof(is->filename), argv[1]);
-
> av_strlcpy(is->filename, argv[1], sizeof(is->filename));
4. ok
阅读(2175) | 评论(0) | 转发(0) |