系列索引:FFmpeg入门系列索引
上一篇:FFmpeg入门教程11.02:RTSP/RTP/H264介绍及数据包解析
公司任务基于ROS NVIDIA jetson nano搭建easydarwin+ffmpeg+rtsp推流服务器
根据结果,需要准备(版本随意,但是不能是pre版本):
1 2 3 4 5 x264 ffmpeg node easydarwin go
编译流程为:Ubuntu1604交叉编译全志T7开发板ARM版Easydarwin
前提公司的智能车是小R智能科技的,系统为Ubuntu 18.04 bionic,ros系统为ros melodic desktop搭配NVIDIA jetson nano显卡,安装的系统包为jetson-nano-sd-r32.1-2019-03-18
准备 编译安装 x264下载源代码,解压,然后:
1 2 3 ./configure make -jnsudo make install
会默认安装到/usr/local/lib
中
ffmpeg下载源代码,解压,编译:
1 2 3 ./configure --enable-shared --enable-x264 --enable-gpl make -jnsudo make install
会默认安装到/usr/local/
文件夹中。
刚开始我只有–enable-shared 最后运行时出现错误:“ffmpeg [h264_v4lm2m @ 0x556643f480] Could not find a valid device”,就是因为没有添加–enable-x264导致的,添加x264需要添加–enable-gpl。
go下载arm版linux包 ,并且解压到/usr/local/
文件夹下,设置环境变量(.bashrc或者.zshrc):
1 2 3 export GOROOT=/usr/local/goexport GOPATH=$HOME /goexport PATH=$GOROOT /bin:$GOPATH :/bin:$PATH
GOROOT是go官方软件的位置,GOPATH是go用户的自定义位置(默认用户软件安装位置)
安装软件包:
1 2 3 4 5 go get -u -v github.com/rainycape/dl go get -u -v github.com/kardianos/govendor go get -u -v github.com/penggy/gobuild go get -u -v github.com/Bowery/prompt go get -u -v github.com/common-nighthawk/go-figure
会自动安装到$GOPATH目录下,并且自动编译。
node从官方网站下载arm版的node,版本随意推荐最新的。
然后解压到/usr/local/
文件夹下就可以了,同时设置环境变量/usr/local/bin
、/usr/local/include/
、/usr/local/lib
等等。
注意,不能是pre版本,否则后面会出错。
安装软件包
1 2 3 4 npm i -g @penggy/pack npm i -g cross-dev --save-dev npm i -g rimraf npm i -g apidoc
-g
表示安装到系统目录,需要sudo
。默认安装到当前目录。
easydarwin下载(安装官方说明):
1 2 3 4 5 cd $GOPATH /src/github.commkdir EasyDarwincd EasyDarwin git clone https://github.com/EasyDarwin/EasyDarwin.git --depth=1 EasyDarwincd EasyDarwin
先到web_src
安装依赖,然后编译前端:
1 2 3 4 cd web_src npm icd .. npm run build:www
然后编译软件:
打包:
1 2 npm run build:lin pack tar
测试解压打包后的可执行文件,然后:
第一次执行需要将服务复制到系统服务目录,需要sudo权限。
启动服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 $ sudo sh start.sh [sudo ] password for xrrobot: [EasyDarwin] 2020/04/30 11:48:22 main.go:186: git commit code:8637f73 [EasyDarwin] 2020/04/30 11:48:22 main.go:187: build date :2020-04-30 10:10:08 _____ ____ _ | ____| __ _ ___ _ _ | _ \ __ _ _ __ __ __ (_) _ __ | _| / _` | / __| | | | | | | | | / _` | | '__| \ \ /\ / / | | | ' _ \ | |___ | (_| | \__ \ | |_| | | |_| | | (_| | | | \ V V / | | | | | | |_____| \__,_| |___/ \__, | |____/ \__,_| |_| \_/\_/ |_| |_| |_| |___/ [EasyDarwin] 2020/04/30 11:48:22 main.go:214: EasyDarwin_Service install ... [EasyDarwin] 2020/04/30 11:48:22 main.go:216: Failed to install EasyDarwin_Service: Init already exists: /etc/systemd/system/EasyDarwin_Service.service [EasyDarwin] 2020/04/30 11:48:22 utils.go:234: Press any to exit [EasyDarwin] 2020/04/30 11:48:27 main.go:186: git commit code:8637f73 [EasyDarwin] 2020/04/30 11:48:27 main.go:187: build date :2020-04-30 10:10:08 _____ ____ _ | ____| __ _ ___ _ _ | _ \ __ _ _ __ __ __ (_) _ __ | _| / _` | / __| | | | | | | | | / _` | | '__| \ \ /\ / / | | | ' _ \ | |___ | (_| | \__ \ | |_| | | |_| | | (_| | | | \ V V / | | | | | | |_____| \__,_| |___/ \__, | |____/ \__,_| |_| \_/\_/ |_| |_| |_| |___/ [EasyDarwin] 2020/04/30 11:48:27 main.go:214: EasyDarwin_Service start ... [EasyDarwin] 2020/04/30 11:48:27 main.go:219: EasyDarwin_Service start ok
服务界面,网址:http://localhost:10008
服务器版本信息:
使用FFmpeg推流,插入usb摄像头,linux会生成一个/dev/video0的文件。
1 ffmpeg -re i /dev/video0 -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://localhost/test
推流结果:
easydarwin推流界面:
FFmpeg取流:
十分卡,考虑撤销缓存和使用cuda加速。