日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg分解视频文件并加密

發布時間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg分解视频文件并加密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ffmpeg,可以將視頻分解成小塊,并根據密鑰進行內容加密。首先需要將密鑰寫入文件video.key。

還需要第二個文件,key_info來存儲是關鍵信息文件。它具有以下格式:

key URI key file path IV (optional)

例如:

http://example.com/video.key video.key

ffmpeg可以用這個hls_key_info參數來加密你的細分視頻:

ffmpeg -i input.mp4 -c copy -bsf:v h264_mp4toannexb -hls_time 10 -hls_key_info_file key_info playlist.m3u8

這將使用CBC模式的AES-128加密您的細分,并將相關標簽添加到播放列表:

#EXT-X-KEY:METHOD=AES-128,URI="http://example.com/video.key"

如果需要,您也可以手動加密細分openssl。這里是一個示例腳本,其中每個IV等于段索引:

#!/bin/bash ts_dir=/path/to/ts/ key_file=video.key openssl rand 16 > $key_file enc_key=$(hexdump -v -e '16/1 "%02x"' $key_file) pushd $ts_dir ts_cnt=$(ls *.ts | wc -l) ((ts_cnt--))i=0 for i in $(seq -f "%01g" 0 $ts_cnt); doiv=$(printf '%032x' $i)ts_file=segment-$i.tsecho [$i] $ts_fileopenssl aes-128-cbc -e -in $ts_file -out encrypted_${ts_file} -nosalt -iv $iv -K $enc_key done popd

另外一個可以參考的命令行例子:

ffmpeg -i input.mp4 -f segment -segment_times 10,20 -c copy -map 0 output02%d.mp4

以下信息來源于亞馬遜

內容保護

AES-128內容加密

許多不同的流協議已經認識到對內容保護的需求,這些協議已經以各種形式和風格增加了對內容保護的支持。協議的第一稿HLS規范中已經存在AES-128加密,將內容保護置于優先級列表中。實際上,HLS有兩種加密方案:

  • AES-128加密:這意味著使用 128位密鑰的高級加密標準對媒體段進行完全 加密。它還允許使用初始化向量來優化保護。

  • 樣本AES:在這種情況下,各個媒體樣本使用AES標準加密。使用此加密級別,流容器未完全加密。此外,加密樣本如何封裝,取決于片段的媒體格式。

實際上,AES-128是HLS中最常用的加密方法。這種方法通常也是使用標準流服務器和工具來實現的最簡單的方法。

這種AES-128保護有多安全?

處理內容保護的第一個問題通常是:“這種保護有多安全?為了理解這一點,我們來看看AES加密是什么。AES是一種對稱加密算法。它被設計為在硬件和軟件方面都是高效的。該算法在全球范圍內得到應用,被美國政府用作加密敏感數據的標準加密算法。此外,它是大多數DRM系統的基礎,例如Microsoft Playready,Widevine和Verimatrix。AES加密的使用最近也成為MPEG-DASH通用加密標準的一部分。一般來說,這個級別的AES加密可能很快就不會被破壞。

AES加密本身可以被聲明安全。但是,加密只是最弱點的安全。還需要看一下解密密鑰的安全性。這是許多DRM技術所關注的領域。他們認為關鍵保護至關重要,通常采用非常晦澀或復雜的方案來檢索解密密鑰。通過AES-128內容保護,密鑰檢索工作保持簡單,易于實現。它也留有足夠的自由使關鍵保護盡可能簡單或高級。

如何保護解密密鑰?

HLS規范僅提及密鑰檢索的一個方面:可以加載密鑰的URL應該是清單文件的一部分。保護此資源取決于發布商本身。大多數情況下,我們看到了許多不同的保護解密密鑰的方法:

  • 保護清單:這依賴于將URL隱藏到解密密鑰。它不提供高水平的安全性,因為URL可能泄漏或可能在網絡上被攔截。

  • 使用身份驗證Cookie:驗證Cookie可由玩家發送密鑰請求。這允許密鑰服務器檢查哪個用戶正在請求密鑰。如果用戶不允許訪問流,則不會返回密鑰。結果,只有具有正確認證的用戶才能接收解密密鑰。

  • 利用簽名的URL:通過為每個用戶提供唯一的清單,可以使用簽名的URL。然后,用戶特定的清單將包含一個包含認證令牌的解密密鑰的鏈接。然后,服務器可以檢查認證令牌,并確定是否可以訪問密鑰。

在實踐中使用AES-128加密?
這當然是AES-128加密在實踐中可以使用的問題。使用AES-128加密可以通過加密您的媒體文件,并使用清單文件中的EXT-X-KEY標簽進行信令。該標簽將URL發送到解密密鑰。它應放在第一個段之前,該段是用給定的密鑰加密的。這個標簽可以發生兩個極端:

  • 有一次在清單的頂部。這意味著所有段都使用相同的解密密鑰加密。在解密密鑰被攔截的情況下,整個流可以被解密。

  • 用不同的URL每個段之前。這種方法允許您使用不同的密鑰加密每個段。密鑰允許您解密單個段,其中只包含幾秒鐘的媒體信息。

  • 在這兩個極端之間,您可以自由選擇自己刷新加密密鑰的頻率。下面你可以找到一個示例清單,每兩個段可以旋轉加密密鑰:

    #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-KEY:METHOD = AES-128,URI = https://security.theoplayer.com/sequence-1.key” #EXTINF:10.0,http://media.theoplayer.com/video1/sequence-1-segment-1.ts #EXTINF:10.0,http://media.theoplayer.com/video1/sequence-1-segment-2.TS #EXT-X-KEY:METHOD = AES-128,URI = “https://security.theoplayer.com/sequence-2.key”#EXTINF:10.0,http://media.theoplayer.com/video1/sequence-2-segment-1.ts #EXTINF:10.0,http://media.theoplayer.com/video1/sequence-2-segment-2.ts #EXT-X-ENDLIST

    總結

    以上是生活随笔為你收集整理的ffmpeg分解视频文件并加密的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。