[TI TDA4 J721E]基于TDA4平台 FFmpeg / X264 的ARM平台移植

        大家好,首先感谢阅读,如果您也对TDA4相关的开发感兴趣,可以私信联系博主,我们这边有个学习交流群,可以入群和大家一起交流学习。
        也可以加博主WX :AIR_12 我会拉你入群。保持开源精神,共同分享、进步!

         创建了开源的Demo演示案例库,后续会把Demo代码放到这个Gitee库里:

TDA4/TI TDA4https://gitee.com/tda4/ti-tda4        欢迎大家加入,一起维护这个开源库,给更多的朋友提供帮助。


由于需要使用TDA4完成一个推流的工作,在查找各种资料以后,决定移植ffmpeg,进行rtmp的推流工作。下面开始演示移植过程:


一、下载源码

1、X264源码(总览:http://download.videolan.org/pub/videolan/x264/snapshots/

博主使用源码版本:

http://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20191217-2245.tar.bz2

2、ffmpeg源码(总览:Index of /releases

博主使用源码版本:http://ffmpeg.org/releases/ffmpeg-4.4.1.tar.bz2


二、准备工作

将两个文件拷贝到TDA4的开发板上,使用开发板本身的gcc编译器进行编译,可以省去使用交叉编译链进行编译的步骤,比较方便!(实际上是移植了很久,没搞定,编译总是报错,无奈……)

在开发板/home/root/ 目录下新建一个文件夹,命名为ffmpeg
进入ffmpeg文件夹,通过scp将两个下载好的文件拷贝到开发板上来。
(开发板可以联网,关于联网,请查看这篇博客!

[TI TDA4 J721E]开发板网络调试功能及开机自动配置网络_AIRKernel的博客-优快云博客

mkdir ~/ffmpeg
cd ~/ffmpeg
scp ubuntu@192.168.1.100:/home/ubuntu/x264-snapshot-20191217-2245.tar.bz2 ffmpeg-4.4.1.tar.bz2 ~ffmpeg

两个文件要放在同一个目录下进行解压!!!
因为ffmpeg配置的时候,需要使用到x264生成的库(路径!)

解压两个源码

tar -vxf x264-snapshot-20191217-2245.tar.bz2
tar -vxf ffmpeg-4.4.1.tar.bz2

三、x264配置、编译和安装

进入x264的源码文件夹,分别执行以下命令

cd ./x264-snapshot-20191217-2245
./configure --host=arm-linux-gnueabihf --prefix=$PWD/tmp --enable-shared --disable-asm
make -j16 && make install

四、ffmpeg配置、编译和安装

注意!!
编译ffmpeg之前,需要将系统时间设置为当前的时间时间,因为编译会使用到系统时间。
时间格式:月、日、年 时、分、秒
例:date -s "11/20/2021 10:15:05"

进入ffmpeg的源码文件夹,分别执行以下指令

最后一个编译的过程时间很久,请耐心等待!不要着急!

cd ./ffmpeg-4.4.1

./configure --enable-shared --enable-pic --disable-static --enable-gpl --enable-nonfree --enable-pthreads --enable-ffmpeg --disable-ffplay --enable-swscale --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-stripping --enable-libx264 --extra-cflags=-I$PWD/../x264-snapshot-20191217-2245/tmp/include --extra-ldflags=-L$PWD/../x264-snapshot-20191217-2245/tmp/lib

make -j16 && make install

这一步时间很长……很长……(可能有40分钟左右吧!!)


五、示例

1、流推送:(将RTSP流推送到RTMP服务器)

ffmpeg -i "rtsp://admin:12345678@192.168.8.154:554/stream2" -an -c:v copy -f flv rtmp://192.168.1.1:554/mystream

2、RTSP流保存成.avi(RTSP流来自局域网内部网络摄像头)

ffmpeg -i rtsp://admin:12345678@192.168.8.154:554/stream2 -vcodec copy /home/root/myout.avi

3、USB摄像头流获取并保存成.avi:

ffmpeg -f video4linux2 -s 640x480 -i /dev/video1 /home/root/test.avi

4、使用ffmpeg RTMP推流USB摄像头

测试成功推流的指令代码:(注意设备名,我这里是video1)

ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video1 -f flv -y rtmp://myserver.cn/MINILIVE/mystream

PS:我在实际测试阿里云给的指令的时候出错了,不知道大家能不能成功。

Linux下用FFMPEG采集usb摄像头到RTMP-阿里云开发者社区

ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 -i /dev/video1 -f alsa -i hw:1 -ab 16 -ar 22050 -ac 1 -f mp3 -f flv rtmp://127.0.0.1/rtmpsvr/rtmp1

大家如果测试这一条,有比较好的解决方法,也请联系博主,我会更新过来!

测试结束!


【声明】
【欢迎转载转发,请注明出处。原创比较辛苦,请尊重原创,祝大家学习愉快!】
【博主专注嵌入式开发,具有多年嵌入式软、硬件开发经验,欢迎大家学习交流!】
【如有嵌入式相关项目需求,欢迎私信】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值