RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是m3u8格式

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-17 11:24 ? 次閱讀

m3u8是什么格式?m3u8是蘋(píng)果公司推出的視頻播放標(biāo)準(zhǔn),是m3u的一種,只是編碼格式采用的是UTF-8。

使用m3u8格式文件主要因?yàn)榭梢詫?shí)現(xiàn)多碼率視頻的適配,視頻網(wǎng)站可以根據(jù)用戶的網(wǎng)絡(luò)帶寬情況,自動(dòng)為客戶端匹配一個(gè)合適的碼率文件進(jìn)行播放,從而保證視頻的流暢度。

m3u8準(zhǔn)確來(lái)說(shuō)是一種索引文件,使用m3u8文件實(shí)際上是通過(guò)它來(lái)解析對(duì)應(yīng)的放在服務(wù)器上的視頻網(wǎng)絡(luò)地址,從而實(shí)現(xiàn)在線播放。

它將視頻切割成一小段一小段的ts格式的視頻文件,然后存在服務(wù)器中(現(xiàn)在為了減少I(mǎi)/o訪問(wèn)次數(shù),一般存在服務(wù)器的內(nèi)存中),通過(guò)m3u8解析出來(lái)路徑,然后去請(qǐng)求。

合并 ts 文件其實(shí)有很多種方法,有一些教程直接使用 cmd 的 copy 命令直接合并 ts 文件:

copy /b  movie*.ts movie_new.ts

這個(gè)方法雖然可以合并,但是無(wú)法轉(zhuǎn)化為 mp4 格式,而且也有可能出現(xiàn)視頻缺損的情況。因此本文將講解如何使用 ffmpeg 合并 ts 文件為mp4格式,使用 ffmpeg 也能有效防止視頻出現(xiàn)缺損的問(wèn)題。

1.準(zhǔn)備

開(kāi)始之前,你要確保Pythonpip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。

**(可選1) **如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。

安裝ffmpeg

**Mac ** (打開(kāi)終端(Terminal), 用 homebrew 安裝):

brew install ffmpeg --with-libvorbis --with-sdl2 --with-theora

Linux:

apt-get install ffmpeg libavcodec-extra

Windows:

  1. 進(jìn)入 http://ffmpeg.org/download.html#build-windows,點(diǎn)擊 windows 對(duì)應(yīng)的圖標(biāo),進(jìn)入下載界面點(diǎn)擊 download 下載按鈕,
  2. 解壓下載好的zip文件到指定目錄
  3. 將解壓后的文件目錄中 bin 目錄(包含 ffmpeg.exe )添加進(jìn) path 環(huán)境變量中
  4. DOS 命令行輸入 ffmpeg -version, 出現(xiàn)以下界面說(shuō)明安裝完成:

圖片

2.簡(jiǎn)單合并ts文件

使用 ffmpeg 合并一些 ts 文件非常簡(jiǎn)單,你只需要在終端輸入一行命令即可:

ffmpeg -f concat -i file_list.txt -c copy output.mp4

其中 file_list.txt 為如下格式文本文件:

file 'input1.ts'
file 'input2.ts'
file 'input3.ts'

我們可以用 Python 腳本生成這個(gè) file_list.txt:

import os
filePath = "你的ts視頻存放路徑"
file_list = sorted(os.listdir(filePath))
with open("你的ts視頻存放路徑/file_list.txt","w+") as f:
    for file in file_list:
        f.write("file '{}'n".format(file))

注意,這個(gè) file_list.txt 需要和你的 ts 視頻存放在同一個(gè)目錄下,然后 cd 進(jìn)入此目錄,并執(zhí)行上面提到過(guò)的 ffmpeg 合并轉(zhuǎn)換命令:

ffmpeg -f concat -i file_list.txt -c copy output.mp4

3.解密處理

上面我們講的是沒(méi)有經(jīng)過(guò)加密的 ts 文件,這些文件下載后直接可以播放,但經(jīng)過(guò)AES-128加密后的文件下載后會(huì)無(wú)法播放,所以還需要進(jìn)行解密。

如何判斷是否需要加密?觀察視頻網(wǎng)站是否有m3u8的文件傳輸,下載下來(lái)并打開(kāi):

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:0

