1. 程式人生 > >使用ffmpeg轉碼m3u8並播放

使用ffmpeg轉碼m3u8並播放

之前把一個MP4檔案入在雲伺服器,嘗試訪問,結果只能下載,不能訪問,主要還是想的太簡單了,鼓搗了一段時間後也沒去想了。後來發現很多視訊網站上的檔案源都是M3U8格式的,也沒去深入研究。
今天心血來潮又研究了一下,發現還是挺簡單的。可以使用ffmpeg工具將mp4格式的視訊切片再生成 m3u8視訊流。
m3u8簡介:
m3u8是蘋果公司開發的一項新型播放格式,這種播放格式支援目前市面的windows、androis、ios裝置主流的瀏覽器,同樣的視訊檔案既可以在flash環境播放,又能在無flash的html5環境播放,它的優勢還不止於此,它可以實現多種位元速率在不同網速下的自動切換,網速好自動切換高清晰度視訊,網速慢自動播放低清晰度檔案,還可以實現流加密(視訊檔案本身加密)、分段下載播放、任意時間點拖拽播放、隨機視訊檔案廣告插入等等優勢

接下來就開始做實驗了:
1、首先需要一個視訊檔案,我從網上下載了個種子檔案,利用FTP上傳到伺服器中,再使用種子下載工具將視訊下載下來
種子下載工具:tget,tget是一個簡單的命令列BT下載工具,可以用於BT種子和磁力連結的下載,tget原始碼: https://github.com/jeffjose/tget

yum install npm -y     #NPM(node package manager),通常稱為node包管理器。顧名思義,它的主要功能就是管理node包,包括:安裝、解除安裝、更新、檢視、搜尋、釋出等,相當於yum了,安裝這個主要是為下載tget
npm install -g t-get    #安裝tget
tget 種子檔名

接下來就等視訊下載完畢了
2、視訊下載完成,開始安裝ffmpeg
首先安裝額外的庫,不然一些功能用不了。我這裡就安裝了音訊和視訊庫

#音訊
wget https://nchc.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz #音訊庫
tar –xvzf  lame-3.100.tar.gz
cd lame-3.100
./configure
make
make install 
#視訊庫
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
bzip2 last_x264.tar.bz2
tar -xvf last_x264.tar
cd x264-snapshot-20181031-2245
./configure --enable-shared

這時候提示了錯誤
使用ffmpeg轉碼m3u8並播放
意思是需要nasm2.13版本的,要麼在後面加上--disable-asm,不過以防萬一,該裝的還是裝上的好

wget  http://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.xz
tar xvJf nasm-2.13.03.tar.xz 
cd nasm-2.13.03
./configure
make 
make install

現在nasm是2.13版本了
使用ffmpeg轉碼m3u8並播放
接下來繼續安裝X264

cd x264-snapshot-20181031-2245
./configure --enable-shared    #現在安裝沒有問題了
make
make install

下載安裝ffmpeg

wget https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2     #官網下載的是一個bz2檔案
bzip2 -dkv ffmpeg-4.0.2.tar.bz2     #沒有bzip2工具的話直接yum安裝,解壓出來的是tar檔案
tar -xvf ffmpeg-4.0.2.tar            
進入ffmpeg目錄,./configure,結果提示’nasm/yasm not found or too old. Use --disable-x86asm for a crippled build‘,這是因為yasm沒有安裝
yum install yasm -y
 ./configure --enable-libmp3lame --enable-libx264 --enable-gpl
make
make install

3、ffmpeg安裝完成

切片時提示錯誤:./ffmpeg: error while loading shared libraries: libx264.so.138: cannot open shared object file
解決方法: ffmpeg預設安裝目錄為“/usr/local/lib”,有些64位系統下軟體目錄則為“/usr/lib64”,編譯過程中可能會出現

“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等類似的錯誤,解決辦法是建立軟連結:

# ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0

參考文件:
https://blog.csdn.net/weiyuefei/article/details/51690902
https://blog.csdn.net/li_wen01/article/details/61420268