في هذا القسم، سنتناول استراتيجيتَين مختلفتَين لتشفير الوسائط، وبعض الأمثلة العملية حول كيفية استخدامهما مع FFmpeg و Shaka Packager. إنّ استراتيجيتَي التشفير اللتين سنناقشهما هما Clear Key و استخدام خدمة مثل Google Widevine. وكلتا الاستراتيجيتَين هما شكل من أشكال إدارة الحقوق الرقمية (DRM) للتحكّم في الإجراءات التي يمكن للمستخدمين اتّخاذها مع الوسائط. ومع ذلك، يكون أحدهما أقل أمانًا من الآخر بطبيعته بسبب طريقة تمرير المفاتيح لأجل المصادقة، وهذا هو السبب في أنّ خدمة إدارة الحقوق الرقمية قد تكون أكثر منطقية.
خدمات إدارة الحقوق الرقمية الأساسية على الويب هي Google Widevine وMicrosoft PlayReady وApple FairPlay، ولكننا لن نتناولها جميعًا في هذه المقالة. ومع ذلك، إذا كنت تستهدِف جميع المتصفحات الحديثة، من المرجّح أن تستخدم جميع خدمات إدارة الحقوق الرقمية الثلاثة.
يتم إجراء عملية التحويل والتشفير باستخدام التطبيقات التالية:
تشفير مفتاح التشفير
أولاً، يجب أن يكون لديك فهم جيد لماهية تقنية Clear Key وميزاتها ومزاياها قبل استخدامها. إذا كنت لا تريد استخدام خدمة إدارة حقوق رقمية حالية وكنت تعتقد أنّه يمكن استخدام التشفير الأساسي لوسائطك، يمكنك استخدام Clear Key. يُرجى العلم أنّ هذا النوع من التشفير لا يقدّم المستوى نفسه من الأمان الذي يقدّمه استخدام إحدى خدمات إدارة الحقوق الرقمية. ويعود السبب في ذلك إلى أنّه لا يتم تشفير زوج المفتاح/القيمة باستخدام مفتاح آخر، على عكس المفاتيح المشفّرة التي يتم إنشاؤها باستخدام مفتاح فك تشفير يتم تخزينه على خادم ترخيص. بالإضافة إلى ذلك، تُرسِل تقنية Clear Key زوج المفتاح/القيمة كنص عادي، لذا أثناء تشفير الوسائط، لا يكون مفتاح فك التشفير سريًا.
إنشاء مفتاح
يمكنك استخدام الطريقة نفسها لإنشاء مفتاح لكل من DASH وHLS. يمكنك إجراء ذلك باستخدام OpenSSL. سيؤدي ما يلي إلى إنشاء مفتاح تشفير مكوّن من 16 قيمة سداسية عشرية.
openssl rand -hex 16 > media.key
إنشاء جدول بيانات
بعد ذلك، يمكننا إنشاء متجه إعداد (IV).
openssl rand -hex 16
6143b5373a51cb46209cfed0d747da66
التشفير باستخدام مفتاح محو
يستخدِم المثال التالي Shaka Packager مع مفاتيح غير مفسَّرة، حيث يتم تقديم keys
و
key_ids
إلى Shaka Packager مباشرةً. يمكنك الاطّلاع على المستندات للحصول على
مزيد من الأمثلة.
بالنسبة إلى العلامة key
، استخدِم المفتاح الذي تم إنشاؤه سابقًا والذي يتم تخزينه في ملف media.key
. ومع ذلك، عند إدخاله في سطر الأوامر، تأكَّد من إزالة
المساحة البيضاء. بالنسبة إلى العلامة key_id
، كرِّر قيمة media.id
أو استخدِم قيمة IV
المُنشأة أعلاه.
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
إنشاء ملف معلومات مفتاح
لتشفير المحتوى باستخدام بروتوكول HLS، تحتاج إلى ملف معلومات مفاتيح بالإضافة إلى ملف مفاتيح. ملف
معلومات المفتاح هو ملف نصي بالتنسيق أدناه. يجب أن يتضمّن .keyinfo
. على سبيل المثال: encrypt.keyinfo
.
key URI
key file path
private key
عنوان URL للمفتاح هو المكان الذي سيتم فيه
تثبيت media.key
(الذي تم إنشاؤه أعلاه) على خادمك. مسار ملف المفتاح هو موقعه بالنسبة إلى ملف ملف
المعلومات الخاص بالمفتاح. أخيرًا، المفتاح الخاص هو محتوى media.key
الملف نفسه، أو مفتاح البدء الذي أنشأته من قبل. على سبيل المثال:
https://example.com/keys/media.key
/path/to/media.key
6143b5373a51cb46209cfed0d747da66
التشفير لبروتوكول 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/"
سيقبل هذا الأمر مفتاحًا يتألف من 16 أو 32 حرفًا.
ffmpeg -i myvideo.mov -c:v libx264 -c:a aac -hls_key_info_file encrypt.keyinfo myvideo.m3u8
تشفير Widevine
أنت الآن تعرف ما هو تشفير Clear Key ومتى يتم استخدامه. ولكن متى يجب استخدام خدمة إدارة الحقوق الرقمية لتوفير أمان إضافي؟ في هذه الحالة، سيتم استخدام Widevine أو خدمة أخرى لتشفير الوسائط وفك تشفيرها بأمان. يتوافق Widevine مع MPEG-DASH و HLS، وهو نظام إدارة حقوق رقمية من Google. يستخدم متصفّحَا الويب Google Chrome وFirefox وAndroid MediaDRM وAndroid TV وأجهزة إلكترونيات المستهلك الأخرى التي تستخدم Encrypted Media Extensions وMedia Source Extensions تقنية Widevine لفك تشفير المحتوى.
التشفير باستخدام Widevine
استخدَمت معظم الأمثلة الواردة في هذه المقالة تشفير Clear Key. ومع ذلك، بالنسبة إلى Widevine، عليك استبدال الخيارات التالية.
--enable_fixed_key_encryption \
--enable_fixed_key_decryption \
--keys label=:key=INSERT_KEY_HERE:key_id=INSERT_KEY_ID_HERE
يجب نسخ كل شيء في الأمر demultiplexer (demux) باستثناء اسم ملفاتك والعلامة
--content-id
من المثال بالضبط. يتكوّن --content-id
من 16
أو 32 رقمًا سداسيًا عشوائيًا. استخدِم المفاتيح المقدَّمة هنا بدلاً من مفاتيحك الخاصة. اطّلِع على مستندات Shaka
Packager حول استخدام خادم مفاتيح Widevine للحصول على المزيد من الأمثلة.
فك ترميز (فصل) الصوت والفيديو، وتشفير الملفات الجديدة، وإخراج ملف وصف عرض الوسائط (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"
إعادة دمج (دمج) مصادر الصوت والفيديو إذا كنت تستخدم إطار عمل فيديو، قد لا تحتاج إلى إجراء ذلك.
ffmpeg -i glocken_video.mp4 -i glocken_audio.m4a -c copy glocke.mp4
تسلسل تحويل الوسائط
يعرض هذا القسم الأوامر المطلوبة بالترتيب للانتقال من ملف .mov
أولي إلى مواد عرض مشفّرة تم حزمها لتنسيق DASH أو HLS. لنوضّح لك الأمر، سنحوّل ملف مصدر إلى معدل نقل بيانات يبلغ 8 ميغابايت في الثانية بدرجة دقة
1080p (1920 x 1080). يمكنك تعديل هذه القيم حسب احتياجاتك.
DASH/WebM
حوِّل نوع الملف وبرنامج الترميز.
بالنسبة إلى هذا الطلب، يمكنك استخدام
liborbis
أوlibopus
لبرنامج ترميز الصوت.ffmpeg -i glocken.mov -c:v libvpx-vp9 -c:a libvorbis -b:v 8M -vf setsar=1:1 -f webm tmp_glocken.webm
أنشئ مفتاح تشفير للمفتاح الواضح.
openssl rand -hex 16 > media.key
فك ترميز (فصل) الصوت والفيديو، وتشفير الملفات الجديدة، وإخراج ملف وصف عرض الوسائط (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
إعادة دمج (دمج) مصادر الصوت والفيديو إذا كنت تستخدم إطار عمل فيديو، قد لا تحتاج إلى إجراء ذلك.
ffmpeg -i glocken_video.webm -i glocken_audio.webm -c copy glocken.webm
DASH/MP4
حوِّل نوع الملف وبرنامج ترميز الفيديو ومعدل نقل البيانات.
ffmpeg -i glocken.mov -c:v libx264 -c:a aac -b:v 8M -strict -2 tmp_glocken.mp4
أنشئ مفتاح تشفير للمفتاح الواضح.
openssl rand -hex 16 > media.key
فك ترميز (فصل) الصوت والفيديو، وتشفير الملفات الجديدة، وإخراج ملف وصف عرض الوسائط (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
إعادة دمج (دمج) مصادر الصوت والفيديو إذا كنت تستخدم إطار عمل فيديو، قد لا تحتاج إلى إجراء ذلك.
ffmpeg -i glocken_video.mp4 -i glocken_audio.m4a -c copy glocken.mp4
HLS/MP4
لا يتوافق بروتوكول HLS إلا مع MP4، لذا عليك أولاً التحويل إلى حاوية MP4 و برامج الترميز المتوافقة.
حوِّل نوع الملف وبرنامج ترميز الفيديو ومعدل نقل البيانات.
ffmpeg -i glocken.mov -c:v libx264 -c:a aac -b:v 8M -strict -2 glocken.mp4
أنشئ مفتاح تشفير للمفتاح الواضح.
openssl rand -hex 16 > media.key
إنشاء ملف معلومات مفتاح
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
لقد كان هذا الشرح مكثّفًا، ولكن نأمل أن يكون بإمكانك الآن تشفير الوسائط بكل ثقة. سنوضّح لك بعد ذلك كيفية إضافة وسائط إلى موقعك الإلكتروني.