如果客户端想要观看我的RTSP服务器上的流,它首先尝试通过UDP协议设置流.我怎么能告诉它我的服务器只支持RTP/AVP/TCP并且它应该切换传输?
我要终止我的服务器上的UDP支持,但所有的客户端第一次尝试设置了UDP会话,后来他们通过TCP这样做......我想切换他们尽快在RTSP协议TCP.
我怎样才能做到这一点?
如果你可以帮助我解决H264流媒体问题,我会非常感激,我一直试图解决这个问题.
我需要将H255视频从Live555(在Linux机器上)传输到VLC媒体播放器(在Windows机器上).使用RTSP它可以很好地工作,但是我需要在没有RTSP的情况下使用RTP,而使用RTP我看不到视频.VLC甚至不识别该流是H264.
这是通过RTSP传输的SDP文件(可用的配置):
v=0
o=- 1277647151953158 1 IN IP4 190.40.14.100
s=Session streamed by "testH264VideoAudioStreamer"
i=test-h264-mux.mpg
t=0 0
a=tool:LIVE555 Streaming Media v2007.05.24
a=type:broadcast
a=control:*
a=source-filter: incl IN IP4 * 190.40.14.100
a=rtcp-unicast: reflection
a=range:npt=0-
a=x-qt-text-nam:Session streamed by "testH264VideoAudioStreamer"
a=x-qt-test-inf:test-h264=mux.mpg
m=video 8554 RTP/AVP 96
c=IN IP4 190.40.15.63/7
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=000042;sprop-parameter-sets=H264
a=control:track1
Run Code Online (Sandbox Code Playgroud)
但是如果我从RTSP切换到RTP,它就不起作用.我已经尝试在VLC播放器中加载上面的SDP文件,但它没有帮助.
以下是VLC Player 0.8.6d的一些调试输出:
main input debug: thread 4016 (input) created at priority 1 (input/input.c:265)
main input debug: `rtp://@190.40.15.63:8554' gives access `rtp demux' `' path `@190.40.15.63:8554'
main input debug: …Run Code Online (Sandbox Code Playgroud) 是否有可靠的开源库用c ++编写来实现SIP和RTP协议?如果没有,使用boost.asio实现它们是否容易?
如何在Android中实现SIP协议?有没有可用于将其轻松实现到Android的SDK或库?
我正在使用gstreamer通过RTP流将mp4(mpeg-4)文件从一个设备传输到另一个设备.基本上我将mp4文件拆分为其音频和视频文件,然后将其全部发送到其他设备进行流式处理.现在,我想将mp4文件保存到另一台设备的磁盘上,但我的问题是我可以单独保存音频和视频文件而无法单独播放.
我很困惑如何结合音频和视频rtp流来形成我的mp4文件并将其保存到其他设备中的文件.
以下是命令行代码:
发件人(服务器)
gst-launch-0.10 -v filesrc location=/home/kuber/Desktop/sample.mp4 \
! qtdemux name=d \
! queue \
! rtpmp4vpay \
! udpsink port=5000 \
d. \
! queue \
! rtpmp4gpay \
! udpsink port=5002
Run Code Online (Sandbox Code Playgroud)
Reciever(客户端)
gst-launch-0.10 udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)243, config=(string)000001b0f3000001b50ee040c0cf0000010000000120008440fa282fa0f0a21f, payload=(int)96, ssrc=(uint)4291479415, clock-base=(uint)4002140493, seqnum-base=(uint)57180" \
! rtpmp4vdepay \
! ffdec_mpeg4 \
! xvimagesink sync=false \
udpsrc port=5002 caps="application/x-rtp, media=(string)audio, clock-rate=(int)32000, encoding-name=(string)MPEG4-GENERIC, encoding-params=(string)2, streamtype=(string)5, profile-level-id=(string)2, mode=(string)AAC-hbr, config=(string)1290, sizelength=(string)13, indexlength=(string)3, indexdeltalength=(string)3, payload=(int)96, ssrc=(uint)501975200, clock-base=(uint)4248495069, seqnum-base=(uint)37039"\
! …Run Code Online (Sandbox Code Playgroud) 我在我的Miniand的Hackberry上安装了linaro 12.06(https://www.miniand.com/products/Hackberry%20A10%20Developer%20Board).
我用HACK的ssid在hackberry上有无线接入点
我在hackberry上使用这个命令:
avconv -f alsa -ac 1 -i hw:0,0 -acodec mp2 -b 64k -f rtp rtp://10.0.0.1:1234
Run Code Online (Sandbox Code Playgroud)
所以使用我的笔记本电脑连接到hackberry"HACK",然后我拉起终端并输入
avplay -i rtp://10.0.0.1:1234
Run Code Online (Sandbox Code Playgroud)
我没有收到任何音频信号.你知道我做错了什么吗?
在hackberry,如果我跑
avconv -f alsa -ac 1 -i hw:0,0 -acodec mp2 -b 64k -f rtp rtp://10.0.0.1:1234
Run Code Online (Sandbox Code Playgroud)
并使用新的终端屏幕运行
avplay -i rtp://10.0.0.1:1234
Run Code Online (Sandbox Code Playgroud)
我能听到完美的音频.
我试图避免使用流媒体服务器.
有人可以帮忙吗?
谢谢!
我一直试图弄清楚如何使用VLC流式传输我的桌面(通过LAN)并实现尽可能低的延迟(<100ms).目标是让另一台计算机接收流并可能在流式传输时玩游戏(即在电视旁边的PC上从PC1玩游戏).
我应该使用什么设置?我尝试了多种方法,但还没有成功.
编辑:我也愿意使用VLC以外的东西.
我正在尝试使用 gstreamer 和 tcp 流式传输 h264 编码的视频。命令是:
gst-launch-1.0 videotestsrc is-live=true !视频转换!视频尺度!视频/x-raw,宽度=800,高度=600!x264enc key-int-max=12 !rtph264pay 配置间隔=1 点=96 !国内生产总值支付!tcpserversink 端口=5000
gop 大小设置为 12,配置每秒发送一次。我无法使用 vlc 接收此流(无论是在同一台机器上还是在其他机器上)。vlc上的命令是:
vlc rtp://localhost:5000
但什么也没显示。任何人都可以帮忙吗?问候
我正在尝试使用我在这里找到的示例脚本来获取 OpenCV 图像并将其转换为 rtp/rtsp 流:
https://github.com/madams1337/python-opencv-gstreamer-examples/blob/master/gst_device_to_rtp .py
这是脚本的描述:
“gst_device_to_rtp 抓取 VideoCapture(0),对帧进行编码并将其流式传输到 rtp://localhost:5000”
这是我尝试使用的代码
# Cam properties
fps = 30.
frame_width = 1920
frame_height = 1080
# Create capture
#cap = cv2.VideoCapture(0)
# Set camera properties
cap.set(cv2.CAP_PROP_FRAME_WIDTH, frame_width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, frame_height)
cap.set(cv2.CAP_PROP_FPS, fps)
# Define the gstreamer sink
gst_str_rtp = "appsrc ! videoconvert ! x264enc noise-reduction=10000 tune=zerolatency byte-stream=true threads=4 " \
" ! h264parse ! mpegtsmux ! rtpmp2tpay ! udpsink host=127.0.0.1 port=5000"
# Create videowriter as a SHM sink
out = cv2.VideoWriter(gst_str_rtp, …Run Code Online (Sandbox Code Playgroud) 我目前正在研究一个 AudioOverIP 项目,想知道你是否可以帮助我。我有一个 LAN,带有一个音频源(Dante/AES67-RTP-Stream),我想将其分发到多个带有音频输出(例如耳机插孔)的接收器(SBC(例如 RaspberryPi)):
PC-->Audio-USB-Dongle-->AES67/RTP-Multicast-Stream-->LAN-Network-Switch-->RPI (Gstreamer --> AudioJack)
Run Code Online (Sandbox Code Playgroud)
我目前使用 Gstreamer 作为管道:
gst-launch-1.0 -v udpsrc uri=udp://239.69.xxx.xx:5004 caps="application/x-rtp,channels=(int)2,format=(string)S16LE,media=(string)audio,payload=(int)96,clock-rate=(int)48000,encoding-name=(string)L24" ! rtpL24depay ! audioconvert ! alsasink device=hw:0,0
Run Code Online (Sandbox Code Playgroud)
一切正常,但如果我在 PC 上观看视频并收听 RPI 的音频,我会出现一些延迟(~200-300ms),因此我的问题是:
rtpjitterbuffer或类似的输入不会有助于减少延迟?