使用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章