使用vlc-2.21的rtsp点播功能

在学习流媒体播放的时候,是利用vlc-2.2.1做为调试工具的。由于需要对ts流进行rtsp方式点播,在进行rtsp的C/S两端配置时出现了种种问题,经过一番探索解决问题,发现使用命令行的方式比界面方式方便很多,配置的复杂度集中在服务端,客户端则很简单,界面或命令行方式皆可。

1、vlc -vvv --extraintf=logger test.ts --sout "#duplicate{dst=rtp{sdp=rtsp://:554/test.sdp}}" --loop

这是最初的配置,结果在客户端只有声音没有图像。

2、vlc -vvv --extraintf=logger test.mp4 --sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=rtp{sdp=rtsp://:554/test.sdp}}" --loop

这种方式是从网上查询到的,客户端可以正常播放。从配置看是存在一个转码过程的,试用的文件是h263编码格式,换成一个flv文件仍然只有声音出来。

3、vlc -vvv --extraintf=logger test.ts --sout "#duplicate{dst=rtp{mux=ts{pid-video=100,pid-pmt=1000},sdp=rtsp://:554/test.sdp}}" --loop

这个配置的mux部分是从网上http方式ts流推送配置找到的灵感,图像终于出来了。但是客户端存在比较严重的马赛克现象,原因不明。

4、vlc -vvv --extraintf=logger test.mp4 --sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:duplicate{dst=rtp{mux=ts{pid-video=100,pid-pmt=1000},sdp=rtsp://:554/test.sdp}}" --loop

这个实际是根据(3)对(2) 进行的修改。

总结:

点播涉及到sdp的payload的格式,考虑到源数据的多样性,在进行推送的时候目前看来如果不配置mux则按H264类型生成sdp。

(1)之所以无图像是因为由于没有指定mux信息,sdp中生成了错误的H264类型,而对于ts流应该是MP2T类型;

(2)由于对原数据转换成了H264,因此尽管未指定mux信息仍能正常显示;

(3)由于指定了mux信息,sdp生成了正确的MP2T类型;

(4)和(2)的区别就在于传输的是ts流而不是H264;

修正:

关于mux的理解存在偏差,通过wireshark抓包分析, (1)是将ts文件demux后发送其H264数据,因此sdp中信息是对的,(3)是将ts文件demux后再mux进行发送,由于此ts文件中的H264是设备的硬codec生成,基本可以确定不是H264编码格式就是ts封装格式引起(1)(3)的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值