視訊切片
最近做了一個處理視訊過大卡頓問題。公司要求,視訊需要高保真,高保真的情況下,視訊會很大,載入很慢,出現卡頓。壓縮視訊可以緩解這個問題,但是視訊清晰度就會降低。所以利用ffmpeg來處理視訊,將視訊切成很多個小片段,將視訊地址生成m3u8索引檔案。ffmpeg有很多強大的功能,大家沒事可以去官網瞭解相關內容
1安裝ffmpeg
環境:centos 6 linux 系統
1、安裝yasm yasm 是x86平臺的一個彙編優化器, 可以加快ffmpeg x264的編譯 下載地址:yasm.tortall.net/releases/Release1.... #tar xf yasm-1.3.0.tar.gz #cd yasm-1.3.0 #./configure #make && make install
2、安裝依賴包 #yum install libart_lgpl libass-devel freetype-devel opus-devel libvorbis-devel libvpx-devel -y
3、安裝x264 H.264是ITU(International Telecommunication Union,國際通訊聯盟)和MPEG(Motion Picture Experts Group,運動影像專家組) 聯合制定的視訊編碼標準。而x264是一個開源的H.264/MPEG-4 AVC視訊編碼函式庫[1] ,是最好的有損視訊編碼器 #wget download.videolan.org/x264/snapshot... #tar xvf last_stable_x264.tar.bz2 #cd x264-snapshot-20171114-2245-stable/ #./configure –enable-shared #make && make install
4、安裝x265 x265是一個用於編碼符合高效率視訊編碼(HEVC/H.265)標準的視訊的開源自由軟體及函式庫。x265與x264專案類似 x265使用GNU通用公共許可證(GPL)2授權或商業許可證授權提供 下載地址:ftp.videolan.org/pub/videolan/x265/ #tar xf x265_2.5.tar.gz #cd x265_2.5/build/linux #bash make-Makefiles.bash #等出現提示介面,輸入g 退出 #make #執行完成之後,庫便在當前目錄下生成了
補充:x264和x265的對比 265相當於對影像進行了有重點的編碼,從而降低了整體的位元速率,編碼效率就相應提高了。 畫質對比:265比264皮膚更細膩; 壓縮比對比:壓縮率更高,節省三分之一; 硬體支援:瑞芯微 RK3188 支援265的快播盒子已經上市; 同等畫質體積僅為三分之二、頻寬節省三分之一、畫質更細膩等諸多優勢; 解碼難度是264的3倍。 H.265的幀內預測模式支援33種方向(H.264只支援8種),並且提供了更好的運動補償處理和向量預測方法。 大有H.264當時的風采,壓縮效率依然提升了一倍,解碼難度輕描淡寫地增加了3倍
5、開始編譯安裝ffmpeg 下載地址:ffmpeg.org/download.html #tar xf ffmpeg-3.4.tar.bz2 #cd ffmpeg-3.4 #./configure –prefix=/opt/app/ffmpeg3 \ –enable-shared \ –enable-filter=delogo \ –enable-gpl \ –enable-libass \ –enable-libfreetype \ –enable-libopus \ –enable-libvorbis \ –enable-libvpx \ –enable-libx264 \ –enable-libx265 \ –enable-nonfree 如果出現類似error如下: WARNING: using libfdk without pkg-config WARNING: using libx264 without pkg-config ERROR: x265 not found using pkg-config If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the user@ffmpeg.org"">ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net. Include the log file “ffbuild/config.log” produced by configure as this will help solve the problem.
原因是需要設定PKG_CONFIG_PATH,通過pkg-config去指定路徑自動尋找需要連結的依賴庫,解決方法如下: #export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH (此路徑為.pc檔案所在路徑),可使用 #echo $PKG_CONFIG_PATH 檢視 /usr/local/lib/pkgconfig 然後重新編譯就ok了! 繼續執行 #make #需要較長的時間,30分鐘左右 #make install
ffmpeg用法
ffmpeg -i 視訊連結地址 -codec copy -vbsf h264_mp4toannexb -map 0 -f segment -segment_list 建立m3u8檔案目錄地址\自定義檔名.m3u8 -segment_time 80 生成ts檔案地址\自定義檔名%03d.ts(跟m3u8地址保持一致)
2輔助功能,視訊切片上傳oss(這裡上傳oss比較慢,所以利用laravel框架中的佇列處理)需要安裝守護程式。形成程式常駐,保護佇列有序進行。
安裝 supervisor
sudo apt-get install supervisor
Supervisor 的配置檔案一般是放在 /etc/supervisor/conf.d 目錄下。在這個目錄中你可以建立任意數量的配置檔案來要求 Supervisor 怎樣監控你的程式。例如我們建立一個 laravel-worker.conf 來啟動與監控一個 queue:work程式:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs –sleep=3 –tries=3
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
當這個配置檔案被建立後,你需要更新 Supervisor 的配置,並用以下命令來啟動該程式:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
laravel 佇列相關文件
laravel-china.org/docs/laravel/5.5...
上傳oss 。 利用oss提供的方法
$oss = new OSS();
$oss->ossClient->setBucket($bucketName);
return $oss->ossClient->uploadFile($ossKey, $filePath, $options);
本作品採用《CC 協議》,轉載必須註明作者和本文連結