目錄
1、ffmpeg安裝教程
? ? ? ? 1.1 下載地址
? ? ? ? 1.2 ffmpeg環(huán)境配置
2、視頻分割成ts文件
? ? ? ? 2.1 準(zhǔn)備mp4文件
? ? ? ? 2.2 打開當(dāng)前目錄cmd命令窗口
3、根據(jù)m3u8文件合并ts文件
? ? ? ? 3.1 準(zhǔn)備文件
? ? ? ? 3.2 輸入命令
4、視頻切片與加密
? ? ? ? 4.1 下載安裝openssl
?? ? ? ? 4.2 配置openssl
? ? ? ? 4.3 生成密鑰
? ? ? ? 4.4 生成IV
? ? ? ? 4.5 編寫keyinfo文件
? ? ? ? 4.6 切片與加密命令
? ? ? ? ?4.7? m3u8文件解釋
5、解密與合并
? ? ? ? 5.1 文件準(zhǔn)備(來自第四部分)
? ? ? ? 5.2??解密合并命令
1、ffmpeg安裝教程
? ? ? ? 1.1 下載地址
????????????????Releases · BtbN/FFmpeg-Builds (github.com)
? ? ? ? 1.2 ffmpeg環(huán)境配置
? ? ? ? ? ? ? ? 復(fù)制ffmpeg解壓后的路徑
? ? ?
? ? ? ? ? ? ? ? ?配置ffmpeg環(huán)境變量:高級系統(tǒng)設(shè)置>環(huán)境變量>雙擊系統(tǒng)變量Path>新建>粘貼>確認(rèn)
????????????????
?
????????????????文章來源地址http://www.zghlxwxcb.cn/news/detail-715003.html
2、視頻分割成ts文件
? ? ? ? 2.1 準(zhǔn)備mp4文件
? ? ? ? ? ? ? ? part.mp4
? ? ? ? 2.2 打開當(dāng)前目錄cmd命令窗口
????????????????
?
? ? ? ? ? ? ? ? 輸入命令:
ffmpeg -i part.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 part.m3u8
?
默認(rèn)的每片長度為 2 秒,m3u8 文件中默認(rèn)只保存最新的 5 條片的信息,導(dǎo)致最后播放的時候只能播最后的一小部分(直播的時候特別注意)。
-hls_time n 設(shè)置每片的長度,默認(rèn)值為 2,單位為秒。
-hls_list_size n 設(shè)置播放列表保存的最多條目,設(shè)置為 0 會保存有所片信息,默認(rèn)值為5。
-hls_wrap n 設(shè)置多少片之后開始覆蓋,如果設(shè)置為0則不會覆蓋,默認(rèn)值為0。這個選項能夠避免在磁盤上存儲過多的 片,而且能夠限制寫入磁盤的最多的片的數(shù)量。
-hls_start_number n 設(shè)置播放列表中 sequence number 的值為 number,默認(rèn)值為 0。
注意:播放列表的 sequence number 對每個 segment 來說都必須是唯一的,而且它不能和片的文件名(當(dāng)使用 wrap 選項時,文件名有可能會重復(fù)使用)混淆。
TS 文件是一種媒體的擴展名,它是日本高清攝像機拍攝下進行的封裝格式。
MPEG2-TS(Transport Stream“傳輸流”;又稱TS、TP、MPEG-TS 或 M2T)
是用于音效、圖像與數(shù)據(jù)的通信協(xié)定,最早應(yīng)用于DVD的實時傳送節(jié)目。
MPEG2-TS格式的特點就是要求從視頻流的任一片段開始都是可以獨立解碼的。
3、根據(jù)m3u8文件合并ts文件
? ? ? ? 3.1 準(zhǔn)備文件
????????????????
? ? ? ? 3.2 輸入命令
????????????????ffmpeg -i part.m3u8 -c copy 2.mp4
4、視頻切片與加密
? ? ? ? 4.1 下載安裝openssl
Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions (slproweb.com)
? ?
?? ? ? ? 4.2 配置openssl
? ? ? ? ? ? ? ? 復(fù)制安裝后的目錄如圖
????????????????
? ? ? ? ? ? ? ? ?配置openssl高級變量:高級系統(tǒng)設(shè)置>環(huán)境變量>雙擊系統(tǒng)變量Path>新建>粘貼>確認(rèn)
????????????????
?
? ? ? ? ? ? ? ? 測試
????????????????
? ? ? ? 4.3 生成密鑰
????????????????openssl rand 16 > [密鑰存放位置]
? ? ? ? ?命令: openssl rand 16 > R:\a_tast\encrypt.key
? ? ? ? 4.4 生成IV
? ? ? ? 命令:openssl rand -hex 16
? ? ? ? ? ? ? 得到一串字符串:354e640be9affa01868e6b2b7785b5d2
? ? ? ? 4.5 編寫keyinfo文件
? ? ? ? ? ? ? ?文件名:aa.keyinfo
http://localhost:8080/ld/encrypt.key
R:\a_tast\encrypt.key
354e640be9affa01868e6b2b7785b5d2
第一段:解密文件路徑,必須是URI,用來解密視頻文件,這里使用tomcat服務(wù)
第二段:是加密文件路徑
第三段:之前生成的IV
? ? ? ? 4.6 切片與加密命令
? ? ? ? ? ? ? ? 依然打開當(dāng)前目錄的cmd窗口如2.2,或者使用絕對路徑
ffmpeg -y -i 1.mp4 -c:v libx264 -c:a copy -f hls -hls_time 5 -hls_list_size 0 -hls_key_info_file aa.keyinfo -hls_playlist_type vod -hls_segment_filename part%d.ts part.m3u8
? ??
? ? ? ? ?4.7? m3u8文件解釋
????????????????
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="http://localhost:8080/ld/encrypt.key",IV=0x354e640be9affa01868e6b2b7785b5d2
#EXTINF:7.833333,
part0.ts
#EXTINF:3.600000,
part1.ts
#EXTINF:4.166667,
part2.ts
#EXTINF:6.400000,
part3.ts
#EXTINF:4.166667,
part4.ts
#EXTINF:4.166667,
part5.ts
#EXTINF:0.966667,
part6.ts
#EXT-X-ENDLIST
#EXTM3U M3U8文件頭,必須放在第一行;
#EXT-X-MEDIA-SEQUENCE 第一個TS分片的序列號,一般情況下是0,但是在直播場景下,這個序列號標(biāo)識直播段的起始位置; #EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION 每個分片TS的最大的時長;
#EXT-X-TARGETDURATION:10 每個分片的最大時長是 10s
#EXT-X-ALLOW-CACHE 是否允許cache;
#EXT-X-ALLOW-CACHE:YES
#EXT-X-ALLOW-CACHE:NO 默認(rèn)情況下是YES
#EXT-X-ENDLIST M3U8文件結(jié)束符;
#EXTINF extra info,分片TS的信息,如時長,帶寬等;一般情況下是
#EXTINF:<duration>,[<title>] 后面可以跟著其他的信息,逗號之前是當(dāng)前分片的ts時長,分片時長 移動要小于
#EXT-X-TARGETDURATION 定義的值;
#EXT-X-VERSION M3U8版本號
#EXT-X-DISCONTINUITY 該標(biāo)簽表明其前一個切片與下一個切片之間存在中斷。下面會詳解
#EXT-X-PLAYLIST-TYPE 表明流媒體類型;
#EXT-X-KEY 是否加密解析,
#EXT-X-KEY:METHOD=AES-128,URI="http://localhost:8080/ld/encrypt.key" 加密方式是AES-128,秘鑰需要請求http://localhost:8080/ld/encrypt.key,請求回來存儲在本地;
5、解密與合并
? ? ? ? 5.1 文件準(zhǔn)備(來自第四部分)
????????????????
? ? ? ? 5.2??解密合并命令
ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i part.m3u8 -c copy 2.mp4
? ? ? ? ? ? ? ? ?一定要確保m3u8里面的請求路徑能訪問到文章來源:http://www.zghlxwxcb.cn/news/detail-715003.html
????????????????
到了這里,關(guān)于ffmpeg教程:視頻切片與合并,加密與解密的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!