FFmpeg在Ubuntu的安装以及教程~~~
? ? FFmpeg在Ubuntu的安裝以及教程~~~
一、安裝
可通過PPA進行安裝
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
sudo apt-get update
sudo apt-get install ffmpeg
查看是否安裝成功:
ffmpeg -version
二、相關概念
比特率
比特率,是一個決定音視頻總體質量的參數。他決定每個時間單位處理的bit數,英文為 bit rate,描述每秒鐘輸出多少 KB 的參數,單位是 Kbps,也就是 kbit/s,8Kbit/s = 1KB/s。壓縮同一個視頻,視頻編碼率越大,文件體積越大,畫質越好。
MP3一般使用的比特率為 8~320kbps。
設置比特率: ? ? ????比特率決定處理1s的編碼流需要多少bits,設置用-b選項。區分音視頻用-b:a和-b:v 例如:設置整體1.5Mbit每秒 ffmpeg -i file.avi -b 1.5M file.mp4ffmpeg -i input.avi -b:v 1500K output.mp4
幀數
? ? ? ? ?每秒鐘播放的圖片數,單位 fps(英文:Frames Per Second),幀率就是每秒編碼進視頻文件的幀數目。人類的眼睛需要每秒至少15幀才能將圖像連貫在一起。幀率的單位是HZ,LCD顯示一般有60Hz的平率。高的幀率可以得到更流暢、更逼真的動畫。一般來說30fps就是可以接受的,但是將性能提升至60fps則可以明顯提升交互感和逼真感,但是一般來說超過75fps一般就不容易察覺到有明顯的流暢度提升了。如果幀率超過屏幕刷新率只會浪費圖形處理的能力,因為顯示器不能以這么快的速度更新,這樣超過刷新率的幀率就浪費掉了。
????????在同一視頻,同一碼率的情況下,幀數越大,則畫質越不好。尤其是運動的畫面。因為每張畫面會分擔每秒有限的文件體積,如果畫面越多,那么每張畫面所能表現的內容就越有限。
????????當畫面的FPS達到60幀/秒時,已經能滿足絕大部分應用需求。一般情況下,如果能夠保證游戲畫面的平均FPS能夠達到30幀/秒,那么畫面已經基本流暢;能夠達到50幀/秒,就基本可以體會到行云流水的感覺了。一般人很難分辨出60 幀/秒與100幀/秒有什么不同。
幀率設置
使用-r選項 ffmpeg -i?input?-r fps?output 例如: ffmpeg -i input.avi -r 30 output.mp4分辨率 最好理解的概念了,表示畫面的大小,單位是像素 px。
????和編碼率的關系:越高的分辨率,需要越高的編碼率,因為圖像的細節多了,需要的文件體積也應該增大,否則還不如畫面小一些,你會發現同一碼率,畫面越大,圖像的馬賽克程度越明顯。
采樣率
????????每秒鐘對音頻信號的采樣次數,采樣頻率越高聲音還原度越高,聲音更加自然。單位是赫茲 Hz。音頻文件一般使用的采樣率是 44100 Hz ,也就是一秒鐘采樣 44100 次,之所以使用這個數值是因為經過了反復實驗,人們發現這個采樣精度最合適,低于這個值就會有較明顯的損失,而高于這個值人的耳朵已經很難分辨,而且增大了數字音頻所占用的空間。我們所使用的CD的采樣標準就是44.1k,目前44.1k還是一個最通行的標準。
三、常見用法
主要參數:
-i 設定輸入流
-f 設定輸出格式
-ss 開始時間
視頻參數:
-b 設定視頻流量,默認為200Kbit/s
-r 設定幀速率,默認為25
-s 設定畫面的寬與高
-aspect 設定畫面的比例
-vn 不處理視頻
-vcodec 設定視頻編解碼器,未設定時則使用與輸入流相同的編解碼器
音頻參數:
-ar 設定采樣率
-ac 設定聲音的Channel數
-acodec 設定聲音編解碼器,未設定時則使用與輸入流相同的編解碼器
-an 不處理音頻
用法舉例
顯示視頻信息
ffmpeg -i input.avi1、格式轉換
ffmpeg最常用功能就是格式轉換,在這里要特別提的是,音、視頻文件格式有兩個容器格式(如mov、flv)與編碼格式(如H.264)
ffmpeg -i input.flv output.mp4
2、尺寸變換
ffmpeg -i input.mp4 -s 640x360 output.mp4
3、剪切視頻段
ffmpeg -i input.mp4 -ss 5 -t 10 output.mp4上面的命令-ss 5指定從輸入視頻第5秒開始截取,-t 10指明最多截取10秒。 但是上面的命令可能會比較慢,更好的命令如下:
ffmpeg -ss 5 -i input.mp4 -t 10 -c:v copy -c:a copy output.mp4上面的命令把-ss 5放到-i前面,與原來的區別是,這樣會先跳轉到第5秒在開始解碼輸入視頻,而原來的會從開始解碼,只是丟棄掉前5秒的結果。 而-c:v copy -c:a copy標示視頻與音頻的編碼不發生改變,而是直接復制,這樣會大大提升速度,因為這樣就不需要完全解碼視頻(視頻剪切也不需要完全解碼)
注意:-vcodec?有一個縮寫叫做?-c:v?,?-acodec?有一個縮寫叫做?-c:a?。
FFmpeg可以用于降低或提高視頻的幀率,因為信息丟失不可逆法則,提高幀率只會簡單地讓某些幀的畫面多重復一次或多次,所以提高幀率不會提高畫質。
ffmpeg -i input.mp4 -r 30 output.mp4
上面的命令,不論原始視頻幀率是多少,輸出視頻都會是30幀每秒。這種情況之下視頻的時間軸不會變化,不會有慢動作或快動作的效果。
5、截取圖片視頻10秒的地方(-ss 參數)截取一張1920x1080尺寸大小的,格式為jpg的圖片 -ss后跟的時間單位為秒
ffmpeg -i input_video.mp4 -y -f image2 -t 0.001 -ss 10 -s 1920x1080 output.jpg把視頻的前30幀轉換成一個Gif
ffmpeg -i input_video.mp4 -vframes 30 -y -f gif output.gif將視頻轉成 gif
ffmpeg -ss 00:00:00.000 -i input.mp4 -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif將輸入的文件從(-ss)設定的時間開始以10幀頻率,輸出到320x240大小的 gif 中,時間長度為-t 設定的參數。通過這樣轉換出來的 gif 一般都比較大,可以使用?ImageMagick?來優化圖片的大小。
四、轉碼時輸出信息
frame= 28 fps=0.0 q=0.0 size= 2kB time=00:00:01.49 bitrate= 11.3kbits/s frame= 30 fps= 17 q=-0.0 size= 13kB time=00:00:01.49 bitrate= 71.1kbits/ frame= 34 fps= 15 q=-0.0 size= 20kB time=00:00:01.66 bitrate= 99.9kbits/ frame= 38 fps= 13 q=-0.0 size= 31kB time=00:00:01.83 bitrate= 138.1kbits/ frame= 42 fps= 12 q=-0.0 size= 40kB time=00:00:02.00 bitrate= 165.1kbits/ frame= 46 fps= 11 q=-0.0 size= 49kB time=00:00:02.17 bitrate= 185.4kbits/ frame= 50 fps= 10 q=-0.0 size= 57kB time=00:00:02.34 bitrate= 199.3kbits/ frame= 54 fps= 10 q=-0.0 size= 63kB time=00:00:02.51 bitrate= 204.9kbits/ frame= 58 fps=9.5 q=-0.0 size= 74kB time=00:00:02.68 bitrate= 226.2kbits/ frame= 62 fps=9.2 q=-0.0 size= 85kB time=00:00:02.68 bitrate= 260.5kbits/ frame= 65 fps=8.8 q=-0.0 size= 92kB time=00:00:02.85 bitrate= 264.9kbits/FFmpeg 確實不會顯示進度條和百分比,不過,它會給你比進度條和百分比還要多的信息。
參考博文:https://blog.csdn.net/dianxin113/article/details/68486359
總結
以上是生活随笔為你收集整理的FFmpeg在Ubuntu的安装以及教程~~~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jackson快速入门
- 下一篇: 如何设置oracle_home变量,or