W tej sekcji omówimy dwie strategie szyfrowania: Twoich mediów i kilka praktycznych przykładów, jak z nich korzystać w FFmpeg i Pakowanie Shaka. Dwie strategie szyfrowania, które omówimy, to Clear Key i korzystając z takiej usługi jak Google Widevine. Obie strategie stanowią zarządzanie prawami (DRM), które pozwalają kontrolować, co użytkownicy mogą robić z Twoimi multimediami. Pamiętaj jednak: jeden z nich jest mniej bezpieczny od drugiego ze względu na sposób przekazywania kluczy uwierzytelnianie i dlatego usługa DRM może okazać się bardziej przydatna.
Podstawowe usługi DRM w internecie to Google Widevine i Microsoft PlayReady. oraz Apple FairPlay, ale nie omówimy ich wszystkich w tym artykule. Jeśli jednak kierujesz kampanię na wszystkie nowoczesne przeglądarki, korzystania ze wszystkich 3 usług DRM.
Konwersja i szyfrowanie są wykonywane za pomocą tych aplikacji:
Wyczyść szyfrowanie klucza
Najpierw dobrze zastanów się, czym jest funkcja Clear Key. za jego pomocą. Gdy nie chcesz korzystać z istniejącej usługi DRM podstawowego szyfrowania multimediów, należy użyć klucza Clear Key. Ale: Pamiętaj, że ten typ szyfrowania nie zapewnia jak za pomocą jednej z usług DRM. Dzieje się tak, ponieważ para klucz-wartość jest niezaszyfrowane za pomocą innego klucza (w przeciwieństwie do zaszyfrowanych kluczy generowanych przez kluczami odszyfrowywania przechowywanych na serwerze licencji. Dodatkowo przycisk Clear Key wysyła pary klucz-wartość jako zwykły tekst. Jeśli więc szyfrujesz multimedia, klucz do odszyfrowywanie. To nie jest tajemnica.
Utwórz klucz
Aby utworzyć klucz na potrzeby zarówno DASH, jak i HLS, możesz użyć tej samej metody. Zrób to za pomocą OpenSSL. W ten sposób utworzysz klucz szyfrowania składający się z 16 wartości szesnastkowych.
openssl rand -hex 16 > media.key
Tworzenie kroplówki
Następnie możemy wygenerować wektor inicjujący (IV).
openssl rand -hex 16
6143b5373a51cb46209cfed0d747da66
Zaszyfruj z użyciem klucza czyszczenia
W poniższym przykładzie użyto narzędzia Shaka Packager z nieprzetworzonymi kluczami, gdzie keys
i
Dane key_ids
są przekazywane bezpośrednio do narzędzia Shaka Packager. Przeczytaj dokumentację
więcej przykładów.
W przypadku flagi key
użyj utworzonego wcześniej klucza, który jest przechowywany w media.key
. Jednak wprowadzając go w wierszu poleceń, pamiętaj, aby usunąć jej zawartość
odstępu. W przypadku flagi key_id
powtórz wartość media.id
lub użyj wartości IV.
wygenerowane powyżej.
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
Tworzenie pliku z kluczowymi informacjami
Do szyfrowania na potrzeby HLS potrzebujesz oprócz pliku klucza plik z informacjami o kluczu. O
plik z informacjami o kluczach jest plikiem tekstowym w formacie opisanym poniżej. Powinna mieć parametr
rozszerzenie .keyinfo
. Na przykład: encrypt.keyinfo
.
key URI
key file path
private key
Identyfikator URI klucza to miejsce, w którym znajduje się obiekt media.key
(utworzony powyżej).
na Twoim serwerze. Ścieżka pliku klucza to jego lokalizacja względem klucza
pliku informacyjnego. Kluczem prywatnym jest zawartość klucza media.key
lub utworzony wcześniej plik IV. Na przykład:
https://example.com/keys/media.key
/path/to/media.key
6143b5373a51cb46209cfed0d747da66
Szyfrowanie na potrzeby HLS
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/"
To polecenie obsługuje klucz o długości 16 lub 32 znaków.
ffmpeg -i myvideo.mov -c:v libx264 -c:a aac -hls_key_info_file encrypt.keyinfo myvideo.m3u8
Szyfrowanie Widevine
Teraz już wiesz, czym jest szyfrowanie za pomocą klucza czyszczenia i kiedy go używać. Kiedy jednak warto korzystać z usługi DRM, by zwiększyć bezpieczeństwo? Tutaj Widevine lub inna usługa będzie bezpiecznie szyfrowany i odszyfrowany multimedia. Widevine obsługuje pliki MPEG-DASH i HLS, to DRM od Google. Widevine używa przeglądarki Google Chrome i Firefox przeglądarek, Android MediaDRM, Android TV i innej elektroniki użytkowej, która Encrypted Media Extensions and Media Source Extensions, gdzie Widevine odszyfrowuje treści.
Szyfrowanie za pomocą Widevine
W większości przykładów w tym artykule użyto szyfrowania z czystym kluczem. Jednak w przypadku Widevine będzie chciał zastąpić
--enable_fixed_key_encryption \
--enable_fixed_key_decryption \
--keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE
Wszystkie elementy w poleceniu demultiplekser (demux) oprócz nazw plików i
Flaga --content-id
powinna być skopiowana dokładnie z przykładu. --content-id
ma 16 lat
lub 32 losowe cyfry szesnastkowe. Użyj podanych tutaj kluczy zamiast własnych. Przeczytaj Shaka
Dokumentacja programu pakującego na temat korzystania z serwera kluczy Widevine zawiera więcej przykładów.
Demuksuj (rozdziel) dźwięk i obraz, zaszyfruj nowe pliki i wygeneruj plik z opisem prezentacji multimedialnej (MediaPresentation description, MPD).
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"
Remusuj (łącz) strumienie audio i wideo. Jeśli używasz filmu może nie być konieczne wykonanie tej czynności.
ffmpeg -i glocken_video.mp4 -i glocken_audio.m4a -c copy glocke.mp4
Sekwencja konwersji multimediów
W tej sekcji wyświetlane są polecenia w kolejności potrzebne do przejścia z nieprzetworzonego pliku .mov
do
zaszyfrowanych zasobów w pakiecie na potrzeby DASH lub HLS. Aby osiągnąć cel
konwertujemy plik źródłowy do 8 MB w rozdzielczości
1080p (1920 x 1080). Dostosuj te wartości do swoich potrzeb.
DASH/WebM
Przekonwertuj typ pliku i kodek.
W tym poleceniu możesz użyć kodeka audio
liborbis
lublibopus
.ffmpeg -i glocken.mov -c:v libvpx-vp9 -c:a libvorbis -b:v 8M -vf setsar=1:1 -f webm tmp_glocken.webm
Utwórz klucz szyfrowania Clear Key.
openssl rand -hex 16 > media.key
Demuksuj (rozdziel) dźwięk i obraz, zaszyfruj nowe pliki i wygeneruj plik z opisem prezentacji multimedialnej (MediaPresentation description, MPD).
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
Remusuj (łącz) strumienie audio i wideo. Jeśli używasz filmu może nie być konieczne wykonanie tej czynności.
ffmpeg -i glocken_video.webm -i glocken_audio.webm -c copy glocken.webm
DASH/MP4
Skonwertuj typ pliku, kodek wideo i szybkość transmisji bitów.
ffmpeg -i glocken.mov -c:v libx264 -c:a aac -b:v 8M -strict -2 tmp_glocken.mp4
Utwórz klucz szyfrowania Clear Key.
openssl rand -hex 16 > media.key
Demuksuj (rozdziel) dźwięk i obraz, zaszyfruj nowe pliki i wygeneruj plik z opisem prezentacji multimedialnej (MediaPresentation description, MPD).
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
Remusuj (łącz) strumienie audio i wideo. Jeśli używasz filmu może nie być konieczne wykonanie tej czynności.
ffmpeg -i glocken_video.mp4 -i glocken_audio.m4a -c copy glocken.mp4
HLS/MP4
HLS obsługuje tylko MP4, więc najpierw musisz przekonwertować go na kontener MP4. obsługiwanych kodeków.
Skonwertuj typ pliku, kodek wideo i szybkość transmisji bitów.
ffmpeg -i glocken.mov -c:v libx264 -c:a aac -b:v 8M -strict -2 glocken.mp4
Utwórz klucz szyfrowania Clear Key.
openssl rand -hex 16 > media.key
Tworzenie pliku z kluczowymi informacjami
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
Trochę to zajęło, ale mam nadzieję, że teraz uda Ci się zaszyfrować multimedia pewni siebie. Następnie pokażemy Ci, jak dodać multimedia do w Twojej witrynie.