//這里是注釋,真實(shí)文件里不會(huì)有的,
//看看你的m3u8文件里有沒(méi)有這一行,如果有的話,這個(gè)m3u8文件是加密的,請(qǐng)繼續(xù)往下看
//如果沒(méi)有這行的話,特別是沒(méi)有這個(gè)#EXT-X-KEY,那么恭喜你,這個(gè)m3u8沒(méi)有加密,你直接按本文教程第二點(diǎn)合并即可
#EXT-X-KEY:METHOD=AES-128,URI="http://www.example.com/20180125/key.key"


#EXTINF:12.5,
//下面的這個(gè)其實(shí)才是視頻真正的地址,你放在瀏覽器地址欄上直接回車(chē)是可以直接下載的
//不過(guò)這樣的鏈接在m3u8文件里會(huì)有很多,建議使用工具下載(迅雷)、ffmpeg、vlc等
//這里還可能出現(xiàn)GBDYO3576000.ts這種情況,其實(shí)是把前面的路徑省略了,可根據(jù)m3u8文件的路徑自行加上
http://www.example.com/20180125/GBDYO3576000.ts
#EXTINF:12.5,
http://www.example.com/20180125/GBDYO3576001.ts
#EXTINF:12.5,
http://www.example.com/20180125/GBDYO3576002.ts

如果你的文件是加密的,那么你還需要一個(gè)key文件,Key文件下載的方法和m3u8文件類似,如下所示 key.key 就是我們需要下載的 key 文件,并注意這里 m3u8 有2個(gè),需要使用的是像上面一樣存在 ts 文件超鏈接的 m3u8 文件:

圖片

下載所有 ts 文件,將下載好的所有的 ts 文件、m3u8、key.key 放到一個(gè)文件夾中,將 m3u8 文件改名為 index.m3u8,將 key.key 改名為 key.m3u8 。更改 index.m3u8 里的 URL,變?yōu)槟惚镜芈窂降?key 文件,將所有 ts 也改為你本地的路徑,如下所示:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="e:/20180125/key.m3u8"
#EXTINF:12.5,
e:/20180125/GBDYO3576000.ts
#EXTINF:12.5,
e:/20180125/GBDYO3576001.ts
#EXTINF:12.5,
e:/20180125/GBDYO3576002.ts

然后用ffmpeg進(jìn)行合并:

ffmpeg -allowed_extensions ALL -i index.m3u8 -c copy new.mp4

這樣就大功告成了!我們成功解密并使用 ffmpeg 合并了這些 ts 視頻片段,實(shí)際應(yīng)用場(chǎng)景可能和這不一樣,希望我們這篇文章能起到拋磚引玉的作用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 視頻
    +關(guān)注

    關(guān)注

    6

    文章

    1942

    瀏覽量

    72884
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9123

    瀏覽量

    85323
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    940

    瀏覽量

    54814
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    11行代碼爬取愛(ài)奇藝視頻,m3u8格式視頻爬蟲(chóng)教程_第3節(jié) #硬聲創(chuàng)作季

    數(shù)據(jù)編程python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月02日 00:40:46

    Python爬取A站m3u8格式的視頻_第3節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:20:39

    Python爬取m3u8格式流媒體視頻教程_第3節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:36:33

    Python爬取m3u8格式視頻完整教程_第1節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:44:05

    Python爬取m3u8格式視頻完整教程_第2節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:44:55

    Python爬取m3u8格式視頻完整教程_第3節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:45:45

    Python爬取m3u8格式視頻完整教程_第4節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:46:36

    Python爬取m3u8格式視頻完整教程_第5節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:47:26

    Python爬取m3u8格式視頻完整教程_第6節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:48:16

    Python爬取m3u8格式視頻完整教程_第7節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 16:49:06

    Python爬取m3u8格式視頻完整教程_第7節(jié) #硬聲創(chuàng)作季

    python爬蟲(chóng)
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 17:14:51

    Python爬取騰訊視頻m3u8格式視頻數(shù)據(jù)_第3節(jié) #硬聲創(chuàng)作季

    數(shù)據(jù)代碼python
    充八萬(wàn)
    發(fā)布于 :2023年08月04日 22:05:20

    什么是m3u8格式

    m3u8是什么格式?m3u8是蘋(píng)果公司推出的視頻播放標(biāo)準(zhǔn),是m3u的一種,只是編碼格式采用的是UTF-8
    的頭像 發(fā)表于 10-31 15:59 ?3.4w次閱讀
    什么是<b class='flag-5'>m3u8</b><b class='flag-5'>格式</b>
    RM新时代网站-首页