في هذا القسم، سنتناول استراتيجيتَين مختلفتَين لتشفير الوسائط، وبعض الأمثلة العملية حول كيفية استخدامهما مع 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
لقد كان هذا الشرح مكثّفًا، ولكن نأمل أن تتمكّن الآن من تشفير الوسائط بكل ثقة. سنوضّح لك بعد ذلك كيفية إضافة وسائط إلى موقعك الإلكتروني.