在自家电视盒上抓到了运营商的iptv地址,就打算解出来,两个用途,一个是通过网页看电视,一个是进行定时或手动的录像。
其中,流媒体服务方面还是用的srs server;解码编码部分就用ffmpeg。
所使用的是十几年前生产的一台小工控主机,主频在1G以下的那种,安装的centos4还是5,忘了。是32位的,因为当时的cpu架构只支持32位。好处就是静音(没风扇)+相对省电。目前用作电话服务器(PBX)。
在PBX服务器上使用ffmpeg时发现版本是4.4.7,已经是较高版本了,但是没有h264的支持;打算重新编译一个,可是x264每次都编译失败,失败的表现不限于各类文件编译错误及环境错误,如:
·input/lavf.c41:error:expected specifier-qualifier-list before 'AVCodecContex'
·input/lavf.c:265:error:'lavf_hnd_t' has no member named 'lavc'
·filters/video/resize.c:214:error:'AVComponentDescriptor' has no menber
·configure.ac:3:error:Autoconf version 2.68 or higher is required
·endian test failed
为解决以上问题,升级了gcc(非侵入式),升级了autoconfig(这个由于我机器太久,也颇费了些工夫),源码也试图改过,也有一些实在看不明白的问题比如endian test failed之类,所以后来干脆就放弃,开始一个个的尝试旧版本,看有没有合适的。经过很久的尝试,终于找到一个可以在这台机器上正常编译通过的版本:
http://download.videolan.org/x264/snapshots/x264-snapshot-20130818-2245-stable.tar.bz2
使用的配置如下:
./configure --prefix=/root/installer-tmp/new/ffmpeg/build/ --enable-shared --enable-static --disable-asm
直接把编译好的文件存到下一步的ffmpeg的build文件夹了,免得麻烦。
之后从videolan下载的ffmpeg4.4.1,执行后提示:FATAL:kernel too old
看来旧机器还是不能用这个。我实在不知道以前是怎么把ffmpeg4.4.7在这台这么旧的机器上编译出来的。下载了新版本的ffmpeg源码,按以下配置进行安装(先变更一下环境变量):
export PKG_CONFIG_PATH=/root/installer-tmp/new/ffmpeg/build/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/root/installer-tmp/new/ffmpeg/build/ --enable-shared --extra-cflags=-I/root/installer-tmp/new/ffmpeg/build/include --extra-ldflags=-L/root/installer-tmp/new/ffmpeg/build/lib --enable-gpl --enable-libx264
之后就是轻松的make && make install 环节了。这个环节在我这台陈旧的机器上差不多要一天半才能完成。
执行完之后,如果ffmpeg运行报**.so之类的错误的话,就找一下/etc/ld.so.conf文件,看看包含了哪些lib文件夹,然后去找一下ffmpeg缺少的这些库文件有没有在哪些文件夹里。如果没有,说明相应的库安装错误,需要重新装,或者需要重新复制到系统lib文件夹里,或者是链接一下也行。如果有,说明新加入的so文件还没被识别到,需要执行一下ldconfig命令重新识别,就可以了。

标签: none

添加新评论