之前把一個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
這時候提示了錯誤
意思是需要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版本了
接下來繼續安裝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