博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gstreamer让playbin能够播放rtp over udp流数据
阅读量:6227 次
发布时间:2019-06-21

本文共 2002 字,大约阅读时间需要 6 分钟。

最近一段时间在研究传屏低延迟传输相关的一些东西。本来想使用gstreamer来验证下rtp over udp传送h264 nal数据相关

的,结果发现竟然不能用playbin来播放rtp的数据!诚然,这也有其原因,因为rtp需要一些带外数据,这是不能简单通过流

来检查的,然而也没有手段简单传入sdp给playbin,让其正常工作。没有办法,在gstreamer-devel和https://bugzilla.gnome.org

bug管理平台上搜了一圈,有人碰到类似的问题,但是没有完整的解决方案,于是完善了rtpsrc的插件,可以支持类似下面的播放:

gst-launch-1.0 playbin uri="rtp://10.9.44.117:5000?media=video&clock-rate=90000&encoding-name=H264&payload=96&do-retransmission=true&latency-ms=50&rtp-profile=1&rtx-host=192.168.31.141&rtx-port=5006"

 这样子感觉方便了不少,直接可以通过uri 查询参数把配置信息传递给udpsrc ,构造caps参数,对,没错,新插件rtpsrc的作用

就是起一个桥梁作用,本质还是利用udpsrc和rtpbin一起能协同工作,构造后大致的pipeline类似下面这样:

// RTP receiver (example)// receives h264 encoded RTP video on port 5000, RTCP is received on  port 5001.  // the receiver RTCP reports are sent to port 5005//-----------------------RtpSrc-------------//|            .-------.      .----------. |   .---------.   .-------.   .-----------.//| RTP        |udpsrc |      | rtpbin   | |   |h264depay|   |h264dec|   |xvimagesink|//| port=5000  |      src->recv_rtp recv_rtp->sink     src->sink   src->sink         |//|            '-------'      |          | |   '---------'   '-------'   '-----------'//|                           |          | |-------------------------    //|                           |          |     .-------.            |    //|                           |          |     |udpsink|  RTCP      | //|                           |    send_rtcp->sink     | port=5005  |//|            .-------.      |          |     '-------' sync=false |//| RTCP       |udpsrc |      |          |               async=false|//| port=5001  |     src->recv_rtcp      |                          |//|            '-------'      '----------'                          | //------------------------------------------------------------------|

 

代码已经以补丁的形式,提交到了bugzilla,能不能被合并,或者什么时候被合并进主分支,我不太清楚,但是它至少是可以正常工作的,

有这方面需求的同仁,可以移步:https://bugzilla.gnome.org/show_bug.cgi?id=703111 ,去合并进入自己的gstreamer sdk中,

应该能使您的生活更轻松一些。

 

转载于:https://www.cnblogs.com/shakin/p/6142219.html

你可能感兴趣的文章
hdu3364 高斯消元1(开关控制灯,异或解的个数)
查看>>
Python网络编程1:套接字
查看>>
Complete Physics Platformer Kit 学习
查看>>
软件工程---删除重复数组
查看>>
ubuntu16 64 搭建lnmp环境
查看>>
数据结构中的图
查看>>
设计模式:结构型模式总结
查看>>
HDU 1260:Tickets(DP)
查看>>
Codeforces 1080C- Masha and two friends
查看>>
使用CRT定位内存泄漏
查看>>
异常的处理方式
查看>>
JavaScrip 数组/字典/循环
查看>>
C#Question:“XXX”的重载均与“System.Threading.WaitCallback”不匹配。
查看>>
linux service等命令不能使用的解决办法
查看>>
java学习笔记(Core Java)5 继承
查看>>
算法(3)—— 链表习题 完结
查看>>
详谈外部浏览器如何实现复制公众号一键唤起微信添加关注
查看>>
c++ 快速排序
查看>>
Linux下删除命令 硬盘空间查看... 常用命令
查看>>
从客户端中检测到有潜在危险的 Request.Form 值
查看>>