linux 視頻編輯 ffmpeg,ffmpeg轉碼視頻真的好用!(ffmpeg的簡單使用方法)

說明

轉碼和編輯視頻

今天用Android Studio(后面簡稱AS)里的模擬器給系統錄屏,用來展示OpenGL可視化的東西,打算上傳B站,后來發現AS只能保存webm格式和GIF格式的視頻,并且文件體積巨大,視頻圖像也是順時針旋轉的。

沒辦法,只能找個視頻編輯器進行轉碼和編輯,結果發現網上的視頻轉碼工具基本粗制濫造,像Adobe PR這樣的視頻剪輯軟件我也沒必要下載,于是找到了ffmpeg(其實很早之前在樹莓派上玩Linux的時候用過)。

我進入ffmpeg官網下載了Win64版本,下載速度很快,下載下來就是一個壓縮包,解壓后就是工具本體了,不過它沒有任何UI界面,在Windows下你只能進入bin目錄,然后Shift+鼠標右鍵打開命令窗口,使用ffmpeg的指令進行操作。如下圖,可以看到轉碼效率很高。

4f399b9dfb43

下面分析網上搜集的ffmpeg簡單用法,可以進行很多基礎的視頻編輯。

ffmpeg的簡單用法

轉碼

最簡單命令如下:

ffmpeg -i out.ogv -vcodec h264 out.mp4

ffmpeg -i out.ogv -vcodec mpeg4 out.mp4

ffmpeg -i out.ogv -vcodec libxvid out.mp4

ffmpeg -i out.mp4 -vcodec wmv1 out.wmv

ffmpeg -i out.mp4 -vcodec wmv2 out.wmv

-i 后面是輸入文件名。-vcodec 后面是編碼格式,h264 最佳,但 Windows 系統默認不安裝。如果是要插入 ppt 的視頻,選擇 wmv1 或 wmv2 基本上萬無一失。

附加選項:-r 指定幀率,-s 指定分辨率,-b 指定比特率;于此同時可以對聲道進行轉碼,-acodec 指定音頻編碼,-ab 指定音頻比特率,-ac 指定聲道數,例如

ffmpeg -i out.ogv -s 640x480 -b 500k -vcodec h264 -r 29.97 -acodec libfaac -ab 48k -ac 2 out.mp4

剪切

用 -ss 和 -t 選項, 從第 30 秒開始,向后截取 10 秒的視頻,并保存:

ffmpeg -i input.wmv -ss 00:00:30.0 -c copy -t 00:00:10.0 output.wmv

ffmpeg -i input.wmv -ss 30 -c copy -t 10 output.wmv

達成相同效果,也可以用 -ss 和 -to 選項, 從第 30 秒截取到第 40 秒:

ffmpeg -i input.wmv -ss 30 -c copy -to 40 output.wmv

值得注意的是,ffmpeg 為了加速,會使用關鍵幀技術, 所以有時剪切出來的結果在起止時間上未必準確。 通常來說,把 -ss 選項放在 -i 之前,會使用關鍵幀技術; 把 -ss 選項放在 -i 之后,則不使用關鍵幀技術。 如果要使用關鍵幀技術又要保留時間戳,可以加上 -copyts 選項:

ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4

合并

把兩個視頻文件合并成一個。

簡單地使用 concat demuxer,示例:

$ cat mylist.txt

file '/path/to/file1'

file '/path/to/file2'

file '/path/to/file3'

$ ffmpeg -f concat -i mylist.txt -c copy output

更多時候,由于輸入文件的多樣性,需要轉成中間格式再合成:

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg

ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg

cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg

ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

調整播放速度

加速四倍:

ffmpeg -i TheOrigin.mp4 -vf "setpts=0.25*PTS" UpTheOrigin.mp4

四倍慢速:

ffmpeg -i TheOrigin.mp4 -vf "setpts=4*PTS" DownTheOrigin.mp4

幀率設置

使用-r選項

語法是:

ffmpeg -i input -r fps output

例如:

ffmpeg -i input.avi -r 30 output.mp4

使用fps filter

另一個設置幀率是用fps filter,特別是在filterchains使用時非常有用。

例如:修改輸入文件的幀率到25

ffmpeg -v clip.mpg -vf fps=fps=25 clip.webm

比特率設置

比特率也是一個決定音視頻總體質量的參數。他決定每個時間單位處理的bit數。

設置比特率:

比特率決定處理1s的編碼流需要多少bits,設置用-b選項。區分音視頻用-b:a和-b:v

例如:設置整體1.5Mbit每秒

ffmpeg -i file.avi -b 1.5M file.mp4

ffmpeg -i input.avi -b:v 1500K output.mp4

CBR設置

CBR設置一般用作直播流,比如視頻會議。為輸出設置CBR,有三個參數必須設置為同一個值。

bitrate(-b option), minimal rate(-minrate), maximal rate(-maxrate)。maximal rate需要設置-bufsize選項。例如設置CBR為0.5Mbit/s。

ffmpeg -i in.avi -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M output.mkv

設置輸出文件的最大size

用-fs選項。

例如設置輸出文件的最大的size為10M

ffmpeg -i input.avi -fs 10MB output.mp4

文件大小計算

文件的大小是是音視頻流大小的和。

視頻流的大小的方程式是(除以8是由bits到bytes的轉換):

video_size = video_bitrate * time_in_seconds / 8;

如果音頻是解壓縮的,計算公式是:

audio_size = smpaling_rate * bit_depth * channels * time_in_second / 8;

例如:計算10分鐘的視頻, 1500kbits/s 視頻比特率和 128kbits/s的音頻比特率,用下面的計算方法:

file_size = video_size + audio_size;

file_size = (video_bitrate + audio_bitrate) * time_in_seconds / 8;

file_size = (1500 kbits/s + 128kbits/s) * 600s

file_size = 1628kbits/s * 600s

file_size = 976800kb = 976800000 b / 8 = 122100000 B / 1024 = 119238.28125KB

file_size = 119238.28125 KB / 1024 = 116.443634033203125MB = 116.44M

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538228.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538228.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538228.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

requests庫入門09-OAUTH認證

實際登陸中,認證用到的token會變的,不過可以在GIthub設置一個私人token。 如圖,登錄GIthub,然后用戶下面選擇Settings/Developer settings/Personal access tokens,點擊Generate new token,然后隨便輸個描述&#xff0…

mysql期末考試試卷_mysql試題

net start mysqlfound_rows函數 返回select的總行數哪種操作能夠實現實體完整性 設置外鍵數據模型三要素:數據結構、數據操作、完整性約束,哪項不屬于數據模型 網狀模型(層次、網狀、關系、面向對象模型)觸發器主要用于監視某個表的insert、update以及de…

深入了解HashMap

什么是hash?哈希算法將任意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母,隨后的哈希都將產生不同的值。要找…

snort入侵檢測系統下載Linux,入侵檢測系統Snort 2.9.0.2 發布

Snort 是一個免費的、跨平臺的軟件包,用作監視小型 TCP/IP 網的嗅探器、日志記錄、侵入探測器。Snort 是全世界上使用最廣泛的入侵預防與偵測軟件。Snort 有三種工作模式:嗅探器、數據包記錄器、網絡入侵檢測系統。嗅探器模式僅僅是從網絡上讀取數據包并…

IRC BOT原來是利用IRC下發CC命令——在xx云環境遇到了,惡意軟件開的是6666端口...

Backdoor/IRC.RpcBot 本詞條缺少名片圖,補充相關內容使詞條更完整,還能快速升級,趕緊來編輯吧!Backdoor/IRC.RpcBot是一些批處理文件、腳本文件和執行文件的集合,也是一種黑客工具,這些文件的名稱是可以變化…

科大奧銳實驗報告霍爾效應_大學物理實驗報告系列之霍爾效應

【實驗名稱】霍爾效應【實驗目的】1.了解霍爾效應實驗原理以及有關霍爾器件對材料要求的知識。2.學習用“對稱測量法”消除付效應的影響,測量試樣的VH—IS;和VH—IM曲線。3.確定試樣的導電類型、載流子濃度以及遷移率。…

Android studio http 代理設置

Android studio http 代理設置 大連東軟信息學院鏡像服務器地址: - http://mirrors.neusoft.edu.cn 端口:80

三位數倒序數C語言,C語言求助!一個三位數的逆序數,總是編不對

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include #include #include int main(){int n,a,b,c,sum,ge,shi,bai;printf("請輸入一個三位整數:\n");scanf("%d",&n);nfabs(n);an/100;b(n-a*100)/10;cn%10;if(a>b&&b>c){gec…

DB2 存儲過程中執行動態SQL的兩種寫法

樣本代碼: DROP PROCEDURE QUOTATION.COPY_SAMPLE; CREATE PROCEDURE QUOTATION.COPY_SAMPLE (IN tableNameFrom VARCHAR(30), IN tableNameTo VARCHAR(30), INOUT copyResult INTEGER)BEGINDECLARE SQLCODE INTEGER DEFAULT 0;SET copyResult 0;-- Proecss 1BEGIN…

tp5 批量更新多條記錄_Thinkphp批量更新數據的方法匯總

以下小編給大家列出了三種實現thinkphp批量更新數據的方法,寫的不好還請見諒,有意見歡迎提出,共同學習進步! 方法一: //批量修改 data二維數組 field關鍵字段 參考ci 批量修改函數 傳參方式 function batch_update($table_name=,$data=array(),$field=){if(!$table_name||…

linux shmmax單位,Linux核心參數Shmmax,shmall,shmni

Linux 下核心參數調整kernel.shmmaxshmmax是核心參數中最重要的參數之一,用于定義單個共享內存段的最大值,shmmax設置應足夠大,能在一個共享內存段下容納下整個的SGA,設置的過低可能會導致需要創建多個共享內存段,可能…

制作一個App的完整流程是哪些

APP開發流程其實并不復雜,但是對于客戶來說,。一般移動APP開發都離不開UI設計師、前端開發、后端開發、測試專員、產品經理等,由于他們的工作性質都不一樣,我們且先把APP軟件開發項目分為三個階段:一、功能需求階段1.功…

Failed to find Build Tools revision 26.0.1

Error:A problem occurred configuring project :app. > Failed to find Build Tools revision 26.0.1 在build.gradle 中buildToolsVersion 如何修改。看本地安裝了哪些版本的 進入文件夾Android SDK 目錄下build-tools,修改為里面有的版本

netty 游戲服務器框圖_基于Netty和WebSocket協議實現Web端自動打印訂單服務方法與流程...

本發明涉及電子商務技術領域,尤其涉及一種基于netty和websocket協議實現web端自動打印訂單服務方法。背景技術:電子商務是以信息網絡技術為手段,以商品交換為中心的商務活動;也可理解為在互聯網(internet)、企業內部網(intranet)和…

小學數學動畫 android,小學數學動畫教學下載-小學數學動畫 安卓版v5.0-pc6手機下載...

小學數學動畫教學軟件是一款能讓孩子愛上數學的客戶端應用,小學數學動畫app以動畫的形式帶領孩子學習數學知識以及各類公式原理,測底掌握數學方法。功能介紹小學數學動畫通過形象、生動、清楚、易懂的觸摸動畫向你解釋小學數學知識和原理(小學數學原理和…

存儲芯片在智能化產業鏈中扮演的角色將更加重要

隨著大數據、云計算、物聯網等發展,存儲芯片作為半導體元器件中不可或缺的組成部分,在內存、消費電子、智能終端等領域均有著非常廣泛的應用。近年來,國家把集成電路產業列為“十三五”期間重要的新型戰略性產業,國產化“存儲芯片…

Tomcat下找不到properties文件

在java core項目里,目錄結構如下: 當使用 InputStream ipsnew FileInputStream("config/config.properties");能讀到properties文件。但是在java web項目時,部署到Tomcat后。上面的讀法就不行了。 javaweb項目結構如下&#xff1a…

win10計算器rsh_Win10 內置計算器評測:PowerShell 很靠譜

計算器幾乎是每個操作系統都具備的工具,不管是手機還是電腦,很多人都離不開它。然而這些系統內置計算器標準模式往往功能比較簡單,基本上只用于單步運算,就像傳統計算器那樣,現在的Win10計算器也是如此。不過Windows10…

android tcpdump log分析,android 系統啟動過程中加入tcpdump和logcat

一、android 系統啟動過程中加入tcpdump ,分析開機啟動后,系統與服務器端的消息交互。1. init.rc 中的修改1)在init.rc 中加上tcpdump service.service tcpdump /system/xbin/tcpdump -s 0 -w/data/test/test_1.pcapclass core2)在init.rc 中啟動tcpdump…

Linux下查看軟件安裝路徑(whereis)

原文鏈接:http://blog.csdn.net/ly_feng/article/details/7898649----------------------------------------------------------------一、查看文件安裝路徑:由于初次大部分軟件的安裝都是系統自動安裝的,所有先說查看文件安裝的所有路徑(地址…