创客神器NanoPi
直播中

gnensis

13年用户 128经验值
擅长:嵌入式技术 控制/MCU
私信 关注
[经验]

【NanoPi2试用体验】-【自己动手做网络摄像机】-02.开源RTSP库live555在NanoPi上测试

   作为一个IPC(IP Camera),其最重要的一个功能就是通过网络来进行视频的实时预览。而这种网络实时又分为两类:一类是局域网环境下的预览,另一类是互联网环境下的网络预览。从技术难度上说局域网环境下的网络预览难度比较小,主要是因为网络环境简单,而且网络比较稳定。   在安防监控领域,厂商们基本都有自己的私有协议来实现网络视频传输。但是也有一个行业的标准ONVIF协议,其主要包括基于Web service的信令控制和基于RTSP协议的视频传输两部分。今天我们就来在NanoPi上测试一下开源的RTSP库live555。
一、准备工作
1.1 下载live555源码
walker@nanopi2:~/opensource$ wget http://www.live555.com/liveMedia/public/live.2016.01.16.tar.gz

converted 'http://www.live555.com/liveMedia/public/live.2016.01.16.tar.gz' (ANSI_X3.4-1968) -> 'http://www.live555.com/liveMedia/public/live.2016.01.16.tar.gz' (UTF-8)
--2016-01-19 22:21:14--  http://www.live555.com/liveMedia/public/live.2016.01.16.tar.gz
Resolving www.live555.com (www.live555.com)... 4.79.217.242
Connecting to www.live555.com (www.live555.com)|4.79.217.242|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 630314 (616K) [application/x-gzip]
Saving to: 'live.2016.01.16.tar.gz'

live.2016.01.16.tar.gz                    100%[=====================================================================================>] 615.54K  35.0KB/s   in 13s

2016-01-19 22:21:27 (48.9 KB/s) - 'live.2016.01.16.tar.gz' saved [630314/630314]


1.2 准备一个H.264的视频文件
wget http://www.live555.com/liveMedia/public/264/slamtv60.264


1.3 准备一个支持RTSP协议的播放器
下载链接:http://get.videolan.org/vlc/2.2.1/win32/vlc-2.2.1-win32.exe
二、编译
2.1 解压
tar xzvf live.2016.01.16.tar.gz
解压后会在当前目录下出现一个live目录
2.2 编译(很简单,直接make)
进入解压出来的live目录后输入以下命令:
./genMakefiles linux
上面这句会生成Makefile
接着输入以下命令来启动编译:
make
由于NanoPi2的性能,这个编译过程持续了2分多钟:
real    2m41.603s
user    2m20.404s
sys     0m16.316s

当然我们可以通过给make 传入-j参数来加速编译(其实是多线程编译),j后面的参数不要超过cpu的核数哦。
这次我传入-j3试一下:
real    1m31.069s
user    3m44.072s
sys     0m27.100s

以上结果显示果然快乐一分多钟

三、测试
3.1 将刚才下载的文件拷贝到live目录下的mediaServer/目录中
walker@nanopi2:~/opensource/live$ cp ../slamtv60.264 mediaServer/
3.2 启动live555MediaServer服务器
walker@nanopi2:~/opensource/live$ cd mediaServer/
walker@nanopi2:~/opensource/live/mediaServer$ ./live555MediaServer
LIVE555 Media Server
        version 0.88 (LIVE555 Streaming Media library version 2016.01.16).
Play streams from this server using the URL
        rtsp://192.168.199.244:8554/
where is a file present in the current directory.
Each file's type is inferred from its name suffix:
        ".264" => a H.264 Video Elementary Stream file
        ".265" => a H.265 Video Elementary Stream file
        ".aac" => an AAC Audio (ADTS format) file
        ".ac3" => an AC-3 Audio file
        ".amr" => an AMR Audio file
        ".dv" => a DV Video file
        ".m4e" => a MPEG-4 Video Elementary Stream file
        ".mkv" => a Matroska audio+video+(optional)subtitles file
        ".mp3" => a MPEG-1 or 2 Audio file
        ".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file
        ".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file
        ".ts" => a MPEG Transport Stream file
                (a ".tsx" index file - if present - provides server 'trick play' support)
        ".vob" => a VOB (MPEG-2 video with AC-3 audio) file
        ".wav" => a WAV Audio file
        ".webm" => a WebM audio(Vorbis)+video(VP8) file
See http://www.live555.com/mediaServer/ for additional documentation.
(We use port 8000 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).)

如果出现了以上的打印,说明服务已经跑起来了。
3.3 用VLC来测试RTSP视频播放
vlc-rtsp.jpg
点击播放按钮,就可以看到RTSP的流媒体播放了。

四、总结
4.1 其实live555支持的文件不止是h.264的原始码流(ES)流文件,大家也可以测试下其他live555支持的文件;
4.2 作为一个优秀的开源RTSP库,live555的源代码是很值得学习的。尤其是那些希望提升自己C++面向对象编程能力的同学们更应该读一读。
4.3 live555的流媒体传输也分两部分:RTSP协议控制传输的信令(要播放的流、开始播放、暂停播放、停止播放等)、RTP协议才是真正的传输视频流的协议、还有个RTCP协议负责视频流传输过程中的流量控制。

回帖(3)

ypw

2016-1-20 17:42:27
所以说好的摄像机呢?
举报

泡芙奶昔

2016-1-20 17:49:53
说好的摄像机呢?
举报

柠檬守护

2016-1-20 23:28:22
期待楼主的后续分享啊
举报

更多回帖

发帖
×
20
完善资料,
赚取积分