In diesem Abschnitt befassen wir uns mit zwei verschiedenen Strategien für die Verschlüsselung Ihre Medien und einige praktische Beispiele zur Verwendung mit FFmpeg und Shaka Packager. Die beiden Verschlüsselungsstrategien, die wir besprechen werden, sind Schlüssel löschen und mit einem Dienst wie Google Widevine. Beide Strategien sind eine Form der digitalen DRM, um festzulegen, was Nutzer mit Ihren Medien tun dürfen. Sie können jedoch das eine weniger sicher ist als das andere, da die Schlüssel für Authentifizierung. Daher ist ein DRM-Dienst möglicherweise sinnvoller.
Die primären DRM-Dienste für das Web sind Google Widevine, Microsoft PlayReady. und Apple FairPlay. Wir werden jedoch nicht alle in diesem Artikel behandeln. Bei einer Ausrichtung auf alle modernen Browser werden Sie wahrscheinlich drei DRM-Dienste nutzen.
Die Konvertierung und Verschlüsselung erfolgt mit folgenden Anwendungen:
Schlüsselverschlüsselung löschen
Zunächst sollten Sie genau wissen, was Klarheitsschlüssel ist und was nicht, verwenden. Wenn Sie einen bestehenden DRM-Dienst nicht nutzen möchten und ist die grundlegende Verschlüsselung Ihrer Medien eine praktikable Option. Aber Beachten Sie, dass diese Art der Verschlüsselung nicht das gleiche Maß an Daten bietet, wie die Nutzung eines DRM-Dienstes. Das liegt daran, dass das Schlüssel/Wert-Paar im Gegensatz zu verschlüsselten Schlüsseln, die von einem Entschlüsselungsschlüssel, der auf einem Lizenzserver gespeichert ist. Außerdem sendet „Schlüssel löschen“ das Schlüssel/Wert-Paar als Nur-Text. Der Schlüssel wird während der Verschlüsselung Ihrer Medien zu entschlüsseln, ist kein Geheimnis.
Schlüssel erstellen
Sie können dieselbe Methode verwenden, um einen Schlüssel für DASH und HLS zu erstellen. Verwenden Sie dazu OpenSSL Mit dem folgenden Befehl wird ein Verschlüsselungsschlüssel aus 16 Hexadezimalwerten erstellt.
openssl rand -hex 16 > media.key
IV erstellen
Als Nächstes können wir einen Initialisierungsvektor (IV) generieren.
openssl rand -hex 16
6143b5373a51cb46209cfed0d747da66
Mit Klarschlüssel verschlüsseln
Im folgenden Beispiel wird Shaka Packager mit Rohschlüsseln verwendet, wobei keys
und
key_ids
werden Shaka Packager direkt zur Verfügung gestellt. Lesen Sie die Dokumentation zu
weitere Beispiele.
Verwenden Sie für das Flag key
den zuvor erstellten Schlüssel, der im media.key
gespeichert ist.
-Datei. Achten Sie bei der Eingabe in die Befehlszeile darauf, die zugehörigen
Leerzeichen. Wiederholen Sie für das Flag key_id
den Wert media.id
oder verwenden Sie den Wert IV
die oben generiert wurden.
packager \
input=glocken.mp4,stream=audio,output=glockena.m4a \
input=glocken.mp4,stream=video,output=glockenv.mp4 \
--enable_fixed_key_encryption \
--keys label=audio:key=INSERT_AUDIO_KEY_HERE:key_id=INSERT_AUDIO_KEY_ID_HERE,label=video:key=INSERT_VIDEO_KEY_HERE:key_id=INSERT_VIDEO_KEY_ID_HERE
Datei mit Schlüsselinformationen erstellen
Zum Verschlüsseln für HLS benötigen Sie zusätzlich zur Schlüsseldatei eine Schlüsselinformationsdatei. A
Datei mit den Schlüsselinformationen ist eine Textdatei im folgenden Format. Es sollte die
Erweiterung .keyinfo
. Beispiel: encrypt.keyinfo
key URI
key file path
private key
Im Schlüssel-URI befindet sich der oben erstellte media.key
die sich auf Ihrem Server befindet. Der Pfad der Schlüsseldatei gibt den Speicherort in Relation zum Schlüssel an.
Informationsdatei. Der private Schlüssel ist schließlich der Inhalt von media.key
.
oder der zuvor erstellten IV-Datei. Beispiel:
https://example.com/keys/media.key
/path/to/media.key
6143b5373a51cb46209cfed0d747da66
Für HLS verschlüsseln
packager \
'input=input.mp4,stream=video,segment_template=output$Number$.ts,playlist_name=video_playlist.m3u8' \
'input=input.mp4,stream=audio,segment_template=output_audio$Number$.ts,playlist_name=audio_playlist.m3u8,hls_group_id=audio,hls_name=ENGLISH' \
--hls_master_playlist_output="master_playlist.m3u8" \
--hls_base_url="http://localhost:5000/"
Dieser Befehl akzeptiert einen Schlüssel mit 16 oder 32 Zeichen.
ffmpeg -i myvideo.mov -c:v libx264 -c:a aac -hls_key_info_file encrypt.keyinfo myvideo.m3u8
Widevine-Verschlüsselung
Jetzt wissen Sie, was die Klarschlüsselverschlüsselung ist und wann Sie sie verwenden sollten. Aber wann sollten Sie einen DRM-Dienst für zusätzliche Sicherheit nutzen? Hier wird Widevine oder ein anderer Dienst werden dazu verwendet, Ihre Medien sicher zu verschlüsseln und zu entschlüsseln. Widevine unterstützt MPEG-DASH und HLS und ist ein DRM von Google. Widevine wird in der Webversion von Google Chrome und Firefox verwendet Browser, Android MediaDRM, Android TV und andere Geräte der Unterhaltungselektronik, die Encrypted Media Extensions und Media Source Extensions, mit denen Widevine Inhalte entschlüsselt
Mit Widevine verschlüsseln
In den meisten Beispielen in diesem Artikel wurde die Klarschlüsselverschlüsselung verwendet. Für Widevine die folgenden Optionen ersetzen.
--enable_fixed_key_encryption \
--enable_fixed_key_decryption \
--keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE
Alles im Demultiplexer-Befehl (demux) mit Ausnahme der Namen Ihrer Dateien und des
Das Flag --content-id
sollte genau aus dem Beispiel kopiert werden. --content-id
ist 16
oder 32 zufällige Hexadezimalziffern. Verwenden Sie anstelle Ihrer eigenen Schlüssel die hier bereitgestellten Schlüssel. Shaka lesen
Weitere Beispiele finden Sie in der Packager-Dokumentation zur Verwendung des Widevine Key Servers.
Demux (trennen) die Audio- und Videoinhalte, verschlüsseln die neuen Dateien und geben eine MPD-Datei (Media Presentation Description)
packager \ input=tmp_glocken.mp4,stream=video,output=glocken_video.mp4 \ input=tmp_glocken.mp4,stream=audio,output=glocken_audio.m4a \ --enable_widevine_encryption \ --key_server_url "https://license.uat.widevine.com/cenc/getcontentkey/widevine_test" \ --content_id "fd385d9f9a14bb09" \ --signer "widevine_test" \ --aes_signing_key "1ae8ccd0e7985cc0b6203a55855a1034afc252980e970ca90e5202689f947ab9" \ --aes_signing_iv "d58ce954203b7c9a9a9d467f59839249"
Remux (kombiniere) die Audio- und Videostreams. Wenn Sie ein Video verwenden ist dies möglicherweise nicht nötig.
ffmpeg -i glocken_video.mp4 -i glocken_audio.m4a -c copy glocke.mp4
Media-Conversion-Sequenz
In diesem Abschnitt werden die Befehle aufgeführt, die erforderlich sind, um von einer .mov
-Rohdatei in
verschlüsselte Assets, die für DASH oder HLS verpackt sind. Um das Ziel zu haben,
Wir konvertieren eine Quelldatei
in eine Bitrate von 8 MB und
1080p (1920 x 1080) hoch. Passen Sie diese Werte nach Bedarf an.
DASH/WebM
Konvertiere den Dateityp und den Codec.
Für diesen Befehl können Sie als Audio-Codec entweder
liborbis
oderlibopus
verwenden.ffmpeg -i glocken.mov -c:v libvpx-vp9 -c:a libvorbis -b:v 8M -vf setsar=1:1 -f webm tmp_glocken.webm
Erstellen Sie einen Klaren Schlüsselverschlüsselungsschlüssel.
openssl rand -hex 16 > media.key
Demux (trennen) die Audio- und Videoinhalte, verschlüsseln die neuen Dateien und geben eine MPD-Datei (Media Presentation Description)
packager \ input=tmp_glocken.webm,stream=video,output=glocken_video.webm \ input=tmp_glocken.webm,stream=audio,output=glocken_audio.webm \ --enable_fixed_key_encryption \ --enable_fixed_key_decryption \ --keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE \ --mpd_output glocken_webm_vod.mpd
Remux (kombiniere) die Audio- und Videostreams. Wenn Sie ein Video verwenden ist dies möglicherweise nicht nötig.
ffmpeg -i glocken_video.webm -i glocken_audio.webm -c copy glocken.webm
DASH/MP4
Konvertiere den Dateityp, den Video-Codec und die Bitrate.
ffmpeg -i glocken.mov -c:v libx264 -c:a aac -b:v 8M -strict -2 tmp_glocken.mp4
Erstellen Sie einen Klaren Schlüsselverschlüsselungsschlüssel.
openssl rand -hex 16 > media.key
Demux (trennen) die Audio- und Videoinhalte, verschlüsseln die neuen Dateien und geben eine MPD-Datei (Media Presentation Description)
packager \ input=tmp_glocken.mp4,stream=video,output=glocken_video.mp4 \ input=tmp_glocken.mp4,stream=audio,output=glocken_audio.m4a \ --enable_fixed_key_encryption \ --enable_fixed_key_decryption \ --keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE \ --mpd_output glocken_mp4_vod.mpd
Remux (kombiniere) die Audio- und Videostreams. Wenn Sie ein Video verwenden ist dies möglicherweise nicht nötig.
ffmpeg -i glocken_video.mp4 -i glocken_audio.m4a -c copy glocken.mp4
HLS/MP4
HLS unterstützt nur MP4. Daher müssen Sie zuerst einen MP4-Container konvertieren und unterstützten Codecs.
Konvertiere den Dateityp, den Video-Codec und die Bitrate.
ffmpeg -i glocken.mov -c:v libx264 -c:a aac -b:v 8M -strict -2 glocken.mp4
Erstellen Sie einen Klaren Schlüsselverschlüsselungsschlüssel.
openssl rand -hex 16 > media.key
Datei mit Schlüsselinformationen erstellen
packager \ 'input=glocken.mp4,stream=video,segment_template=output$Number$.ts,playlist_name=video_playlist.m3u8' \ 'input=glocken.mp4,stream=audio,segment_template=output_audio$Number$.ts,playlist_name=audio_playlist.m3u8,hls_group_id=audio,hls_name=ENGLISH' \ --hls_master_playlist_output="master_playlist.m3u8" \ --hls_base_url="http://localhost:5000/" \ --enable_fixed_key_encryption \ --enable_fixed_key_decryption \ --keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE
Das war eine Menge zu verdauen, aber Hoffentlich kannst du jetzt deine Medien verschlüsseln. mit Selbstvertrauen. Als Nächstes zeigen wir Ihnen, wie Sie Medien hinzufügen für Ihre Website.