树莓派上实现流媒体

  • Post author:
  • Post category:其他


最近做了一个在树莓派上实现流媒体的小项目,本打算使用vlc做的,但是结果发现在vlc上实现流媒体造成的延迟太大,目测大于一秒。于是通过查询资料,共发现了三种方法:

1.通过vlc,

我在这里只说明一下rtp的命令行方式。

在发送端:

raspivid -o – -t 0 -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin –sout ‘#rtp{dst=192.168.1.66,port=8080,ttl=1}’ :demux=h264

也就是朝192.168.1.66的8080端口发送视频数据

这时你在下面的输出中会看到一段如下面的语句:

v=0

o=- 15779103922725042126 15779103922725042126 IN IP4 raspberrypi

s=Unnamed

i=N/A

c=IN IP4 192.168.1.66

t=0 0

a=tool:vlc 2.2.1

a=recvonly

a=type:broadcast

a=charset:UTF-8

m=video 8080 RTP/AVP 96

b=RR:0

a=rtpmap:96 H264/90000

a=fmtp:96 packetization-mode=1

把它复制下来,然后保存在一个文件中,同时以.sdp后缀的形式命名。

接收端:

在接收端把上面的文件用VLC打开即可。这个sdp文件其实就是对接收端的配置文件。

如果延迟大的话,可以在接收端把网络延迟修改到100–300ms之间,这样不会对视频质量有太大影响。经过我的实验,最小延迟貌似也在1s以上,所以我放弃了这种方法。

2.通过netcat

3.通过gstreamer

其中vlc的延迟最大。

我使用了netcat方法。

发送端:

raspivid -o – -t 0 -w 640 -h 360 -fps 25|nc 192.168.1.66 8080

即向192.168.1.66的8080端口发送采集到的视频数据,raspivid采集到的视频数据会通过h264压缩,

播放端:

nc -l 8080 | mplayer

即监听8080端口,并且使用mplayer 播放。



版权声明:本文为chiliaolm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。