VLC contrib 之ffmpeg 编译


VLC 默认支持RTMP,trace code 发现协议相关code 竟然在libavformat 里面。。囧。。只好再build ffmpeg了。

VLC 官方又提到,build contrib 的方法如下:

% cd contrib
% mkdir native
% cd native
% ../bootstrap
% make
但是这个方法会把所有第三方库都尝试download 下来build,很容易遇到build不过,很多也需要。

尝试多次之后,发现make list 可以list 出来那些package 设定成需要build的。

而手动指定的方法是:make PKGS_ENABLE=ffmpeg !!!

如果遇到什么小问题,缺什么的,直接修即可。

再回到vlc 来build,最后clewn 来gdb,发现断点可以停下来了~~


clewn 调试:

% clewn
(gdb)  file vlc
(gdb)  break main
(gdb)  break rtmp_open
Function "rtmp_open" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
(gdb)  run
(gdb) ...



以下废了:

ffmpeg 最难办的就是怕版本跟现有的不match,导致跑不通。。


还记得compile vlc 时候这句否?

$ sudo apt-get build-dep vlc
现在反其道而行之,确定libavformat 的版本:

$ apt-cache showsrc PACKAGE_NAME   | grep libavformat
> libavcodec-dev (>= 4:0.6), libavformat-dev (>= 4:0.6)

可坑的是4: 0.6 又是啥版本!!跟官网的完全对不上呀! 还是>= 呀!

虽然google 到这4:0.6 的code, 但是压根不敢用呀!  https://launchpad.net/ubuntu/+source/ffmpeg/4:0.6.1-5ubuntu2

因为官网最新release tarball 已经长这样了,莫非就是56: 15.102 ?

libavutil      54. 15.100
libavcodec     56. 13.100
libavformat    56. 15.102
libavdevice    56.  3.100
libavfilter     5.  2.103
libavresample   2.  1.  0
libswscale      3.  1.101
libswresample   1.  1.100
libpostproc    53.  3.100

好吧,考虑是这里限制是>= 4:0.6,

然后别忘了昨天的痛: configure configure: error: libavcodec versions 56 and later are not supported yet!!

那我拿release 55 吧。。

http://www.ffmpeg.org/download.html#get-sources

抓下来解压后,只build static lib cmd 是? 

$ ./configure --prefix=PREFIX  --enable-static --disable-shared  --disable-yasm
$ make  install-libs install-headers
过了!!好激动

 

赶紧回VLC:

$ make  clean; make 2>&1 | tee make.log 





你可能感兴趣的:(VLC)