VLC发送RTP流并保存RTP流

转:http://elkpi.com/topics/vlc-stream-rtp-n-save-ps.html

VLC真是神器,在开发视频处理的时候,从其代码上学到了不少东西,其还提供N多的功能,可以进行开发中对流的调试。当时开发的时候,很经常使用,有些都忘记怎么搞了。那时候笔记记录也少。今天刚好要用到RTP流的保存,所以就先把这段记录一下。其实官网的wiki已经有很详细的配置了。

首先是发送RTP流。发送的话,其实可以直接使用GUI界面进行配置,也不是很难。但是命令更加的容易。命令就一条:

1

vlc -vvv 1.mp4 --sout '#rtp{dst=127.0.0.1,port=5004,ttl=1}'

上面这条命令,就是播放1.mp4的文件,rtp到127.0.0.1的5004端口,在终端,还可以看到对应的SDP信息。

此次播放RTP的话,是基于SDP进行播放的,所以你需要把该SDP的信息保存下来。可以直接拷贝,VLC也支持将SDP进行输出。比如我上面的命令,如果要将SDP输出到/tmp目录下的话。命令则为:

需要注意的一点就是,使用命令输出的时候,当文件播放完了,stream.sdp文件也会跟着消息,所以最好是拷贝一份。

播放的话,其实VLC已经做得足够好了。没有保存流的话。只要执行

这样就可以直接播放了。如果要保存流输出的话,需要的参数是这样的:

比如

其中,muxer支持3种格式,分别是ogg,ps,ts格式。ogg是音频格式,ps也就是MPEG2-PS,而ts则是MPEG2-TS。我保存成本地的文件,使用smplayer播放的话,保存成TS格式会变快,但是VLC播放不会,ps格式的话,则相对较好。由于需要视频,所以就不考虑ogg格式了。一般播放器都支持ts,ps格式。综上,以ps格式为主。

所以如果我需要播放上面的流并保存,就用VLC执行如下的命令:

执行顺序要反一下,也就是先执行播放sdp文件,然后在执行rtp流的发送,这样的话,才能把所有的流都保存下来。

    A+
发布日期:2015年10月19日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: