我想使用rtsp/rtp广播我的程序的屏幕(不是静态屏幕),因为这样一部手机(至少是最近的手机)可以查看流.
我正在寻找一个简单的示例程序,它采用我提供的帧,用编解码器对其进行编码,然后将其(使用rtsp)发送到任何连接的客户端.
我看过网络,到目前为止我能找到的都是完全成熟的开源媒体服务器(如darwin),这些服务器太复杂了,无法用作示例
任何帮助赞赏!
[R
ps发送jpegs到手机真的不是一个选择,因为这是非标准的,并且需要安装移动应用程序来解释'流'.
ps2 C,C++或C#会好的.
因此,我一直在与FFMPEG合作开展一个项目,该项目涉及使用RTP将视频从一台计算机流式传输到另一台计算机.我想把它带到ffmpeg并使用ffserver在本地网络上显示它.
据我了解,您需要有一个SDP信息,以便接收ffmpeg实例可以解释RTP流.尽管网页说什么,但我无法在打印到控制台的信息中找到SDP信息.
如何强制传输ffmpeg实例输出SDP信息,以便我可以用它来配置我的接收端?
现在,我正在测试Windows 7,但最终的解决方案将在Linux上.
我正在运行测试的命令是
ffmpeg -fflags +genpts -i files\2005-SFSD-sample-mpeg1.mpg -threads 0 -r 10 -g 45
-s 352x240 -deinterlace -y 2005.mp4 -an -threads 0 -r 10 -g 45 -s 352x240
-deinterlace -f rtp rtp://192.168.200.198:9008
Run Code Online (Sandbox Code Playgroud)
我的ffmpeg信息是......
ffmpeg version 0.8, Copyright (c) 2000-2011 the FFmpeg developers built on Jun 23 2011 14:22:23 with gcc 4.5.3
configuration:
--disable-static
--enable-shared
--enable-gpl
--enable-version3
--enable-memalign-hack
--enable-runtime-cpudetect
--enable-avisynth
--enable-bzlib
--enable-frei0r
--enable-libopencore-amrnb
--enable-libopencore-amrwb
--enable-libfreetype
--enable-libgsm
--enable-libmp3lame
--enable-libopenjpeg
--enable-librtmp
--enable-libschroedinger
--enable-libspeex
--enable-libtheora
--enable-libvorbis
--enable-libvpx
--enable-libx264
--enable-libxavs
--enable-libxvid
--enable-zlib …Run Code Online (Sandbox Code Playgroud) 我一直在研究一些流媒体软件,它使用H.264通过网络从各种摄像机和流中获取实时信息.为了实现这一点,我直接使用x264编码器(带有"zerolatency"预设)并提供NAL,因为它们可用于libavformat以打包到RTP(最终是RTSP).理想情况下,此应用程序应尽可能实时.在大多数情况下,这一直运作良好.
然而不幸的是,存在某种同步问题:客户端上的任何视频回放似乎都显示了一些平滑帧,然后是短暂停顿,然后是更多帧; 重复.此外,似乎有大约4秒的延迟.我尝试过的每一个视频播放器都会出现这种情况:Totem,VLC和基本的gstreamer管道.
我把它煮成了一个小小的测试用例:
#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include <x264.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#define WIDTH 640
#define HEIGHT 480
#define FPS 30
#define BITRATE 400000
#define RTP_ADDRESS "127.0.0.1"
#define RTP_PORT 49990
struct AVFormatContext* avctx;
struct x264_t* encoder;
struct SwsContext* imgctx;
uint8_t test = 0x80;
void create_sample_picture(x264_picture_t* picture)
{
// create a frame to store in
x264_picture_alloc(picture, X264_CSP_I420, WIDTH, HEIGHT);
// fake image generation
// disregard how wrong this is; just writing a quick test
int strides = …Run Code Online (Sandbox Code Playgroud) 我是使用RTP进行SIP呼叫的新手,现在我正在尝试使用RTP发送和接收语音流以进行SIP呼叫.我完成了连接两个仿真器并能够使用jain sip发送INVITE和INVITE-ACK.
得到Ack之后我想开始RTP进行媒体流,我使用RtpPacket函数发送和接收
我RtpFunction用来发送带有所有RTP头的媒体,如下所示:
byte Version;
boolean Padding;
boolean Extension;
byte CC;
boolean Marker;
byte PayloadType;
short SequenceNumber;
int TimeStamp;
Run Code Online (Sandbox Code Playgroud)
请给出一些我能找到答案的想法和实际链接.
除其他外,WebRTC用于实时浏览器到浏览器媒体通信,但在我的情况下,它将用于浏览器到服务器的音频通信.
根据我收集的信息,使用RTP over UDP传输MediaStream.
除了用于信令的协议之外,这将需要至少两个额外的端口,这是我想要避免的.
在WebRTC中,是否有可能在Websocket上使用RTP而不是在UDP上使用RTP,这样我只需要使用端口80或443?
我想通过RTP发送多媒体数据.我想知道的是如何使用Python发送和接收RTP数据包.我找到了python类DPKT.但无法找到一个很好的参考,可视化如何在RTP中生成每个字段.
如果有人可以帮助我在服务器上生成和接收rtp数据包,我将不胜感激.
我正在尝试使用Python从IP摄像机流式传输RTP数据包.
我能够使用RTSP协议发送describe,setup和play命令,但是,我无法使用RTP开始流式传输实际的视频流.
这是代码:
import socket
def printrec(recst):
recs=recst.split('\r\n')
for rec in recs:
print rec
dest="DESCRIBE rtsp://admin:12345@192.168.1.74 RTSP/1.0\r\nCSeq: 2\r\nUser-Agent: python\r\nAccept: application/sdp\r\n\r\n"
setu="SETUP rtsp://admin:12345@192.168.1.74/trackID=1 RTSP/1.0\r\nCSeq: 3\r\nUser-Agent: python\r\nTransport: RTP/AVP;unicast;client_port=60784-60785\r\n\r\n"
play="PLAY rtsp://admin:12345@192.168.1.74/ RTSP/1.0\r\nCSeq: 5\r\nUser-Agent: python\r\nSession: SESID\r\nRange: npt=0.000-\r\n\r\n"
# .. here SESID will be substituted with the session id that SETUP returns us ..
ip="192.168.1.74"
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip,554))
s.send(dest)
recst=s.recv(4096)
printrec(recst)
# etc. then the same for the strins "setu" and "play"
....
Run Code Online (Sandbox Code Playgroud)
安装程序回复我:
RTSP/1.0 200 OK
CSeq: 3
Session: 1117448817;timeout=60
Transport: RTP/AVP;unicast;client_port=60784-60785;server_port=8214-8215;ssrc=40d35c30;mode="play"
Date: Mon, …Run Code Online (Sandbox Code Playgroud) 我正在尝试从RTP URL流式传输RTP数据包(流式传输音频),例如rtp:// @225.0.0.0经过如此多的研究,我在设备上有点流式传输URL并使用https://播放github.com/maknapp/vlckitSwiftSample.这只是播放流数据,但没有任何存储数据的功能.
从研究和其他来源,我发现了很多内容和简单的信息,这些信息应该有助于通过RTP流式传输数据包并将其存储在iOS设备中.
我试过以下链接.
这两个甚至没有编译,因为POD问题其他项目或指南只是给我参考RTSP流而不是RTP流.
如果有人能给我们一个指导或任何想法,我们如何能够实现这些事情,那么我们将不胜感激.
我有一个简单的Rtsp客户端...客户端将Rtsp命令发送到Rtsp服务器并从服务器获取RTP数据包.
问题是经过一段时间(大约3-4分钟)后,我的第三方RTSP服务器断开与RTSP客户端的连接.
我没有实现RTCP ...我从rtsp服务器获取rtp数据包但不发送任何RTCP PACKET ...
我做了简单的搜索,发现有些人使用一些RTSP命令[比如OPTIONS,SET PARAMETER-GET PARAMETER]也保持RTSP服务器和客户端之间的连接...但在我的情况下,这不起作用...
这是我的问题:
我刚刚开始深入研究流媒体库和底层协议。我了解 rtsp/rtp 流媒体以及这两个协议的用途。但是,如果我们需要 IP 地址、编解码器和 rtsp/rtp 协议来流式传输来自任何摄像机的视频和音频,那么为什么我们有 onvif 标准,该标准本质上也旨在标准化 IP 网络设备之间的通信。我已经看到了 onvif 的定义,所以这不是我要找的。我想知道为什么在我们已经拥有 rtsp/rtp 的情况下我们还需要 onvif 以及它可以提供哪些额外的好处。