我试图从来自轴摄像机的rtp流解析不同的mpeg4帧,并使用avcodec_decode_video函数将数据包提供给ffmpeg库.这里是我正在做的步骤1. rtsp流初始化2. rtp流开始流入3.第一个数据包我开始000001b0 ...配置数据跟随,然后该帧开始于000001b6 ..第二个rtp有效载荷会有所不同,直到我得到一个rtp数据包,其中标记位被设置.之后我再次收到以000001b6开头的数据包并继续使用5-10 rtp数据包..这种模式重复
我正在做的是,如果我检测到000001b0/b6 - 我会累积所有后来的数据包,并在正确初始化解码器上下文之后将较大的缓冲区提供给libavcodec的avcodec_decode_video函数.
但是我在这里得到了一张糟糕的照片,最顶部的部分,一个水平条纹 - 水晶般清晰的图片,剩下的就是蹩脚的.我不确定为什么它会像这样.请帮我
我在rtp数据包中获得的数据是动态-96.
需要注意的是:当我传递iframes和p帧时,这些帧全神贯注于其他制造商的propreitary协议中,ffmpeg能够解析并提供非常好的pcitures.
任何帮助表示赞赏
我正在研究可以实时工作的项目:我必须编写一个视频流客户端服务器应用程序,该服务器将AVI / MPEG等发送到Web应用程序。我有一些问题:
建议使用什么协议来执行此操作,http?rtp?或其他?
在Web应用程序中,如何显示给用户?使用Flash Player,Java Applet(我不确定是否可以使用它)或HTML5,目前最好的方法是什么?
我希望这对您来说很干净。非常感谢您的帮助。提前致谢。:)
我正在寻找一种使用 JavaFx 显示 RTP JPEG 流的解决方案。我可以从文件中显示 jpeg 并接收 RTP JPEG 流并将其拆分以识别RFC2435 中指定的所有参数和数据 但我不知道如何将我的 JPEG 数组转换为可显示的图像。我不想自己实现 JPEG 解码器。任何的想法?
我在从特定相机检索 rtsp 流时遇到困难,因为相机提供的 rtp 有效载荷类型为 35(未分配),并且rtph264depay插件接受的有效载荷类型在 [96-127] 范围内。结果是 gstreamer 显示如下错误:
<udpsrc0> error: Internal data flow error.
<udpsrc0> error: streaming task paused, reason not-linked (-1)
Run Code Online (Sandbox Code Playgroud)
我测试过的其他相机正在工作,因为它们定义了良好的有效载荷类型。
FFmpeg、MPlayer 和其他工具播放流,尽管它们可能会显示未知类型的警告,例如在 Mplayer 中:
rtsp_session: unsupported RTSP server. Server type is 'unknown'
Run Code Online (Sandbox Code Playgroud)
在 gstreamer 中是否有任何方法可以伪造有效负载类型、忽略不匹配的属性、强制插件之间的链接或以其他方式为我的问题创建解决方法?
我正在使用的管道是:
gst-launcg-0.10 rtspsrc location="..." ! rtph264depay ! capsfilter caps="video/x-h264,width=1920,height=1080,framerate=(fraction)25/1" ! h264parse ! matroskamux ! filesink location="test.mkv"
Run Code Online (Sandbox Code Playgroud) 我想知道这条SDP线的含义,因为我正在尝试以5%到10%的数据包丢失来获得最平滑的帧率。
我不知道的行是:a = rtcp-fb:100 goog-remb a = rtcp-fb:100 transport-cc
我不知道为什么firefox(例如)取消了“ transport-cc”功能,即使我必须解码不完整的视频帧,我是否也想使流帧率平滑?
最好的问候,我希望有人可以帮助我:)
我是 GSTreamer 的新手。我尝试使用 GStreamer 上传视频。在运行以下命令时,
gst-launch-1.0 videotestsrc !udpsink 端口=5200
我收到如下警告。
WARNING: from element /GstPipeline:pipeline0/GstUDPSink:udpsink0: Attempting to send a UDP packets larger than maximum size (115200 > 65507)
Additional debug info:
gstmultiudpsink.c(715): gst_multiudpsink_send_messages (): /GstPipeline:pipeline0/GstUDPSink:udpsink0:
Reason: Error sending message: A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.
0:00:56.934530706 4912 0000000002F09640 WARN multiudpsink gstmultiudpsink.c:715:gst_multiudpsink_send_messages:<udpsink0> warning: Attempting …Run Code Online (Sandbox Code Playgroud) 我通过 ffmpeg 开始视频传输,如下所示:
ffmpeg -f video4linux2 -i /dev/video0 -vcodec libx264 -preset ultrafast -crf 20 -tune zerolatency -s 800x600 -r 25 -b:v 0.9M -sdp_file video.sdp -f rtp rtp://192.168.10.24:5010
Run Code Online (Sandbox Code Playgroud)
我以这种方式重现:
ffplay -protocol_whitelist file,udp,rtp video.sdp
Run Code Online (Sandbox Code Playgroud)
一切正常。然后我中断传输,几秒钟后我恢复。ffplay 不会立即开始重现但出现错误:
....
[sdp @ 0x6ebf80] RTP: dropping old packet received too lateB f=1/1
Last message repeated 14 times
[sdp @ 0x6ebf80] RTP: dropping old packet received too lateB f=1/1
Last message repeated 33 times
[sdp @ 0x6ebf80] RTP: dropping old packet received too lateB f=1/1
Last message …Run Code Online (Sandbox Code Playgroud) 我正在访问RTSPVIRB 360 摄像机的视频流。我可以使用以下gstreamer命令播放流:
gst-launch-1.0 -v playbin uri=rtsp://192.168.0.1/livePreviewStream?maxResolutionVertical=720\&liveStreamActive=1
Run Code Online (Sandbox Code Playgroud)
但是,流式传输存在3 秒的延迟,需要消除该延迟。上述命令的输出(由于-v)已上传至此处。我还按照此问题/答案.svg中描述的方法为管道创建了一些文件。这些文件已上传至此处。我相信并代表完整的管道(多个文件是由单个管道生成的,这就是多个文件的原因)。在文件中,可以看到下面有一个.mypipeline4.svgmypipeline5.svgdot.svg.svglatency=2000rtpjitterbuffer
计划是通过手动添加组件而不是使用 来构建相同的管道playbin,然后设置 的延迟属性rtpjitterbuffer。我尝试过以下命令:
1)gst-launch-1.0 rtspsrc location=rtsp://192.168.0.1/livePreviewStream?maxResolutionVertical=720\&liveStreamActive=1 ! udpsrc ! rtpsession ! rtpssrcdemux ! rtpjitterbuffer ! rtpptdemux ! queue ! udpsink ! queue ! rtph264depay ! h264parse ! omxh264dec ! playsink
2)gst-launch-1.0 rtspsrc location=rtsp://192.168.0.1/livePreviewStream?maxResolutionVertical=720\&liveStreamActive=1 ! udpsrc ! rtpsession ! rtpssrcdemux ! rtpjitterbuffer ! rtpptdemux …
我试图找出 RTP 数据包的最大大小。我知道最小标头大小为 12 字节,但我没有找到有关有效负载的任何信息。
RTP 数据包的最大大小可能与 UDP 负载最大大小相同吗?我的意思是,我只有一个负载巨大的 RTP 数据包。这是可能的,在这种情况下,对于不这样做的 RTP 数据包有任何推荐的大小吗?
例如,我在 RTP 中封装 MP3 帧。我是用 1 个 MP3 帧、2 个还是多少个 MP3 帧制作 RTP 帧?
我希望你明白我的问题:)
我正在尝试配置websocket以使用星号11.但是有一些问题.我遵循的步骤是:在http.conf中启用以下内容
enabled=yes
bindaddr=0.0.0.0
bindport=8088
Run Code Online (Sandbox Code Playgroud)
我还配置了支持DTLS的星号.但是当我尝试连接到websocket的新WebSocket时("ws:// mySeverIp:8088/ws"); .它抛出一个错误
WebSocket connection failed: Error during WebSocket handshake: Unexpected response code: 400
Run Code Online (Sandbox Code Playgroud)
有人请帮忙.
谢谢