标签: rtp

如何在HTML5中流式传输实时视频?

我正在寻找一种方法来播放从网络摄像头拍摄的实时视频或根植于PC的摄像头.广播应该使用标签显示在HTML5页面中(我认为支持rtp和rtsp).

查看流的用户不必安装任何插件或视频播放器,如QuickTime.

我需要视频为mp4格式,例如:rtsp://www.mywebsite/streaming/video.mp4

这将是我作为html 5视频标签的src放置的链接.

所以我想知道是否可能,我有什么选择做这些事情.

streaming html5 mp4 rtp rtsp

15
推荐指数
1
解决办法
3万
查看次数

如何在iOS 8中将AVSampleBufferDisplayLayer用于带有GStreamer的RTP H264 Streams?

在注意到iOS 8中的程序员可以使用HW-H264-Decoder之后,我想立即使用它.来自WWDC 2014的"直接访问视频编码和解码"有一个很好的介绍.你可以看看这里.

基于案例1,我开始开发一个应用程序,应该能够从GStreamer获取H264-RTP-UDP-Stream,将其下载到'appsink'元素中,以便直接访问NAL单元并执行转换为创建CMSampleBuffers,然后我的AVSampleBufferDisplayLayer可以显示.

有趣的一段代码完成以下所有操作:

//
//  GStreamerBackend.m
// 

#import "GStreamerBackend.h"

