GStreamer i.MX6 Camera Streaming

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

GStreamer i.MX6 Camera Streaming

GStreamer i.MX6 Camera Streaming

(DEPRECATED. Please check this document for Real Time Streaming)

A server can be streaming video and a client, in this case a i.MX6 target, is receiving and decoding it. For example, a server with GStreamer and a web camera connected, can be streaming with the following command:

$ # Pipeline 1

$ gst-launch v4l2src ! 'video/x-raw-yuv, format=(fourcc)I420, width=(int)1280, height=(int)800' ! ffenc_mpeg4 ! tcpserversink host=$CLIENT_IP port=$PORT

and on the target, the client receives, decodes and display with

$ # Pipeline 2

$ gst-launch tcpclientsrc host=$SERVER_IP port=$PORT  ! 'video/mpeg, width=(int)1280, height=(int)800, framerate=(fraction)10/1, mpegversion=(int)4, systemstream=(boolean)false' ! vpudec ! mfw_isink

The filter caps between the tcpclientsrc and the decoder (vpudec) depend on the sink caps coming from the server encoder (ffenc_mpeg4), so these may change depending on your needs. Running the above pipelines require the environment variables SERVER_IP, CLIENT_IP and PORT.

In case you want the i.MX6 to act as a server, just change the video source (either mfw_v4lsrc of v4l2src) and the encoder (vpuenc), so

$ # Pipeline 3

$  gst-launch v4l2src  !  'video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480, interlaced=(boolean)false, framerate=(fraction)10/1'  ! vpuenc ! tcpserversink host=$CLIENT_IP port=$PORT


For testing purposes, set SERVER_IP=127.0.0.1, CLIENT_IP=127.0.0.1 and PORT=500, and run pipeline 3 and 2 in two different consoles. Check with 'top' the  CPU usage and see that VPU is actually doing most of the work.

标签 (3)
评论

