2013-01-02 33 views

回答

2

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

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

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

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

“体系结构”:

[LINUX V4L2摄像头捕捉] - > [Theora视频压缩] - > [RTP流@ PORT 1233] - > [接收主机] - > [Theora的视频解压缩] - > [RAW RGB/8bpp的本地主机@ 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