前言
平時開發過程中,如果客戶端需要播放視頻,我們經常的做法是給一個文件地址。比如是html端,使用video標簽,直接把視頻地址放上去就可以播放了。這樣的做法在高並發高訪問量的情況下,是會出現問題的。文件在硬盤上的讀寫連接數,網絡傳輸的帶寬,都是這種做法的瓶頸。
我們打開騰訊視頻,隨便打開一個電視,f12打開網絡請求界面,我們可以看到,視頻緩沖是分段加載的,每次緩沖都有個ts結尾的文件
然后在網上查詢視頻處理ts文件發現插件ffmpeg,ffmpeg 可以做很多操作,對視頻的轉碼,對視頻的截取,對音頻的截取都可做。下面就開始正題了,ffmpeg 的安裝配置
首先去官網根據自己的操作系統下載安裝包:https://ffmpeg.org/download.html
我自己使用的安裝包:windows:
鏈接:https://pan.baidu.com/s/1bHS-_laqtKdrBBY6u-r3Vw
提取碼:e9yv
centos :
鏈接:https://pan.baidu.com/s/1pkOkNlV88kaSmh1dIpsAtA
提取碼:u4l1
鏈接:https://pan.baidu.com/s/1GaawsgnBr-S0S2My2_Xuzw
提取碼:xnsu
windows 安裝
下載zip后,解壓到自己的目錄,並配置環境變量。
cmd執行 ffmpeg -version 有以下輸出即為安裝成功
centos7 部署
上傳安裝包至 /usr/local/ 下。
解壓文件: tar xvJf ffmpeg-4.1.tar.xz
重命名文件: mv ffmpeg-4.1 /user/local/ffmpeg
安裝yasm:回到主目錄:cd //
新建文件夾:mkdir yasm
解壓文件:tar zxvf yasm-1.3.0.tar.gz
進入文件夾:cd yasm-1.3.0
執行配置:./configure
編譯安裝:make && make install
回到FFmpeg目錄:cd /userl/local/ ffmpeg
執行配置命令:./configure --enable-shared --prefix=/usr/local/ffmpeg
執行make(執行時間較久): make
執行安裝:make install
修改文件/etc/ld.so.conf:vim /etc/ld.so.conf
文件末尾添加:/usr/local/ffmpeg/lib/
輸入ldconfig使修改生效
驗證是否安裝成功:/usr/local/ffmpeg/ffmpeg/ffmpeg -version
利用ffmpeg視頻轉換
命令:ffmpeg -i xxx.mp4 -f segment -segment_time 60 -segment_format mpegts -segment_list /home/higherlevel/video-folder/video_name.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 /home/higherlevel/video-folder/course-%04d.ts
這條命令可以使用java 執行腳本命令來執行。
這個是把xxx.mp4視頻切成功每60秒一個小的ts視頻的m3u8 文件
關於m3u8文件,其實就是多個ts文件的播放清單,某些瀏覽器或者播放器,可以直接解析這種文件,並把多個ts文件組合起來播放。
做到這一步,基本上核心功能都有了。剩下的就根據自己業務來設計系統架構。可以對ts文件做主從,負載均衡,這樣把一個大的視頻文件。分成多個小的ts文件。減少帶寬的性能消耗。避免出現性能問題。