最近一段时间在研究传屏低延迟传输相关的一些东西。本来想使用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中,

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

gstreamer让playbin能够播放rtp over udp流数据的更多相关文章

  1. 课堂/会议同屏教学解决方案之RTSP/RTP over UDP组播解决方案

    问题 在之前的博客<EasyIPCamera实现Windows PC桌面.安卓Android桌面同屏直播,助力无纸化会议系统>我们描述了一套基于EasyIPCamera的同屏功能,但是这个 ...

  2. (转)VLC播放RTP打包发送的.264文件

    VLC播放RTP打包发送的.264文件 1,要有一个发送RTP包的264文件的服务器; 具体代码如下: rtp.h #include <WinSock2.h> #pragma commen ...

  3. 多媒体开发之rtp 打包发流---同网段其他机子sdp 播放不了

    (1) (2) (3) -------------author:pkf ------------------time:2015-1-6 后面发现是connection 的server 地址是指定的 导 ...

  4. ffmpeg rtp rtmp udp 推流命令

    推组播 组播地址指的范围是224.0.0.0—239.255.255.255 ffmpeg -re -i chunwan.h264 -vcodec mpeg2video -f mpeg2video u ...

  5. 通过 UDP 发送数据的简单范例

    package j2se.core.net.udp; import java.io.IOException;import java.net.DatagramPacket;import java.net ...

  6. DirectSound播放PCM(可播放实时采集的音频数据)

    前言 该篇整理的原始来源为http://blog.csdn.net/leixiaohua1020/article/details/40540147.非常感谢该博主的无私奉献,写了不少关于不同多媒体库的 ...

  7. Kcptun 是一个非常简单和快速的,基于KCP 协议的UDP 隧道,它可以将TCP 流转换为KCP+UDP 流

    本博客曾经发布了通过 Finalspeed 加速 Shadowsocks 的教程,大家普遍反映能达到一个非常不错的速度.Finalspeed 虽好,就是内存占用稍高,不适合服务器内存本来就小的用户:而 ...

  8. 项目总结22:Java UDP Socket数据的发送和接收

    项目总结22:Java UDP Socket数据的发送和接收 1-先上demo 客户端(发送数据) package com.hs.pretest.udp; import java.io.IOExcep ...

  9. Java使用UDP发送数据到InfluxDB

    最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分 ...

随机推荐

  1. Tooltip(提示框)组件

    一.加载方式 //class加载方式 <a href="http://www.ycku.com" title="这是一个提示信息!" class=&quo ...

  2. C#6.0语法糖

    using System; using static System.Math;//using static,仅仅引入类中的静态方法 namespace _6._0Syntax { class Prog ...

  3. effective_c++条款20,用pass-by-reference-to-const替换pass-by-value

    pass-by-value void f(A a); 1)导致复制是浪费资源 2)多态是导致对象切割 所以我们使用 void f(const A& a) 上面的话针对class,不针对基本类型 ...

  4. windows下配置lamp环境(5)---配置MySQL5.6

    开始配置mysql 1.创建配置文件my.ini   1.进入C:\wamp\MySQL   2.把my-default.ini 另存一份:my.ini   3.开始编辑mysql的配置文件,打开my ...

  5. Repeater绑定数据库

    前台: <table width="> <tr> <td class="tr1"> <asp:Label Text=" ...

  6. C语言初学 if-else语句判别在ASCII值中小于32的可控制符的类型

    #include<stdio.h> main() { char c; printf("输入一个符号\n"); c=getchar(); if(c<32) prin ...

  7. mac下 配置tomcat

    第一步: 1.打开你的终端:然后输入  pico .bash_profile   回车 第二步: 2. 然后添加你tomcat放入的路径的path 编辑完后,control+x   (保存)    继 ...

  8. cygwin编译SDL1.2

    1.下载了一个SDL-1.2.14.tar.gz 2.下载一个cygwin64对SDL-1.2.14.tar.gz解压 tar -zxvf SDL-1.2.14.tar.gz 在网上找的大概是需要需要 ...

  9. 【杭州图铭科技有限公司招募贴】——“JUST DO IT”

    I'm convinced that the only thing that kept me going was that I loved what I did. ——Steve Paul Jobs( ...

  10. (转)Oracle Data Guard配置

    data guard配置的条件1.在主库和从库的所有机器上必须安装同一个版本的Oracle企业版.2.主库必须运行在归档模式下.3.主库和从库的操作系统必须一样(允许版本不同),从库可以使用与主库不同 ...