显示UDP(RGB)输入到ffmpeg或vlc

时间:2013-01-02 02:04:29

标签: ffmpeg udp rgb vlc

我从仅包含RGB有效负载(视频流)的本地端口UDP数据包接收。

如何使用ffmpeg或vlc显示RGB?

1 个答案:

答案 0 :(得分:2)

我希望这些帮助,即使他们没有直接回答你的问题。它们指向使用ffmpeg和gstreamer处理原始rgb数据所需的命令行选项。

  1. 我曾经需要从连接到另一台计算机的网络摄像头接收rgb帧。

  2. 无法使用UDP,因为没有帧,数据包被丢弃,帧变得不完整,行不同步。因此TCP(使用UDP是一个问题或改变命令中的那个词)。

  3. 与ffmpeg,gstreamer,mencoder,mplayer和vlc战斗,产生了以下解决方案。

    “体系结构”:

    [LINUX V4L2 WEBCAM CAPTURE] - > [THEORA VIDEO COMPRESSION] - > [RTP STREAM @ PORT 1233] - > [接收主机] - > [THEORA VIDEO DECOMPRESSION] - > [RAW RGB / 8BPP TO LOCALHOST @ PORT 1234]

    命令行:

    # VIDEO STREAM SENDING SIDE
    vlc -vvv -I dummy --udp-caching=0 --sout-mux-caching=0 --no-audio \
      v4l2:///dev/video0:width=640:height=480:caching=200:fps=10/1 :v4l2-caching=0 \
      ':sout=#transcode{vcodec=mp2v,vb=3000,acodec=none}: \
        rtp{mux=ts,dst=destinationhost,port=1233,caching=0}'
    
    # VIDEO STREAM RECEIVING/FORWARDING TO TCP / ffmpeg
    ffmpeg -i rtp://0.0.0.0?localport=1233 \
      -f rawvideo -pix_fmt rgb24 -vcodec rawvideo tcp://127.0.0.1:1234
    

    或者,一个命令来完成它们(使用gstreamer):

    # CAPTURE WEBCAM->FORWARD RGB GRAYSCALE TO TCP / gstreamer
    gst-launch-0.10 v4l2src device=/dev/video0 ! ffmpegcolorspace \
      ! video/x-raw-gray, width=320, height=240, 'framerate=(fraction)30/1' \
      ! tcpclientsink host=localhost port=1234