为什么视频传输需要编码? (gstreamer)

Why is encoding required for video transfer? (gstreamer)

我传输的视频已经编码。为什么我传输的时候要重新编码?

示例:gst-launch-1.0 -v filesrc location=123.mp4 !解码箱! x264编码! rtph264支付! udpsink 主机=192.168.10.186 端口=9001

只发送不编码的视频。我可以从另一边看吗?

例如:

服务器:gst-launch-1.0 -v filesrc location =123.mp4 ! udpsink 主机=192.168.10.186 端口=9001

123.mp4 编码的 h265

客户端:gst-launch-1.0 udpsrc 端口=9001 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H265, payload=(int)96"! rtph265depay ! h265解析! nvh265dec !自动视频接收器

此致

好的,澄清一下,假设您的输入是一个包含 H.265 的 MPEG4 文件:是的,那么这是可能的(如果这个假设不成立,那么 这将不工作).

以下应该可以解决问题:

gst-launch-1.0 filesrc location=123.mp4 ! qtdemux ! h265parse config-interval=-1 ! rtph265pay  ! udpsink host=192.168.10.186 port=9001

解释:

  • qtdemux 会将 MPEG4 容器解复用到包含的 video/audio/subtitile 流中(如果该容器内有多个流,您需要多次 link , 否则 GStreamer 会出错)
  • h265parse config-interval=1 将确保您包含正确的 SPS/PPS 参数集。如果原始输入文件中的流不是 H265 视频流,这将无法 link。
  • rth265pay 会将其转换为 RTP 数据包。
  • ... udpsink 然后可以通过指定的套接字发送

P.S.: 你可能也对 rtpsink 感兴趣(它曾经是树外的,但现在包含在最新的 GStreamer 主控中)

P.P.S.: 你应该使用偶数端口发送RTP流