srs是Simple Flash media Server的简写。我们用srs+nginx来搭建流服。实现点播、存储和回放功能。安装布署在云服务器上面。
rtmppush是运行在嵌入式ipc(hisi-hi3518E + ov9712)上面的。但也放在docker image中了,方便编译。


docker是linux上面的虚拟机,编译及安装环境都在docker image中。
加载docker image:
rtmpipc_centos7.tar是开发版本,包括srs和nginx及第三方lib的源代码。docker load <rtmpipc_centos7.tar就得到docker image.
建立container的方法(研发,compile)
docker run --name rtmpipc -p 10080:10080 -p 11935:11935 -p 8080:8080 -p 1935:1935 -v /home:/mnt -ti 8ebe5aff0b4b /bin/bash


编译srs:
cd /home/LiveSvr/trunk
./ build.x86.nginx
编译nginx:
cd /home/VodSvr/hlssvr
./build.sh
make
编译ffmpeg:
cd /home/VodSvr/third/ffmpeg-2.6.3
./build.x86.x264 
编译srs-librtmp和rtmppush:
cd cd /home/rtmpipc/
source set_hisi
cd /home/rtmpipc/rtmppush
make


布署的时候,建议换一个docer image,因为开发用的docker image比较大。
[root@2e50c4e4788f home]# cat livevod_run.sh 
#playback server
/home/VodSvr/bin/bin/hlssvr -p /home/VodSvr/bin/www/ //这个是回放的进程!
#liveview & recording server
cd /home/LiveSvr/bin

./srs -c srs.conf.vod //这个是启动直播和录像进程!



问题1:看不到流!!
解决办法:
首先,启动/home/livevod_run.sh  //这个脚本会启动两个进程:srs和hlssvr。
然后,模拟向server推流。
/home/LiveSvr/bin/push.sh /home/VodSvr/bin/media/44d1.mp4 //这是用文件流化来模拟推流到server(FMS),以诊断问题。
现在开始试看流:
web进入http://110.185.210.89:10080 //选中jwplayer播放器
播放hls: http://110.185.210.89:10080/live/main.m3u8
播放rtmp: rtmp://110.185.210.89:1935/live/main
NOTE:1. 观看时,推流不能中断。2.vi /home/LiveSvr/bin/push.sh看一下,修改其中的ip你的服务器ip。


问题2:FMS可以用了,但从IPC推流仍然有问题,如何办?
进入:/home/rtmpipc/rtmppush/srs-librtmp/这个下面,可以生成srs-push,这是一个将录好的demo file push到FMS的程序。
用法:./srs-push 720p.h264.raw rtmp://127.0.0.1:1935/live/main
观看方法同问题2。
如果这样可以看,就说明问题出在推流环节(采集+push)。server(FMS)没有问题。


问题3:FMS可以到采集并push过来的流了,但播放不正确!
仔细检查,发现一个问题:
dts=pts=stStream.pstPack[0].u64PTS/1000; //unit is ms, comments by freeman
因为海思平台u64PTS的单位是us。而我们的PTS单位是ms。



Logo

更多推荐