RTMPSrc 到 v4l2sink
RTMPSrc to v4l2sink
我想接收一个 rtmp 流并创建一个以 v4l2sink 作为输出的管道
gst-launch rtmpsrc location="rtmp://localhost/live/test" ! "video/x-raw-yuv,width=640,height=480,framerate=30/1,format=(fourcc)YUY2" ! videorate ! v4l2sink device=/dev/video1
但我只有绿屏:https://www.dropbox.com/s/yq9oqi9m62c5afo/screencast1422465570.webm?dl=0
您的管道告诉 GStreamer 将编码的、多路复用的 RTMP 数据视为 YUV 视频缓冲区。
相反,您需要解析、解复用和解码 RTMP 数据的视频部分。我没有要测试的示例流,但您可以只使用 decodebin(无论出于何种原因,在 GStreamer 0.10 中它被称为 decodebin2)。您还需要将视频速率重新排序为在帧速率上限之前,以便它知道要转换成什么。
暗中狂刺:
gst-launch rtmpsrc location="rtmp://localhost/live/test" ! decodebin2 ! videoscale ! ffmpegcolorspace ! videorate ! "video/x-raw-yuv,width=640,height=480,framerate=30/1,format=(fourcc)YUY2" ! v4l2sink device=/dev/video1
现在可以使用了:
gst-launch rtmpsrc location="rtmp://localhost/live/test" ! decodebin2 ! videoscale ! ffmpegcolorspace ! videorate ! "video/x-raw-yuv,width=1920,height=1080,framerate=30/1,format=(fourcc)YUY2" ! v4l2sink device=/dev/video1
我想接收一个 rtmp 流并创建一个以 v4l2sink 作为输出的管道
gst-launch rtmpsrc location="rtmp://localhost/live/test" ! "video/x-raw-yuv,width=640,height=480,framerate=30/1,format=(fourcc)YUY2" ! videorate ! v4l2sink device=/dev/video1
但我只有绿屏:https://www.dropbox.com/s/yq9oqi9m62c5afo/screencast1422465570.webm?dl=0
您的管道告诉 GStreamer 将编码的、多路复用的 RTMP 数据视为 YUV 视频缓冲区。
相反,您需要解析、解复用和解码 RTMP 数据的视频部分。我没有要测试的示例流,但您可以只使用 decodebin(无论出于何种原因,在 GStreamer 0.10 中它被称为 decodebin2)。您还需要将视频速率重新排序为在帧速率上限之前,以便它知道要转换成什么。
暗中狂刺:
gst-launch rtmpsrc location="rtmp://localhost/live/test" ! decodebin2 ! videoscale ! ffmpegcolorspace ! videorate ! "video/x-raw-yuv,width=640,height=480,framerate=30/1,format=(fourcc)YUY2" ! v4l2sink device=/dev/video1
现在可以使用了:
gst-launch rtmpsrc location="rtmp://localhost/live/test" ! decodebin2 ! videoscale ! ffmpegcolorspace ! videorate ! "video/x-raw-yuv,width=1920,height=1080,framerate=30/1,format=(fourcc)YUY2" ! v4l2sink device=/dev/video1