2022年9月

在自家电视盒上抓到了运营商的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命令重新识别,就可以了。

网络广播地址的计算方法:
1)IP地址与子网掩码进行“与”运算,得到网络地址
2)子网掩码“取反”运算,然后与网络地址进行“或”运算,得到广播地址

如:172.17.24.18/20 ,计算其广播地址
由于该IP的掩码为20个比特位,因此,其掩码地址为:255.255.240.0

                         (11111111.11111111.11110000.00000000)

IP地址的二进制表示为: 10101100.00010001.00011000.00010010
1)IP地址与子网掩码按位“与”运算 结果:10101100.00010001.00010000.00000000 即:172.17.16.0
2)子网掩码按位取反结果: 00000000.00000000.00001111.11111111

与网络地址或运算结果:                    10101100.00010001.00011111.11111111 即:172.17.31.255

————————————————
版权声明:本文为CSDN博主「liaoyuanzi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/heianemo/article/details/8349232