This is just a quick post highlighting how a few simple components can be used to stream video from the camera on an i.MX6 over the network.
While working with one of our i.MX53 customers on a video streaming application, we had reason to test the camera interface, video encoding, and streaming on i.MX6. Our customer brought us a couple of command lines that worked well on his laptop:
Laptop server command-line
On the server side, the pipeline reads from the camera (v4l2src), uses jpegenc and then routes it to a TCP server on port 5000:
~/$ gst-launch v4l2src device=/dev/video0 ! videoscale ! video/x-raw-yuv,width=640,height=480 ! ffmpegcolorspace ! jpegenc ! tcpserversink host=127.0.0.1 port=5000
Laptop client command-line
On the client side, the tcpclientsrc reads from the network port, decodes using jpegdec and sends the output to the display (autovideosink):
~/$ gst-launch tcpclientsrc host=127.0.0.1 port=5000 ! jpegdec ! autovideosink
Amply armed, I was able to take this information and translate it into a fully accelerated pipeline on the SABRE Lite:
i.MX6 server command-line
# gst-launch mfw_v4lsrc capture-width=1280 capture-height=720 capture-mode=4 ! vpuenc codec=12 ! tcpserversink host=127.0.0.1 port=5000
Note the use of the two Freescale-provided elements:
- mfw_v4lsrc – Video For Linux source provided by Freescale for camera input, and
- vpuenc – Freescale-provided VPU-accelerated encoder
By using this hardware acceleration, CPU utilization on the i.MX6 is less than 5% for this 720P stream and piping the output over 1Gbps ethernet, there is no noticeable latency.
To examine the parameters for gstreamer elements, use the gst-inspect utility:
# gst-inspect mfw_v4lsrc MFW_GST_V4LSRC_PLUGIN 2.0.8 build on Aug 15 2012 14:09:19. Factory Details: Long name: v4l2 based camera src Class: Src/Video Description: Capture videos by using csi camera Author(s): Multimedia Team Rank: primary (256) Plugin Details: Name: v4lsrc.imx Description: v4l2-based csi camera video src Filename: /usr/lib/gstreamer-0.10/libmfw_gst_v4lsrc.so Version: 2.0.8 License: LGPL Source module: gst-fsl-plugins Binary package: Freescle Gstreamer Multimedia Plugins Origin URL: http://www.freescale.com ... Element Properties: ... capture-mode : set the capture mode of camera, please check the bsp release notes to decide which value can be applied, for example ov5460: ov5640_mode_VGA_640_480 = 0, ov5640_mode_QVGA_320_240 = 1, ov5640_mode_NTSC_720_480 = 2, ov5640_mode_PAL_720_576 = 3, ov5640_mode_720P_1280_720 = 4, ov5640_mode_1080P_1920_1080 = 5
I hope this miniature example helps kick-start your efforts to build real-world applications using i.MX6 and gstreamer. Contact us, or your local distributor FAE, or Timesys for details of how you can see this in action.