使用FFmpeg將avi / mp4文件轉換成m3u8/ts文件(用於近時播放)

準備工作

  1. 下載 :ffmpeg-20180227-fa0c9d6-win64-static.zip,並解壓,FFmpeg下載地址
  2. 配置環境變量:在path中配置bin目錄 (例如:F:\xxx\xxx\ffmpeg-20180227-fa0c9d6-win64-static\bin)
  3. 檢查是否配置成功:ffmpeg -version成功界面

開始轉換

官方文檔

官方文檔:英文文檔

轉換格式

  1. avi 轉換成 mp4 命令:ffmpeg -i lucene.avi lucene.mp4
  2. avi 轉成mp3:ffmpeg -i lucene.avi lucene.mp3
  3. avi 轉成gif:ffmpeg -i lucene.avi lucene.gif

生成m3u8/ts文件

  1. 第一步:先將avi視頻轉成mp4,
ffmpeg.exe -i  lucene.avi -c:v libx264 -s 1280x720 -pix_fmt yuv420p -b:a 63k -b:v 753k -r 18 .\lucene.mp4

這裏是引用-c:v 視頻編碼爲x264 ,x264編碼是H264的一種開源編碼格式。

-s 設置分辨率

-pix_fmt yuv420p:設置像素採樣方式,主流的採樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0,它的作用是根據採樣方式來從碼流中還原每個像素點的YUV(亮度信息與色彩信息)值。

-b 設置碼率,-b:a和-b:v分別表示音頻的碼率和視頻的碼率,-b表示音頻加視頻的總碼率。碼率對一個視頻質量有很大的作用,後邊會介紹。

-r:幀率,表示每秒更新圖像畫面的次數,通常大於24肉眼就沒有連貫與停頓的感覺了。

  1. 將mp4生成m3u8
ffmpeg -i  lucene.mp4   -hls_time 10 -hls_list_size 0  -hls_segment_filename ./hls/lucene_%05d.ts ./hls/lucene.m3u8

-hls_time 設置每片的長度,單位爲秒

-hls_list_size n: 保存的分片的數量,設置爲0表示保存所有分片

-hls_segment_filename :段文件的名稱,%05d表示5位數字

生成的效果是:將lucene.mp4視頻文件每10秒生成一個ts文件,最後生成一個m3u8文件,m3u8文件是ts的索引文件


3. 碼率的設置(參考)

1*1024*1024*8/10/1024 = 819Kbps

碼率又叫比特率即每秒傳輸的bit數,單位爲bps(Bit Per Second),碼率越大傳送數據的速度越快。

碼率的計算公式是:文件大小(轉成bit)/ 時長(秒)/1024 = kbps 即每秒傳輸千位數

例如一個1M的視頻,它的時長是10s,它的碼率等於
在這裏插入圖片描述

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