NSString * const naluTypesStrings[] = {
    @"Unspecified (non-VCL)",
    @"Coded slice of a non-IDR picture (VCL)",
    @"Coded slice data partition A (VCL)",
    @"Coded slice data partition B (VCL)",
    @"Coded slice data partition C (VCL)",
    @"Coded slice of an IDR picture (VCL)",
    @"Supplemental enhancement information (SEI) (non-VCL)",
    @"Sequence parameter set (non-VCL)",
    @"Picture parameter set (non-VCL)",
    @"Access unit delimiter (non-VCL)",
    @"End of sequence (non-VCL)",
    @"End of stream (non-VCL)", …
Run Code Online (Sandbox Code Playgroud)

rtp gstreamer h.264 ios ios8

14
推荐指数
1
解决办法
5721
查看次数

HTML5视频元素对实时流媒体有什么支持?

HTML5视频元素是否支持非基于HTTP(HLS,SmoothStreaming等)的实时流协议?

它是否支持RTP/RTSP流媒体协议?它是否支持RT M P?是否有特定的浏览器支持或不支持它?

video rtp video-streaming html5-video

14
推荐指数
1
解决办法
4万
查看次数

H.264 over RTP - 识别SPS和PPS帧

我有一个来自IP摄像机的原始H.264流,包含在RTP帧中.我想将原始H.264数据放入文件中,以便我可以将其转换为ffmpeg.

因此,当我想将数据写入我的原始H.264文件时,我发现它必须如下所示:

00 00 01 [SPS] 
00 00 01 [PPS]
00 00 01 [NALByte]
[PAYLOAD RTP Frame 1]     // Payload always without the first 2 Bytes -> NAL
[PAYLOAD RTP Frame 2]
[... until PAYLOAD Frame with Mark Bit received]  // From here its a new Video Frame
00 00 01 [NAL BYTE]
[PAYLOAD RTP Frame 1]
....
Run Code Online (Sandbox Code Playgroud)

所以我得到的SPSPPSSession Description Protocol我的前面的RTSP通信.此外,相机在开始使用视频流之前发送SPS和输入PPS两个单独的消息.

所以我按此顺序捕获消息:

1. Preceding RTSP Communication …
Run Code Online (Sandbox Code Playgroud)

c++ rtp rtsp h.264

13
推荐指数
2
解决办法
3万
查看次数

流式RTP/RTSP:同步/时间戳问题

我在通过RTSP传输H.264视频时遇到了一些麻烦.目标是将摄像机图像直播到RTSP客户端(理想情况下是最终的浏览器插件).到目前为止,这个问题一直很顺利,除了一个问题:视频会在启动时滞后,每隔几秒就会断断续续,并且延迟时间约为4秒.这是不好的.

我们的设置是使用x264(w/zerolatency和ultrafast)进行编码,并使用ffmpeg 0.6.5的libavformat打包到RTSP/RTP中.为了测试,我在连接到RTSP服务器时接收带有gst-launch的GStreamer管道的流.但是,当我只使用RTP从另一个GStreamer实例直接流式传输时,我已经能够重现相同的问题.

发送机:

gst-launch videotestsrc ! x264enc tune=zerolatency ! rtph264pay ! udpsink host=10.89.6.3
Run Code Online (Sandbox Code Playgroud)

收货机:

gst-launch udpsrc ! application/x-rtp,payload=96 ! rtph264depay ! decodebin ! xvimagesink
Run Code Online (Sandbox Code Playgroud)

您也可以在同一台计算机上运行这两者,只需将主机更改为127.0.0.1即可.在接收端,您应该注意到口吃和通常效果不佳的视频,以及控制台上的重复警告:

WARNING: from element /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: A lot of buffers are being dropped.
Additional debug info:
gstbasesink.c(2875): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
There may be a timestamping problem, or this computer is too slow.
Run Code Online (Sandbox Code Playgroud)

我在互联网上看到的一个常见建议的"修复"是sync=false与xvimagesink 一起使用:

gst-launch udpsrc ! application/x-rtp,payload=96 ! rtph264depay ! decodebin ! xvimagesink sync=false
Run Code Online (Sandbox Code Playgroud)

即使使用我们的相机软件进行测试,视频也会以接近零的延迟播放.这对于测试非常有用,但对于部署并不是很有用,因为它不适用于Totem,VLC或其浏览器插件嵌入.

我想尝试从源头解决问题; 我怀疑x264或者RTP有效载荷在H.264流上缺少某种时间戳信息.有什么办法来修改 GST管道,这样我就不会需要使用 …

video streaming rtp gstreamer h.264

13
推荐指数
2
解决办法
2万
查看次数

WebRTC:通道、轨道和流与 RTP SSRC 和 RTP 会话之间的关系

来自 Mozilla 站点:https : //developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API

“一个 MediaStream 由零个或多个 MediaStreamTrack 对象组成,代表各种音频或视频轨道。每个 MediaStreamTrack 可能有一个或多个通道。通道表示媒体流的最小单位,例如与给定扬声器关联的音频信号,如在立体声音轨中向左或向右。”

这澄清了频道是什么。

最近的几个 RFC(例如 8108)提到需要在一个 RTP 会话中发送多个流。每个流在 RTP 级别都有自己的 SSRC。在统一计划的 RFC 中,参考总是作为最低级别的流(不是轨道或通道)。在 RFC 3550(基本 RTP RFC)中,没有提及通道。

RTP 流是否如这些 RFC 中提到的那样,建议流作为媒体的最低来源,与 WebRTC 中使用的该术语相同的通道,以及上面提到的?轨道通道 (WebRTC) 和带有 SSRC 的 RTP 流之间是否存在一对一映射?

例如,一个网络摄像头生成一个媒体流,它可以有一个音频媒体轨道和一个视频媒体轨道,每个轨道使用单独的 SSRC 在 RTP 数据包中传输,从而产生两个 SSRC。那是对的吗?现在,如果有一个立体声网络摄像头(或者一些这样的设备,比如两个麦克风 - 通道?)。这会生成具有三个不同的唯一 SSRC 的三个 RTP 流吗?

在成功测试 ICE 候选者后,是否有一个用于建立五元组连接的 RTP 会话?或者在对等点之间的同一组 port-ip-UDP 连接上可以有多个 RTP 会话吗?

任何澄清这一点的文件将不胜感激。

javascript rtp webrtc

13
推荐指数
1
解决办法
3603
查看次数

适用于Android的UDP或RTP流媒体解决方案

我需要创建一个Android应用程序来显示直播电视节目.应用程序应该播放来自DVB网关的多播的实时视频流,根据网关供应商,它可以流出UDP或RTP.我在我的计算机上安装了vlc以流出UDP和RTP,并试图让Android播放器显示它们.过了一会儿,我发现android只支持HTTP/S和RTSP直播流.我尝试了所有的FFMPEG解决方案和不同的媒体播放器,但还没有成功.我不是视频专家,但根据我的理解,RTSP是RTP的封装,我的RTP提要是否可以包装和流式传输(甚至通过代理)?有谁知道一个有效的UDP解决方案?

谢谢

我开始编写一个隧道,将端口1234的本地UDP流传递到端口8888上的TCP连接.我正在使用VLC进行测试,UDP负载看起来是正确的,我能够在等待时看到VLC初始化http连接为TCP侦听器接受连接.但仍然VLC不会播放生成的HTTP流,我的代码:

public void Bridge()
    {
        //endpoints
        IPEndPoint myRemoteEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);

        //communications objects
        UdpClient myUdpClient = new UdpClient(myRemoteEndpoint);
        TcpListener myTcpListener = new TcpListener(IPAddress.Any, 8888);

        //buffer
        byte[] buffer = new byte[2048];

        //start tcp listener
        myTcpListener.Start();
        Socket tcpAcceptedSocket = myTcpListener.AcceptSocket();            

        while (true)
        {
            try
            {
                //get data from UDP client
                buffer = myUdpClient.Receive(ref myRemoteEndpoint);

                //send bytes received from UDP over TCP
                tcpAcceptedSocket.Send(buffer);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        //close sockets
        myUdpClient.Close();
        myTcpListener.Stop();

    }
Run Code Online (Sandbox Code Playgroud)

有什么想法吗 ?

android udp rtp rtsp video-streaming

12
推荐指数
1
解决办法
1万
查看次数

如何使用android.net.rtp包实现VOIP应用程序

我正在尝试使用android.net.rtp包的AudioGroup和AudioStream类来实现VoIP应用程序.但我的应用程序无法正常运行.在使用"AudioStream"对象"加入""AudioGroup"类对象后,它成功发送udp数据包.我使用数据包分析器检查了一下.但是手机没有听到声音.我在2部手机中运行我的应用程序并尝试在它们之间传递语音.

在下面我提到我的源代码.

public class MainActivity extends Activity {
private AudioStream audioStream;
private AudioGroup audioGroup;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

try {
   audioGroup = new AudioGroup();
   audioGroup.setMode(AudioGroup.MODE_NORMAL);        
   audioStream = new AudioStream(InetAddress.getByAddress(new byte[] {(byte)192, (byte)168, (byte)1, (byte)4 }));
   audioStream.setCodec(AudioCodec.PCMU);
   audioStream.setMode(RtpStream.MODE_NORMAL);
   audioStream.associate(InetAddress.getByAddress(new byte[] {(byte)192, (byte)168, (byte)1, (byte)2 }), 5004);
   audioStream.join(audioGroup);
   AudioManager Audio =  (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
   Audio.setMode(AudioManager.MODE_IN_COMMUNICATION);
} 
catch (SocketException e) { e.printStackTrace();} 
catch (UnknownHostException e) { e.printStackTrace();} 
catch (Exception ex) { ex.printStackTrace();}
}
Run Code Online (Sandbox Code Playgroud)

我在Manifestfile中设置了这个权限.

<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.INTERNET" /> …
Run Code Online (Sandbox Code Playgroud)

android voip sip rtp

12
推荐指数
2
解决办法
1万
查看次数

如何使用Xuggler在RTP数据包中编码媒体文件

我正在使用xuggler在java中构建RTSP流服务器,但我不确定如何实现正确的RTP打包.

我当前的方法是调用ReadNextPacket(packet)输入容器,然后制作一个RTP数据包,其中有效负载由packet.getData()适当的头部填充(有效负载类型基于流索引,时间戳设置getTimestamp()等)并发送它.

有人能为我提供一个如何以IPacket最输入格式独立的方式编码成正确的rtp有效载荷的实际例子吗?文档有点缺乏.

java streaming rtp rtsp xuggler

12
推荐指数
1
解决办法
748
查看次数

使用wireshark将RTP有效负载解码为H264

我正在从Windows上的vlc将RTSP视频流式传输到ipad应用程序.我在wireshark中捕获数据包.我可以在wireshark中看到RTP数据包,也可以看到有效负载类型,时间戳,序列号等RTP头字段.我的问题是,是否可以将RTP有效负载解码为H264 NAL单元.目前我只能看到有效负载中的字节数.

rtp rtsp wireshark h.264

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

rtp ×10

rtsp ×5

h.264 ×4

streaming ×3

android ×2

gstreamer ×2

video ×2

video-streaming ×2

c++ ×1

html5 ×1

html5-video ×1

ios ×1

ios8 ×1

java ×1

javascript ×1

mp4 ×1

sip ×1

udp ×1

voip ×1

webrtc ×1

wireshark ×1

xuggler ×1