Flash Access: Live Video Protection

This post is also available in: Russian

live stream

As live streaming is gaining popularity, the necessity to protect the content from illegal copying and unauthorized use is also growing. In this post, we will describe how you can implement content protection based on Adobe Flash Media Server and Adobe Flash Access to further optimize your live streaming.
To set up the configuration, you’ll need to install and configure Flash Media Server and Flash Access 2.0. For online content encryption FMS has a built-in component called Live Packager. Here we will consider it in more detail. It is noteworthy that currently the only reliable technology to protect live video is the combination of HTTP Dynamic Streaming + DRM (RTMPE much less reliable). When you use HTTP DS to deliver live video, the data is delivered in short segments that can be encrypted using the standard VOD approach.

To store your live stream files, you can use NFS/CIFS based data storage.

To set the rules applied to your live stream passed to FMS, you can use the Event.xml configuration file. By default, it is located in the following directory:
applications/livepkgr/events/_definst_/liveevent/
Event.xml is drafted below (to use it, you’ll need a properly running Flash Access server)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<Event>
<EventID>liveevent</EventID> # Define the name of your live-event stream
<Recording>
# Set the live streams and define duration of fragments and
# segments
<FragmentDuration>1000</FragmentDuration>
<SegmentDuration>10000</SegmentDuration>
<ContentProtection enabled="true">  #Enable FA 2.0 encryption
<ProtectionScheme>FlashAccessV2</ProtectionScheme>
<FlashAccessV2>
<ContentID>livestream1</ContentID> #Define the live stream  name
<CommonKeyFile>common-key.bin</CommonKeyFile>
<LicenseServerURL>http://{IP}/flashaccessserver/prod</LicenseServerURL>
<TransportCertFile>denivip-ru-t.der</TransportCertFile>
<LicenseServerCertFile>denivip-ru-ls.der</LicenseServerCertFile>
<PackagerCredentialFile>denivip-ru-p.pfx</PackagerCredentialFile>
<PackagerCredentialPassword>*****</PackagerCredentialPassword>
<PolicyFile>ad-policy.pol</PolicyFile>
</FlashAccessV2>
</ContentProtection>
</Recording>
</Event>

Having configured the Event, you’ll need to define live streams in Manifest.xml. This is a configuration file used to generate f4m for the video player.

In this file, let’s define a single output stream called livestream1:

1
2
3
<manifest xmlns="http://ns.adobe.com/f4m/1.0">
<media streamId="livestream1" bitrate="1000" />
</manifest>

After reconfiguring is complete, you’ll need to restart the server.

To broadcast your streams to the FMS server, let’s use Adobe Flash Media Live Encoder 3.2. To generate streams, the video capture card will be used. Please note that to deliver video to iOS devices (iPad iPhone/iPod), you’ll need AAC codec for audio encoding. On MacOS, FMLE natively supports AAC without any plugin needed. However, under Windows you’ll need to additionally buy an AAC plugin.

As FMS URL, specify rtmp://fms.denivip.ru/livepkgr. In Stream options, enter livestream%i?adbe-live-event=liveevent&adbe-http-streaming-ver=1.0. Also, in Video options, specify the video stream bitrate you have set in the Manifest.xml file. To activate DVR, enable the “DVR Auto Record” option.
Now click the Start button to publish your stream to the FMS server. As a result, a file similar to MTYxMjAzMzAzMg=.stream will appear in the applications/livepkgr/events/_definst_/liveevent/ directory.
It should be noted that to organize streaming you’ll need servers of a sufficient capacity. Here are the recommendations for your Flash Media Server and Live Encoder.

FMS

  • Quad Core 2.4 GHz x 2
  • >8Gb of RAM
  • SAS/SSD 200Gb (RAID is optional)

In this configuration, FMS server can receive and encrypt live streams at the rate of up to 50-70 Mbps (depending on the number of streams and their bit rate).

Live Encoder

  • Quad Core 2.4Ghz
  • >4Gb of RAM

In this configuration, Live Encoder can broadcast three stable video streams of 10 Mbps. Often this is quite sufficient.

To deliver video segments, Apache2 Web server with f4fmodule installed is needed. You can find details of its settings in our previous posts. Optionally, you can use NGINX as a caching server (this is especially true if your streams support DVR).

For live stream playback, an open source Strobe Media Playback solution can be used (here is the project home page http://osmf.org/strobe_mediaplayback.html).

Now copy the source files of your player must to the server HTTP access directory. After that, open the player setup.html page.


Leave a Reply