Difference between revisions of "RidgeRun gst-crypto GStreamer Plugin"

From RidgeRun Developer Connection
Jump to: navigation, search
(GStreamer 1.x)
m
 
(41 intermediate revisions by 7 users not shown)
Line 1: Line 1:
= Overview =
+
<seo title="GStreamer Plugin | GST-Crypto Plugin | RidgeRun" titlemode="replace" keywords="GStreamer, gst-crypto, GStreamer encrypt, GStreamer decrypt, gstcrypto, gst-crypto plugin, GStreamer plugin"  description="Use RidgeRun’s gst-crypto GStreamer plugin to easily encrypt or decrypt content passing through a GStreamer pipeline."></seo>
  
RidgeRun's ''gst-crypto'' plugin makes it easy to encrypt or decrypt content passing through a GStreamer pipeline. gst-crypto will take advantage of any available crypto hardware accelerators. gst-crypto is based on OpenSSL so any encryption technology supported by OpenSSL can be supported by gst-crypto. Currently, only aes-128-cbc cipher is support. ''gst-crypto'' source code has not yet been reviewed by experts for security deficiencies.
+
<br>
 +
{{Ambox
 +
|type=notice
 +
|issue='''Open-source project from Ridgerun. gst-crypto plugin makes it easy to encrypt or decrypt content passing through a GStreamer pipeline.'''
 +
|fix= <br>'''Please go to RidegRun [https://developer.ridgerun.com/wiki/index.php?title=Sponsor_Projects Sponsor Projects] page for more info on sponsoring this project'''
 +
}}
 +
<br>
  
== Features ==
+
<table>
 +
<tr>
 +
<td><div class="clear; float:right">__TOC__</div></td>
 +
<td valign=top>
 +
<td>
 +
{{GStreamer debug}}
 +
<td>
 +
<center>
 +
{{Sponsor Button}}
 +
{{ContactUs Button}}
 +
</center>
 +
</table>
  
* aes-128-cbc cipher support
+
== gst-crypto Overview ==
 +
 
 +
RidgeRun's ''gst-crypto'' plugin is a GStreamer plugin that makes it easy to encrypt or decrypt content passing through a [https://www.ridgerun.com/gstreamer GStreamer] pipeline.  gst-crypto will take advantage of any available crypto hardware accelerators.  gst-crypto is based on OpenSSL so any encryption technology supported by OpenSSL can be supported by gst-crypto. The plugin supports any encrypt/decrypt chiper that openssl support, only aes-128-cbc and aes-256-cbc ciphers have been validated.  ''gst-crypto'' source code has not yet been reviewed by experts for security deficiencies.
 +
 
 +
Also, gst-crypto does not support seeking and some mux/demuxers, please inquire in case this is needed. RidgeRun has solutions that support seeking while doing decrypting.
 +
 
 +
=== <u>gst-crypto GStreamer Plugin Features</u> ===
 +
 
 +
* aes-128-cbc and aes-256-cbc cipher support verified
 
* Password or key/iv setup
 
* Password or key/iv setup
 
* GStreamer 0.10.x support
 
* GStreamer 0.10.x support
 
* GStreamer 1.x support
 
* GStreamer 1.x support
  
== Example Use Cases ==
+
=== <u>Example Use Cases</u> ===
  
 
* Capture audio/video from a camera directly into an encrypted media file.
 
* Capture audio/video from a camera directly into an encrypted media file.
 
* Decrypt streaming audio/video and render to local display/speakers.
 
* Decrypt streaming audio/video and render to local display/speakers.
  
= Support =
+
== GStreamer Plugin Support ==
  
Modifications or extensions needed? Integration into other Embedded Linux Systems (e.g. Ubuntu, Yocto, ...)?
+
Please [[RidgeRun_gst-crypto_GStreamer_Plugin#Contact_Us | Contact RidgeRun]] for any modifications or extensions needed and Integration into other Embedded Linux Systems (e.g. Ubuntu, Yocto, ...).
  
* [https://www.ridgerun.com/www/index.php/contact-us.html Contact us]
+
== Build and run on a local Linux PC ==
 
 
= Build and run on a local Linux PC =
 
  
 
Tested on Ubuntu-14.04 64 bit:
 
Tested on Ubuntu-14.04 64 bit:
  
== Source code fetch ==
+
=== <u>Source code fetch</u> ===
  
 
  git clone git@github.com:RidgeRun/gst-crypto
 
  git clone git@github.com:RidgeRun/gst-crypto
 
  cd gst-crypto
 
  cd gst-crypto
  
=== GStreamer 0.10.x ===
+
==== GStreamer 1.x ====
 
 
git checkout release-0.10
 
 
 
=== GStreamer 1.x ===
 
  
 
  git checkout release-1.0
 
  git checkout release-1.0
Line 40: Line 59:
 
'''Note:''' There are tagged releases also.
 
'''Note:''' There are tagged releases also.
  
== Compilation ==
+
=== <u>Compilation</u> ===
  
 
  ./autogen.sh
 
  ./autogen.sh
  ./configure
+
  ./configure --libdir=/usr/lib/x86_64-linux-gnu/
  make
+
  make  
 
  sudo make install
 
  sudo make install
  
If you dont want to install into your system you can specify directory path with:
+
 
 +
The location of the plug-in can vary according to the system. The following table summarizes some standard locations for different setups
 +
 
 +
<html>
 +
<center>
 +
<table class="wikitable">
 +
  <tr>
 +
    <th>System</th>
 +
    <th>Libdir</th>
 +
  </tr>
 +
  <tr>
 +
    <td>Ubuntu</td>
 +
    <td>/usr/lib/x86_64-linux-gnu/</td>
 +
  </tr>
 +
<tr>
 +
  <td>Mac OSX (macports)</td>
 +
  <td>/opt/local/lib</td>
 +
</tr>
 +
<tr>
 +
  <td>RidgeRun SDK</td>
 +
  <td>/usr/lib/</td>
 +
</tr>
 +
<tr>
 +
  <td>Tegra X1/X2</td>
 +
  <td>/usr/lib/aarch64-linux-gnu </td>
 +
</tr>
 +
<caption>Table 1. Standard libdir configuration for different systems</caption>
 +
</table>
 +
</center>
 +
</html>
 +
 
 +
If you don't want to install it into your system you can specify the directory path with:
  
 
<pre>
 
<pre>
Line 53: Line 103:
 
</pre>
 
</pre>
  
 +
== gst-crypto Source code ==
  
= Source code =
+
=== <u>Location</u> ===
 
 
== Location ==
 
  
 
* [https://github.com/RidgeRun/gst-crypto Our GitHub repository]
 
* [https://github.com/RidgeRun/gst-crypto Our GitHub repository]
  
= RR SDK Integration =
+
== Example pipelines ==
  
One of our demo SDK's can be used:
+
=== <u>Test pipeline</u> ===
  
* [[Getting Started Guide for iMX6 SabreLite| i.MX6 SabreLite board]] - with crypto hardware acceleration
+
===== On Ubuntu after default installation to ''/usr/local/lib/gstreamer.0.10'' =====
* [[Getting Started Guide for DM368 DM365 LeopardBoard | DM368 Leopard board]] - no crypto hardware available
+
<pre>
 +
echo "This is a crypto test ... " > plain.txt && gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=plain.txt ! crypto mode=enc ! gst-crypto mode=dec ! filesink location=dec.txt && cat dec.txt
 +
</pre>
  
== GStreamer 0.10.x ==
+
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
 +
<pre>
 +
GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto  ! <some other elements>
 +
</pre>
  
'''Note:''' ''v0.10.0'' (''gst-crypto-0.10.0.tar.gz'') contains a bug that names the plugin ''gst-crypto'' instead of ''crypto''. Please keep that in mind when running the test pipelines.
+
==== GStreamer 1.x ====
  
=== Subdirectory structure ===
+
===== On Ubuntu after default installation to ''/usr/local/lib/gstreamer-1.0'' =====
 +
<pre>
 +
echo "This is a crypto test ... " > plain.txt && gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=plain.txt ! crypto mode=enc ! crypto mode=dec ! filesink location=dec.txt && cat dec.txt
 +
</pre>
  
├── fs
+
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
   ├── apps
+
<pre>
       ├── gst-crypto-0.10.0
+
GST_PLUGIN_PATH=src/.libs/ gst-launch-1.0 <some other elements> ! crypto  ! <some other elements>
        ├── Config
+
</pre>
        ├── Makefile
 
        └── metainfo
 
  
=== ''fs/apps/gst-crypto-0.10.0/Config'' ===
+
=== <u>Creating an encrypted video with the ''openssl'' tool and playback</u> ===
  
config FS_APPS_GST_CRYPTO
+
==== Download demo video ====
bool "gst-crypto-0.10.0"
+
<pre>
select FS_APPS_GSTREAMER_PLUGINS_BASE
+
wget http://blender-mirror.kino3d.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_surround.avi
help
+
</pre>
  This option enables RidgeRuns gst-crypto plugin.
 
  
=== ''fs/apps/gst-crypto-0.10.0/Makefile'' ===
+
==== Encrypt ====
 +
<pre>
 +
openssl enc -k RidgeRun -nosalt -aes-128-cbc -in big_buck_bunny_720p_surround.avi -out big_buck_bunny_720p_surround.avi.enc
 +
</pre>
  
#$L$
+
==== Playback ====
# Copyright (C) 2015 Ridgerun (http://www.ridgerun.com).
 
##$L$
 
 
PKG_URL=https://www.ridgerun.com/packages
 
PKG_TARBALL=gst-crypto-0.10.0.tar.gz
 
PKG_SHA1SUM=61fdeeeb81cc339764a0c637fcd486c3861fa1a8
 
 
include ../../../bsp/classes/rrsdk.class
 
include $(CLASSES)/gstreamer-plugin.class
 
  
=== ''fs/apps/gst-crypto-0.10.0/metainfo'' ===
+
===== Playback on a local display =====
  
TARGET_REQUIRED="gstreamer gst-plugins-base"
+
====== On Ubuntu after default installation to ''/usr/local/lib/gstreamer-0.10'' ======
 +
<pre>
 +
gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! ffdec_mpeg4 ! queue ! xvimagesink
 +
</pre>
  
=== RR SDK configuration ===
+
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
  
==== Execution ====
+
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
  
  `make env`
+
<pre>
make config
+
GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto ! <some other elements>
 +
</pre>
  
==== Configuration ====
+
====== GStreamer 1.x ======
  
File System Configuration  --->
+
====== On Ubuntu after default installation to ''/usr/local/lib/gstreamer-1.0'' ======
  Select target's file system software  --->
+
<pre>
    [*] gst-crypto-0.10.0
+
gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! decodebin ! queue ! xvimagesink
 +
</pre>
  
== GStreamer 1.x ==
+
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
  
=== Subdirectory structure ===
+
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
 +
<pre>
 +
GST_PLUGIN_PATH=src/.libs/ gst-launch-1.0 <some other elements> ! crypto  ! <some other elements>
 +
</pre>
  
├── fs
+
===== Streaming to a host =====
    ├── apps
 
        ├── gst-crypto-1.0
 
        ├── Config
 
        ├── Makefile
 
        └── metainfo
 
  
=== ''fs/apps/gst-crypto-1.0/Config'' ===
+
====== On the target board ======
  
config FS_APPS_GST_CRYPTO
+
'''On Ubuntu after default installation to ''/usr/local/lib/gstreamer-0.10'' '''
bool "gst-crypto-1.0"
+
<pre>
select FS_APPS_GSTREAMER_PLUGINS_BASE
+
gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! mpegtsmux ! queue ! udpsink port=3000 host=10.251.101.40 sync=true enable-last-buffer=false
help
+
</pre>
  This option enables RidgeRuns gst-crypto plugin.
 
  
=== ''fs/apps/gst-crypto-1.0/Makefile'' ===
+
'''Note:''' Replace the IP address according to your host system.
  
#$L$
+
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
# Copyright (C) 2015 Ridgerun (http://www.ridgerun.com).
 
##$L$
 
 
PKG_URL=https://www.ridgerun.com/packages
 
PKG_TARBALL=gst-crypto-1.0.tar.gz
 
PKG_SHA1SUM=321bf7787bd4a4667c2f150df84bf6a9c138a15a
 
 
include ../../../bsp/classes/rrsdk.class
 
include $(CLASSES)/gstreamer-plugin.class
 
  
=== ''fs/apps/gst-crypto-1.0/metainfo'' ===
+
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
 +
<pre>
 +
GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto ! <some other elements>
 +
</pre>
  
TARGET_REQUIRED="gstreamer gst-plugins-base"
+
====== GStreamer 1.x ======
  
=== RR SDK configuration ===
+
'''On Ubuntu after default installation to ''/usr/local/lib/gstreamer-1.0'' '''
 +
<pre>
 +
gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! mpegtsmux ! queue ! udpsink port=3000 host=10.251.101.40 sync=true enable-last-buffer=false
 +
</pre>
  
==== Execution ====
+
'''Note:''' Replace the IP address according to your host system.
  
`make env`
+
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
make config
 
 
 
==== Configuration ====
 
 
 
File System Configuration  --->
 
  Select target's file system software  --->
 
    [*] gst-crypto-1.0
 
 
 
= Example pipelines =
 
 
 
== Test pipeline ==
 
 
 
=== GStreamer 0.10.x ===
 
 
 
==== On RR SDK after regular installation to ''/usr/lib/gstreamer-0.10'' ====
 
 
 
echo "This is a crypto test ... " > plain.txt && gst-launch filesrc location=plain.txt ! crypto mode=enc ! crypto mode=dec ! filesink location=dec.txt && cat dec.txt
 
 
 
==== On Ubuntu after default installation to ''/usr/local/lib/gstreamer.0.10'' ====
 
 
 
echo "This is a crypto test ... " > plain.txt && gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=plain.txt ! crypto mode=enc ! gst-crypto mode=dec ! filesink location=dec.txt && cat dec.txt
 
  
 
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
 
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
 +
<pre>
 +
GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto  ! <some other elements>
 +
</pre>
  
GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto  ! <some other elements>
+
===== On the host =====
 +
<pre>
 +
gst-launch udpsrc port=3000 ! mpegtsdemux ! queue ! decodebin ! fpsdisplaysink sync=true async=false
 +
</pre>
  
=== GStreamer 1.x ===
+
=== <u>Encoding/Decoding Playback Pipelines</u> ===
  
==== On RR SDK after regular installation to ''/usr/lib/gstreamer-1.0'' ====
+
==== GStreamer 1.0 ====
  
echo "This is a crypto test ... " > plain.txt && gst-launch-1.0  filesrc location=plain.txt ! crypto mode=enc ! crypto mode=dec ! filesink location=dec.txt && cat dec.txt
+
* TS - encrypting with gstcrypto
  
==== On Ubuntu after default installation to ''/usr/local/lib/gstreamer-1.0'' ====
+
<pre>
 +
gst-launch-1.0 -e videotestsrc is-live=true !  x264enc  ! queue ! h264parse ! mpegtsmux !  filesink location=test.ts sync=true
 +
</pre>
  
echo "This is a crypto test ... " > plain.txt && gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=plain.txt ! crypto mode=enc ! crypto mode=dec ! filesink location=dec.txt && cat dec.txt
+
<pre>
 +
gst-launch-1.0 filesrc location=test.ts ! crypto mode=enc ! filesink location=test.ts.enc
 +
</pre>
  
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
+
<pre>
 +
gst-launch-1.0 filesrc location=test.ts.enc ! crypto mode=dec ! queue ! tsdemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
 +
</pre>
  
GST_PLUGIN_PATH=src/.libs/ gst-launch-1.0 <some other elements> ! crypto  ! <some other elements>
+
* AVI - encrypting with gstcrypto
  
== Creating a encrypted video with the ''openssl'' tool and playback ==
+
<pre>
 +
gst-launch-1.0 videotestsrc is-live=true num-buffers=300 ! "video/x-raw,width=(int)1280,height=(int)720,framerate=(fraction)30/1" ! x264enc ! avimux ! filesink location=test.avi
 +
</pre>
  
=== Download demo video ===
+
<pre>
 +
gst-launch-1.0 filesrc location=test.avi ! crypto mode=enc ! filesink location=test.avi.enc
 +
</pre>
  
wget http://blender-mirror.kino3d.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_surround.avi
+
<pre>
 +
gst-launch-1.0 filesrc location=test.avi.enc ! crypto mode=dec ! queue ! avidemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
 +
</pre>
  
=== Encrypt ===
+
* QuickTime - encrypting with gstcrypto
  
openssl enc -k RidgeRun -nosalt -aes-128-cbc -in big_buck_bunny_720p_surround.avi -out big_buck_bunny_720p_surround.avi.enc
+
<pre>
 +
wget https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_h264.mov
 +
</pre>
  
=== Playback ===
+
<pre>
 +
gst-launch-1.0 filesrc location=big_buck_bunny_480p_h264.mov ! crypto mode=enc ! filesink location=big_buck_bunny_480p_h264.mov.enc
 +
</pre>
  
==== Playback on a local display ====
+
<pre>
 +
gst-launch-1.0 filesrc location=big_buck_bunny_480p_h264.mov.enc ! crypto mode=dec ! filesink location=big_buck_bunny_480p_h264.mov.dec
 +
</pre>
  
===== GStreamer 0.10.x =====
+
<pre>
 +
gst-launch-1.0 filesrc location=big_buck_bunny_480p_h264.mov.dec ! qtdemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
 +
</pre>
  
====== On RR SDK after regular installation to ''/usr/lib/gstreamer-0.10'' ======
+
* TS - encrypting with openssl
  
gst-launch filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! ffdec_mpeg4 ! queue ! xvimagesink
+
<pre>
 +
gst-launch-1.0 -e videotestsrc is-live=true ! x264enc  ! queue ! h264parse ! mpegtsmux ! filesink location=test.ts sync=true
 +
</pre>
  
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
+
<pre>
 +
openssl enc -k RidgeRun -nosalt -aes-128-cbc -in test.ts -out test.ts.enc
 +
</pre>
  
====== On Ubuntu after default installation to ''/usr/local/lib/gstreamer-0.10'' ======
+
<pre>
 +
gst-launch-1.0 filesrc location=test.ts.enc ! crypto mode=dec ! queue ! tsdemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
 +
</pre>
  
gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! ffdec_mpeg4 ! queue ! xvimagesink
+
* AVI - encrypting with openssl
  
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
+
<pre>
 +
gst-launch-1.0 videotestsrc is-live=true num-buffers=300 ! "video/x-raw,width=(int)1280,height=(int)720,framerate=(fraction)30/1" ! x264enc ! avimux ! filesink location=test.avi
 +
</pre>
  
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
+
<pre>
 +
openssl enc -k RidgeRun -nosalt -aes-128-cbc -in test.avi -out test.avi.enc
 +
</pre>
  
GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto ! <some other elements>
+
<pre>
 +
gst-launch-1.0 filesrc location=test.avi.enc ! crypto mode=dec ! queue ! avidemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
 +
</pre>
  
===== GStreamer 1.x =====
+
=== <u>Encoding/Decoding Livestream Pipelines</u> ===
  
====== On RR SDK after regular installation to ''/usr/lib/gstreamer-1.0'' ======
+
==== GStreamer 1.0 ====
  
gst-launch-1.0 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
+
* TS - Encrypting Camera livestream with GstCrypto to a file
 +
<pre>
 +
gst-launch-1.0 -e v4l2src device=/dev/video0 ! queue ! x264enc  ! queue ! h264parse ! mpegtsmux ! queue ! rndbuffersize min=4096 max=4096 !  crypto mode=enc ! filesink location=live.ts.enc
 +
</pre>
  
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
+
* TS - Decrypt encoded file from the camera livestream
 +
<pre>
 +
gst-launch-1.0 filesrc location=live.ts.enc blocksize=4096 ! crypto mode=dec ! queue ! tsdemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
 +
</pre>
  
====== On Ubuntu after default installation to ''/usr/local/lib/gstreamer-1.0'' ======
+
* TS - Decrypt encoded file to a video file
 +
<pre>
 +
gst-launch-1.0 filesrc location=live.ts.enc blocksize=4096 ! crypto mode=dec ! queue ! tsparse ! queue ! filesink location=live.ts sync=false
 +
</pre>
  
gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! decodebin ! queue ! xvimagesink
+
=== <u>Encoding/Decoding Udpstream</u> ===
  
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
+
==== GStreamer 1.0 ====
 +
===== H264 + Transport Stream =====
 +
* Server
 +
<pre>
 +
gst-launch-1.0 videotestsrc is-live=true pattern=ball ! x264enc ! h264parse ! mpegtsmux ! tsparse ! rndbuffersize min=4096 max=4096  ! queue  ! crypto mode=enc ! queue ! udpsink port=5000
 +
</pre>
  
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
+
* Receiver: Decrypt to a file
 +
<pre>
 +
gst-launch-1.0 udpsrc port=5000 buffer-size=4096 ! queue ! crypto mode=dec  ! queue  ! tsparse ! queue  ! filesink location=udpstream.ts
 +
</pre>
  
GST_PLUGIN_PATH=src/.libs/ gst-launch-1.0 <some other elements> ! crypto  ! <some other elements>
+
* Receiver: Save encrypted udpstream
 +
<pre>
 +
gst-launch-1.0 udpsrc port=5000 buffer-size=4096 ! queue ! filesink location=udpstream.ts.enc
 +
</pre>
  
==== Streaming to a host ====
+
===== Jpeg =====
 +
* Server
 +
<pre>
 +
gst-launch-1.0 videotestsrc is-live=true pattern=ball ! jpegenc ! queue ! rndbuffersize min=4096 max=4096  ! queue  ! crypto mode=enc  ! queue ! udpsink port=5000
 +
</pre>
  
===== On the target board =====
+
* Receiver: Decrypt to a display
 +
<pre>
 +
gst-launch-1.0 udpsrc port=5000 buffer-size=4096 ! queue ! crypto mode=dec  ! queue  ! jpegparse ! jpegdec  ! queue  ! xvimagesink sync=false
 +
</pre>
  
====== GStreamer 0.10.x ======
+
=== <u>Encoding/Decoding on the Fly</u> ===
  
'''On RR SDK after regular installation to ''/usr/lib/gstreamer-0.10'' '''
+
==== GStreamer 1.0 ====
 +
* Encoding, decoding and sending output to display in one pipeline
  
gst-launch filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! mpegtsmux ! queue ! udpsink port=3000 host=10.251.101.40 sync=true enable-last-buffer=false
+
<pre>
 +
gst-launch-1.0 videotestsrc is-live=true num-buffers=300 ! "video/x-raw,width=(int)1280,height=(int)720,framerate=(fraction)30/1" ! jpegenc ! queue ! rndbuffersize min=4096 max=4096 ! crypto mode=enc ! queue ! crypto mode=dec ! jpegparse  ! jpegdec  ! xvimagesink
 +
</pre>
  
'''Note:''' Replace the IP address according to your host system.
+
== Using Crypto Hardware Acceleration ==
  
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
+
Crypto Hardware Acceleration can be used transparently with the plugin
 +
and can be configured independently.
  
'''On Ubuntu after default installation to ''/usr/local/lib/gstreamer-0.10'' '''
+
There are some considerations to take into account:
  
gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! mpegtsmux ! queue ! udpsink port=3000 host=10.251.101.40 sync=true enable-last-buffer=false
+
* Does the MCU include a hardware crypto unit (e.g. CAAM on i.MX6)?
 +
* Which setup would result in a performance gain (e.g data block size on i.MX6)? 
 +
* Is the cipher to be used supported by the hardware crypto unit and the kernel driver? 
 +
* Is the kernel driver implemented efficiently? 
  
'''Note:''' Replace the IP address according to your host system.
+
Please check RidgeRun's [https://github.com/RidgeRun/gst-crypto GstCrypto Git Repository]
  
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
+
== Test pipelines for release2.0 ==
  
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
+
=== <u>Raw data file</u> ===
 +
'''Encode'''
 +
<pre>
 +
gst-launch-1.0 filesrc location=small-file.file  ! crypto mode=enc ! filesink location=small-file.file.enc
 +
</pre>
  
GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto ! <some other elements>
+
'''Decode'''
 +
<pre>
 +
gst-launch-1.0 filesrc location=small-file.file.enc  ! crypto mode=dec ! filesink location=output.dec
 +
</pre>
  
====== GStreamer 1.x ======
+
'''Notes:''' 1 byte file, content was verified before/after crypto encode/decode, data was not affected by encode/decode process
  
'''On RR SDK after regular installation to ''/usr/lib/gstreamer-1.0'' '''
+
=== <u>Big Buck Bunny avi file</u> ===
  
gst-launch-1.0 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! mpegtsmux ! queue ! udpsink port=3000 host=10.251.101.40 sync=true enable-last-buffer=false
+
'''Encode file with gst-crypto'''
 +
<pre>
 +
gst-launch-1.0 filesrc location=big_buck_bunny_1080p_surround.avi ! crypto mode=enc ! filesink location=big_buck_bunny_1080p_surround.avi.enc
 +
</pre>
  
'''Note:''' Replace the IP address according to your host system.
+
'''Decode and display'''
 +
<pre>
 +
gst-launch-1.0 filesrc location=big_buck_bunny_1080p_surround.avi.enc blocksize=4096 ! crypto mode=dec ! queue !  avidemux  ! avdec_mpeg4 ! xvimagesink
 +
</pre>
  
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
+
'''Encoding with openssl'''
 +
Decoding also work when using openssl for encoding
  
'''On Ubuntu after default installation to ''/usr/local/lib/gstreamer-1.0'' '''
+
'''Encode with openssl'''
 +
<pre>
 +
openssl enc -k RidgeRun -nosalt -aes-128-cbc -in big_buck_bunny_1080p_surround.avi -out openssl-enc-big_buck_bunny_1080p_surround.avi.enc
 +
</pre>
  
gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! mpegtsmux ! queue ! udpsink port=3000 host=10.251.101.40 sync=true enable-last-buffer=false
+
'''Decode and display'''
 +
<pre>
 +
gst-launch-1.0 filesrc location=openssl-enc-big_buck_bunny_1080p_surround.avi.enc blocksize=4096 ! crypto mode=dec ! queue ! avidemux ! avdec_mpeg4 ! xvimagesink
 +
</pre>
  
'''Note:''' Replace the IP address according to your host system.
+
'''Audio/video decode file'''
 +
Note: this pipeline can be optimized, just for testing.
 +
<pre>
 +
GST_DEBUG=3 gst-launch-1.0 filesrc location=big_buck_bunny_1080p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux name=demux  demux.video_0 ! 'video/mpeg, mpegversion=(int)4' ! queue ! avdec_mpeg4 ! xvimagesink async=false demux.audio_0 ! queue ! decodebin ! audioconvert ! alsasink async=false
 +
</pre>
  
'''Note:''' The default password is ''RidgeRun''. Change the password in the above ''openssl'' command and use the ''pass'' property of ''gst-crypto'' to use a different one.
+
'''iMX6 example pipelines '''
  
'''Note:''' You could also test the plugin without ''make install''. Just run the pipeline from the source tree like:
+
Tested on iMX6 Nitrogen6x board with RidgeRun SDK:
  
GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto  ! <some other elements>
+
'''Avi decrypt and playback'''
 +
<pre>
 +
gst-launch-1.0 filesrc location=/mnt/big_buck_bunny_1080p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux name=demux demux.video_0 ! 'video/mpeg, mpegversion=(int)4' ! queue ! vpudec ! imxv4l2sink name=videosink device=/dev/video17 async=false
 +
</pre>
  
===== On the host =====
+
'''iMX6 transport stream'''
 
+
<pre>
gst-launch udpsrc port=3000 ! mpegtsdemux ! queue ! decodebin ! fpsdisplaysink sync=true async=false
+
gst-launch-1.0 filesrc location=/mnt/test.ts.enc ! crypto mode=dec ! queue ! tsdemux  ! vpudec ! imxv4l2sink name=videosink device=/dev/video17 async=false
 
+
</pre>
= Using Crypto Hardware Acceleration =
 
 
 
Crypto Hardware Acceleration can be used transparently with the plugin
 
and can be configured independently.
 
 
 
There are some considerations to take into account:
 
 
 
* Does the MCU include a hardware crypto unit (e.g. CAAM on i.MX6)?
 
* Which setup would result in a performance gain (e.g data block size on i.MX6)? 
 
* Is the cipher to be used supported by the hardware crypto unit and the kernel driver? 
 
* Is the kernel driver implemented efficiently? 
 
 
 
See:
 
  
* [[RidgeRun af-alg-rr af_alg Autotools version]]
+
{{ContactUs}}
  
[[Category:GStreamer]][[Category:SdkAddOn]]
+
[[Category:GStreamer]]

Latest revision as of 09:57, 31 December 2021



Error something wrong.jpg Problems running the pipelines shown on this page?
Please see our GStreamer Debugging guide for help.

Error creating thumbnail: Unable to save thumbnail to destination

RR Contact Us.png

gst-crypto Overview

RidgeRun's gst-crypto plugin is a GStreamer plugin that makes it easy to encrypt or decrypt content passing through a GStreamer pipeline. gst-crypto will take advantage of any available crypto hardware accelerators. gst-crypto is based on OpenSSL so any encryption technology supported by OpenSSL can be supported by gst-crypto. The plugin supports any encrypt/decrypt chiper that openssl support, only aes-128-cbc and aes-256-cbc ciphers have been validated. gst-crypto source code has not yet been reviewed by experts for security deficiencies.

Also, gst-crypto does not support seeking and some mux/demuxers, please inquire in case this is needed. RidgeRun has solutions that support seeking while doing decrypting.

gst-crypto GStreamer Plugin Features

  • aes-128-cbc and aes-256-cbc cipher support verified
  • Password or key/iv setup
  • GStreamer 0.10.x support
  • GStreamer 1.x support

Example Use Cases

  • Capture audio/video from a camera directly into an encrypted media file.
  • Decrypt streaming audio/video and render to local display/speakers.

GStreamer Plugin Support

Please Contact RidgeRun for any modifications or extensions needed and Integration into other Embedded Linux Systems (e.g. Ubuntu, Yocto, ...).

Build and run on a local Linux PC

Tested on Ubuntu-14.04 64 bit:

Source code fetch

git clone git@github.com:RidgeRun/gst-crypto
cd gst-crypto

GStreamer 1.x

git checkout release-1.0

Note: There are tagged releases also.

Compilation

./autogen.sh
./configure --libdir=/usr/lib/x86_64-linux-gnu/
make 
sudo make install


The location of the plug-in can vary according to the system. The following table summarizes some standard locations for different setups

System Libdir
Ubuntu /usr/lib/x86_64-linux-gnu/
Mac OSX (macports) /opt/local/lib
RidgeRun SDK /usr/lib/
Tegra X1/X2 /usr/lib/aarch64-linux-gnu
Table 1. Standard libdir configuration for different systems

If you don't want to install it into your system you can specify the directory path with:

GST_PLUGIN_PATH=src/.libs/ gst-launch ....

gst-crypto Source code

Location

Example pipelines

Test pipeline

On Ubuntu after default installation to /usr/local/lib/gstreamer.0.10
echo "This is a crypto test ... " > plain.txt && gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=plain.txt ! crypto mode=enc ! gst-crypto mode=dec ! filesink location=dec.txt && cat dec.txt

Note: You could also test the plugin without make install. Just run the pipeline from the source tree like:

 GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto  ! <some other elements>

GStreamer 1.x

On Ubuntu after default installation to /usr/local/lib/gstreamer-1.0
echo "This is a crypto test ... " > plain.txt && gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=plain.txt ! crypto mode=enc ! crypto mode=dec ! filesink location=dec.txt && cat dec.txt

Note: You could also test the plugin without make install. Just run the pipeline from the source tree like:

GST_PLUGIN_PATH=src/.libs/ gst-launch-1.0 <some other elements> ! crypto  ! <some other elements>

Creating an encrypted video with the openssl tool and playback

Download demo video

wget http://blender-mirror.kino3d.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_surround.avi

Encrypt

openssl enc -k RidgeRun -nosalt -aes-128-cbc -in big_buck_bunny_720p_surround.avi -out big_buck_bunny_720p_surround.avi.enc

Playback

Playback on a local display
On Ubuntu after default installation to /usr/local/lib/gstreamer-0.10
gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! ffdec_mpeg4 ! queue ! xvimagesink

Note: The default password is RidgeRun. Change the password in the above openssl command and use the pass property of gst-crypto to use a different one.

Note: You could also test the plugin without make install. Just run the pipeline from the source tree like:

GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto  ! <some other elements>
GStreamer 1.x
On Ubuntu after default installation to /usr/local/lib/gstreamer-1.0
gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! decodebin ! queue ! xvimagesink

Note: The default password is RidgeRun. Change the password in the above openssl command and use the pass property of gst-crypto to use a different one.

Note: You could also test the plugin without make install. Just run the pipeline from the source tree like:

GST_PLUGIN_PATH=src/.libs/ gst-launch-1.0 <some other elements> ! crypto  ! <some other elements>
Streaming to a host
On the target board

On Ubuntu after default installation to /usr/local/lib/gstreamer-0.10

gst-launch --gst-plugin-path=/usr/local/lib/gstreamer-0.10 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! mpegtsmux ! queue ! udpsink port=3000 host=10.251.101.40 sync=true enable-last-buffer=false

Note: Replace the IP address according to your host system.

Note: The default password is RidgeRun. Change the password in the above openssl command and use the pass property of gst-crypto to use a different one.

Note: You could also test the plugin without make install. Just run the pipeline from the source tree like:

GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto  ! <some other elements>
GStreamer 1.x

On Ubuntu after default installation to /usr/local/lib/gstreamer-1.0

gst-launch-1.0 --gst-plugin-path=/usr/local/lib/gstreamer-1.0 filesrc location=big_buck_bunny_720p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux ! mpegtsmux ! queue ! udpsink port=3000 host=10.251.101.40 sync=true enable-last-buffer=false

Note: Replace the IP address according to your host system.

Note: The default password is RidgeRun. Change the password in the above openssl command and use the pass property of gst-crypto to use a different one.

Note: You could also test the plugin without make install. Just run the pipeline from the source tree like:

GST_PLUGIN_PATH=src/.libs/ gst-launch <some other elements> ! crypto  ! <some other elements>
On the host
gst-launch udpsrc port=3000 ! mpegtsdemux ! queue ! decodebin ! fpsdisplaysink sync=true async=false

Encoding/Decoding Playback Pipelines

GStreamer 1.0

  • TS - encrypting with gstcrypto
gst-launch-1.0 -e videotestsrc is-live=true !  x264enc  ! queue ! h264parse ! mpegtsmux !  filesink location=test.ts sync=true
gst-launch-1.0 filesrc location=test.ts ! crypto mode=enc ! filesink location=test.ts.enc
gst-launch-1.0 filesrc location=test.ts.enc ! crypto mode=dec ! queue ! tsdemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
  • AVI - encrypting with gstcrypto
gst-launch-1.0 videotestsrc is-live=true num-buffers=300 ! "video/x-raw,width=(int)1280,height=(int)720,framerate=(fraction)30/1" ! x264enc ! avimux ! filesink location=test.avi
gst-launch-1.0 filesrc location=test.avi ! crypto mode=enc ! filesink location=test.avi.enc
gst-launch-1.0 filesrc location=test.avi.enc ! crypto mode=dec ! queue ! avidemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
  • QuickTime - encrypting with gstcrypto
wget https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_h264.mov
gst-launch-1.0 filesrc location=big_buck_bunny_480p_h264.mov ! crypto mode=enc ! filesink location=big_buck_bunny_480p_h264.mov.enc
gst-launch-1.0 filesrc location=big_buck_bunny_480p_h264.mov.enc ! crypto mode=dec ! filesink location=big_buck_bunny_480p_h264.mov.dec
gst-launch-1.0 filesrc location=big_buck_bunny_480p_h264.mov.dec ! qtdemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
  • TS - encrypting with openssl
gst-launch-1.0 -e videotestsrc is-live=true !  x264enc  ! queue ! h264parse ! mpegtsmux !  filesink location=test.ts sync=true
openssl enc -k RidgeRun -nosalt -aes-128-cbc -in test.ts -out test.ts.enc
gst-launch-1.0 filesrc location=test.ts.enc ! crypto mode=dec ! queue ! tsdemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
  • AVI - encrypting with openssl
gst-launch-1.0 videotestsrc is-live=true num-buffers=300 ! "video/x-raw,width=(int)1280,height=(int)720,framerate=(fraction)30/1" ! x264enc ! avimux ! filesink location=test.avi
openssl enc -k RidgeRun -nosalt -aes-128-cbc -in test.avi -out test.avi.enc
gst-launch-1.0 filesrc location=test.avi.enc ! crypto mode=dec ! queue ! avidemux ! h264parse ! avdec_h264 ! queue ! xvimagesink

Encoding/Decoding Livestream Pipelines

GStreamer 1.0

  • TS - Encrypting Camera livestream with GstCrypto to a file
gst-launch-1.0 -e v4l2src device=/dev/video0 ! queue !  x264enc  ! queue ! h264parse ! mpegtsmux ! queue ! rndbuffersize min=4096 max=4096 !  crypto mode=enc ! filesink location=live.ts.enc
  • TS - Decrypt encoded file from the camera livestream
gst-launch-1.0 filesrc location=live.ts.enc blocksize=4096 ! crypto mode=dec ! queue ! tsdemux ! h264parse ! avdec_h264 ! queue ! xvimagesink
  • TS - Decrypt encoded file to a video file
gst-launch-1.0 filesrc location=live.ts.enc blocksize=4096 ! crypto mode=dec ! queue ! tsparse ! queue ! filesink location=live.ts sync=false

Encoding/Decoding Udpstream

GStreamer 1.0

H264 + Transport Stream
  • Server
gst-launch-1.0 videotestsrc is-live=true pattern=ball ! x264enc ! h264parse ! mpegtsmux ! tsparse ! rndbuffersize min=4096 max=4096  ! queue  ! crypto mode=enc ! queue ! udpsink port=5000 
  • Receiver: Decrypt to a file
gst-launch-1.0 udpsrc port=5000 buffer-size=4096 ! queue ! crypto mode=dec  ! queue  ! tsparse ! queue  ! filesink location=udpstream.ts
  • Receiver: Save encrypted udpstream
gst-launch-1.0 udpsrc port=5000 buffer-size=4096 ! queue ! filesink location=udpstream.ts.enc
Jpeg
  • Server
gst-launch-1.0 videotestsrc is-live=true pattern=ball ! jpegenc ! queue ! rndbuffersize min=4096 max=4096  ! queue  ! crypto mode=enc  ! queue ! udpsink port=5000
  • Receiver: Decrypt to a display
gst-launch-1.0 udpsrc port=5000 buffer-size=4096 ! queue ! crypto mode=dec  ! queue  ! jpegparse ! jpegdec  ! queue  ! xvimagesink sync=false

Encoding/Decoding on the Fly

GStreamer 1.0

  • Encoding, decoding and sending output to display in one pipeline
gst-launch-1.0 videotestsrc is-live=true num-buffers=300 ! "video/x-raw,width=(int)1280,height=(int)720,framerate=(fraction)30/1" ! jpegenc ! queue ! rndbuffersize min=4096 max=4096 ! crypto mode=enc ! queue  ! crypto mode=dec !  jpegparse  ! jpegdec  ! xvimagesink

Using Crypto Hardware Acceleration

Crypto Hardware Acceleration can be used transparently with the plugin and can be configured independently.

There are some considerations to take into account:

  • Does the MCU include a hardware crypto unit (e.g. CAAM on i.MX6)?
  • Which setup would result in a performance gain (e.g data block size on i.MX6)?
  • Is the cipher to be used supported by the hardware crypto unit and the kernel driver?
  • Is the kernel driver implemented efficiently?

Please check RidgeRun's GstCrypto Git Repository

Test pipelines for release2.0

Raw data file

Encode

gst-launch-1.0 filesrc location=small-file.file  ! crypto mode=enc ! filesink location=small-file.file.enc

Decode

gst-launch-1.0 filesrc location=small-file.file.enc  ! crypto mode=dec ! filesink location=output.dec

Notes: 1 byte file, content was verified before/after crypto encode/decode, data was not affected by encode/decode process

Big Buck Bunny avi file

Encode file with gst-crypto

gst-launch-1.0 filesrc location=big_buck_bunny_1080p_surround.avi ! crypto mode=enc ! filesink location=big_buck_bunny_1080p_surround.avi.enc

Decode and display

gst-launch-1.0 filesrc location=big_buck_bunny_1080p_surround.avi.enc blocksize=4096 ! crypto mode=dec ! queue !  avidemux  ! avdec_mpeg4 ! xvimagesink

Encoding with openssl Decoding also work when using openssl for encoding

Encode with openssl

openssl enc -k RidgeRun -nosalt -aes-128-cbc -in big_buck_bunny_1080p_surround.avi -out openssl-enc-big_buck_bunny_1080p_surround.avi.enc

Decode and display

gst-launch-1.0 filesrc location=openssl-enc-big_buck_bunny_1080p_surround.avi.enc blocksize=4096 ! crypto mode=dec ! queue !  avidemux  ! avdec_mpeg4 ! xvimagesink

Audio/video decode file Note: this pipeline can be optimized, just for testing.

GST_DEBUG=3 gst-launch-1.0 filesrc location=big_buck_bunny_1080p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux name=demux  demux.video_0 ! 'video/mpeg, mpegversion=(int)4' ! queue ! avdec_mpeg4 ! xvimagesink async=false demux.audio_0 ! queue ! decodebin ! audioconvert ! alsasink async=false

iMX6 example pipelines

Tested on iMX6 Nitrogen6x board with RidgeRun SDK:

Avi decrypt and playback

gst-launch-1.0 filesrc location=/mnt/big_buck_bunny_1080p_surround.avi.enc ! crypto mode=dec ! queue ! avidemux name=demux demux.video_0 ! 'video/mpeg, mpegversion=(int)4' ! queue ! vpudec ! imxv4l2sink name=videosink device=/dev/video17 async=false

iMX6 transport stream

gst-launch-1.0 filesrc location=/mnt/test.ts.enc ! crypto mode=dec ! queue ! tsdemux  ! vpudec ! imxv4l2sink name=videosink device=/dev/video17 async=false


RidgeRun Resources

Quick Start Client Engagement Process RidgeRun Blog Homepage
Technical and Sales Support RidgeRun Online Store RidgeRun Videos Contact Us

OOjs UI icon message-progressive.svg Contact Us

Visit our Main Website for the RidgeRun Products and Online Store. RidgeRun Engineering informations are available in RidgeRun Professional Services, RidgeRun Subscription Model and Client Engagement Process wiki pages. Please email to support@ridgerun.com for technical questions and contactus@ridgerun.com for other queries. Contact details for sponsoring the RidgeRun GStreamer projects are available in Sponsor Projects page. Ridgerun-logo.svg
RR Contact Us.png