While working with a customer, we found that 1080p encode through the VPU doesn't work directly because of a test in src/video/vpu/src/vpuenc.c in the gst-fsl-plugins-3.0.2 package:

    if ((pad_width % 16) || (pad_height % 16)) {

Removing the restriction on pad_height seems to function.

There's also a way to use the mfw_ipucsc element to stretch things by 8 pixels.

%3CLINGO-SUB%20id%3D%22lingo-sub-1100703%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EGStreamer%20i.MX6%20%E6%91%84%E5%83%8F%E5%A4%B4%E6%B5%81%E5%AA%92%E4%BD%93%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1100703%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%3CSTRONG%20style%3D%22font-size%3A%2018pt%3B%22%3E%EF%BC%88%E5%B7%B2%E5%BC%83%E7%94%A8%E3%80%82%E8%AF%B7%E6%9F%A5%E7%9C%8B%3CA%20_jive_internal%3D%22true%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fdocs%2FDOC-94646%22%20target%3D%22_blank%22%3E%E6%AD%A4%3C%2FA%3E%E6%96%87%E6%A1%A3%E4%BB%A5%E4%BA%86%E8%A7%A3%E5%AE%9E%E6%97%B6%E6%B5%81%EF%BC%89%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%AF%E4%BB%A5%E4%BC%A0%E8%BE%93%E6%B5%81%E5%BC%8F%E8%A7%86%E9%A2%91%EF%BC%8C%E8%80%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%88%E5%9C%A8%E6%9C%AC%E4%BE%8B%E4%B8%AD%E4%B8%BA%20i.MX6%20%E7%9B%AE%E6%A0%87%EF%BC%89%E5%8F%AF%E4%BB%A5%E6%8E%A5%E6%94%B6%E5%B9%B6%E8%A7%A3%E7%A0%81%E8%AF%A5%E8%A7%86%E9%A2%91%E3%80%82%E4%BE%8B%E5%A6%82%EF%BC%8C%E8%BF%9E%E6%8E%A5%E4%BA%86%20GStreamer%20%E5%92%8C%E7%BD%91%E7%BB%9C%E6%91%84%E5%83%8F%E5%A4%B4%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%E8%BF%9B%E8%A1%8C%E6%B5%81%E5%BC%8F%E4%BC%A0%E8%BE%93%EF%BC%9A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CBLOCKQUOTE%3E%0A%3CP%3E%24%23%E7%AE%A1%E9%81%93%201%3C%2FP%3E%0A%3CP%3E%3CEM%3E%24%20gst-%E5%90%AF%E5%8A%A8%20v4l2src%EF%BC%81'video%2Fx-raw-yuv%EF%BC%8C%E6%A0%BC%E5%BC%8F%3D(fourcc)I420%EF%BC%8C%E5%AE%BD%E5%BA%A6%3D(int)1280%EF%BC%8C%E9%AB%98%E5%BA%A6%3D(int)800'%EF%BC%81ffenc_mpeg4%EF%BC%81tcpserversink%20%E4%B8%BB%E6%9C%BA%3D%24CLIENT_IP%20%E7%AB%AF%E5%8F%A3%3D%24PORT%3C%2FEM%3E%3C%2FP%3E%0A%0A%0A%3C%2FBLOCKQUOTE%3E%3CP%3E%E5%9C%A8%E7%9B%AE%E6%A0%87%E4%B8%8A%EF%BC%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%8E%A5%E6%94%B6%E3%80%81%E8%A7%A3%E7%A0%81%E5%B9%B6%E6%98%BE%E7%A4%BA%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CBLOCKQUOTE%3E%0A%3CP%3E%24%23%E7%AE%A1%E9%81%93%202%3C%2FP%3E%0A%3CP%3E%3CEM%3E%20%24%20gst-launch%20tcpclientsrc%20%E4%B8%BB%E6%9C%BA%3D%24SERVER_IP%20%E7%AB%AF%E5%8F%A3%3D%24PORT%20%EF%BC%81'video%2Fmpeg%EF%BC%8C%E5%AE%BD%E5%BA%A6%3D(int)1280%EF%BC%8C%E9%AB%98%E5%BA%A6%3D(int)800%EF%BC%8C%E5%B8%A7%E9%80%9F%E7%8E%87%3D(fraction)10%2F1%EF%BC%8Cmpegversion%3D(int)4%EF%BC%8C%E7%B3%BB%E7%BB%9F%E6%B5%81%3D(boolean)false'%EF%BC%81%E5%A4%AA%E6%A3%92%E4%BA%86%EF%BC%81mfw_isink%3C%2FEM%3E%3C%2FP%3E%0A%0A%0A%3C%2FBLOCKQUOTE%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CEM%3Etcpclientsrc%3C%2FEM%3E%E5%92%8C%E8%A7%A3%E7%A0%81%E5%99%A8%EF%BC%88%20%3CEM%3Evpudec%3C%2FEM%3E%20%EF%BC%89%E4%B9%8B%E9%97%B4%E7%9A%84%E6%BB%A4%E6%B3%A2%E5%99%A8%E5%AE%B9%E9%87%8F%E5%8F%96%E5%86%B3%E4%BA%8E%E6%9D%A5%E8%87%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%BC%96%E7%A0%81%E5%99%A8%EF%BC%88%20%3CEM%3Effenc_mpeg4%3C%2FEM%3E%20%EF%BC%89%E7%9A%84%E6%8E%A5%E6%94%B6%E5%99%A8%E5%AE%B9%E9%87%8F%EF%BC%8C%E5%9B%A0%E6%AD%A4%E8%BF%99%E4%BA%9B%E5%AE%B9%E9%87%8F%E5%8F%AF%E8%83%BD%E4%BC%9A%E6%A0%B9%E6%8D%AE%E6%82%A8%E7%9A%84%E9%9C%80%E8%A6%81%E8%80%8C%E6%94%B9%E5%8F%98%E3%80%82%E8%BF%90%E8%A1%8C%E4%B8%8A%E8%BF%B0%E7%AE%A1%E9%81%93%E9%9C%80%E8%A6%81%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%20SERVER_IP%E3%80%81CLIENT_IP%20%E5%92%8C%20PORT%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E5%A6%82%E6%9E%9C%E6%82%A8%E5%B8%8C%E6%9C%9B%20i.MX6%20%E5%85%85%E5%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E5%8F%AA%E9%9C%80%E6%9B%B4%E6%94%B9%E8%A7%86%E9%A2%91%E6%BA%90%EF%BC%88mfw_v4lsrc%20%E6%88%96%20v4l2src%EF%BC%89%E5%92%8C%E7%BC%96%E7%A0%81%E5%99%A8%EF%BC%88vpuenc%EF%BC%89%EF%BC%8C%E5%9B%A0%E6%AD%A4%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CBLOCKQUOTE%3E%0A%3CP%3E%24%23%E7%AE%A1%E9%81%93%203%3C%2FP%3E%0A%3CP%3E%3CEM%3E%24%20gst-launch%20v4l2src%EF%BC%81'video%2Fx-raw-yuv%EF%BC%8C%E6%A0%BC%E5%BC%8F%3D(fourcc)I420%EF%BC%8C%E5%AE%BD%E5%BA%A6%3D(int)640%EF%BC%8C%E9%AB%98%E5%BA%A6%3D(int)480%EF%BC%8C%E9%9A%94%E8%A1%8C%3D(boolean)false%EF%BC%8C%E5%B8%A7%E7%8E%87%3D(fraction)10%2F1'%EF%BC%81vpuenc%EF%BC%81tcpserversink%20%E4%B8%BB%E6%9C%BA%3D%24CLIENT_IP%20%E7%AB%AF%E5%8F%A3%3D%24PORT%3C%2FEM%3E%3C%2FP%3E%0A%0A%0A%3C%2FBLOCKQUOTE%3E%3CP%3E%3CEM%3E%3CBR%20%2F%3E%3C%2FEM%3E%3C%2FP%3E%3CP%3E%E4%B8%BA%E4%BA%86%E6%B5%8B%E8%AF%95%E7%9B%AE%E7%9A%84%EF%BC%8C%E8%AE%BE%E7%BD%AE%20SERVER_IP%3D127.0.0.1%E3%80%81CLIENT_IP%3D127.0.0.1%20%E5%92%8C%20PORT%3D500%EF%BC%8C%E5%B9%B6%E5%9C%A8%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8F%B0%E4%B8%AD%E8%BF%90%E8%A1%8C%E7%AE%A1%E9%81%93%203%20%E5%92%8C%202%E3%80%82%E4%BD%BF%E7%94%A8%E2%80%9Ctop%E2%80%9D%E6%A3%80%E6%9F%A5%20CPU%20%E4%BD%BF%E7%94%A8%E7%8E%87%E5%B9%B6%E5%8F%91%E7%8E%B0%20VPU%20%E5%AE%9E%E9%99%85%E4%B8%8A%E6%AD%A3%E5%9C%A8%E6%89%A7%E8%A1%8C%E5%A4%A7%E9%83%A8%E5%88%86%E5%B7%A5%E4%BD%9C%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1100703%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX6_%E5%85%A8%E9%83%A8%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ELinux%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E5%A4%9A%E5%AA%92%E4%BD%93%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1100704%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%9B%9E%E5%A4%8D%EF%BC%9AGStreamer%20i.MX6%20%E6%91%84%E5%83%8F%E5%A4%B4%E6%B5%81%E5%AA%92%E4%BD%93%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1100704%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E5%9C%A8%E4%B8%8E%E5%AE%A2%E6%88%B7%E5%90%88%E4%BD%9C%E6%97%B6%EF%BC%8C%E6%88%91%E4%BB%AC%E5%8F%91%E7%8E%B0%E9%80%9A%E8%BF%87%20VPU%20%E8%BF%9B%E8%A1%8C%E7%9A%84%201080p%20%E7%BC%96%E7%A0%81%E6%97%A0%E6%B3%95%E7%9B%B4%E6%8E%A5%E5%B7%A5%E4%BD%9C%EF%BC%8C%E8%BF%99%E6%98%AF%E5%9B%A0%E4%B8%BA%E5%9C%A8%20gst-fsl-plugins-3.0.2%20%E5%8C%85%E4%B8%AD%E7%9A%84%20src%2Fvideo%2Fvpu%2Fsrc%2Fvpuenc.c%20%E4%B8%AD%E8%BF%9B%E8%A1%8C%E4%BA%86%E6%B5%8B%E8%AF%95%EF%BC%9A%3C%2FP%3E%3CPRE%20translate%3D%22no%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20if%20((pad_width%20%25%2016)%20%7C%7C%20(pad_height%20%25%2016))%20%7B%0A%3C%2FPRE%3E%3CP%3E%E5%88%A0%E9%99%A4%20pad_height%20%E7%9A%84%E9%99%90%E5%88%B6%E4%BC%BC%E4%B9%8E%E6%9C%89%E6%95%88%E3%80%82%3C%2FP%3E%3CP%3E%E8%BF%98%E6%9C%89%E4%B8%80%E7%A7%8D%E6%96%B9%E6%B3%95%E6%98%AF%E4%BD%BF%E7%94%A8%3CTT%3Emfw_ipucsc%3C%2FTT%3E%E5%85%83%E7%B4%A0%E5%B0%86%E4%BA%8B%E7%89%A9%E6%8B%89%E4%BC%B8%208%20%E4%B8%AA%E5%83%8F%E7%B4%A0%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E
无评分
版本历史
最后更新:
‎11-15-2012 03:44 PM
更新人: