15條常用的視頻音頻編輯腳本命令(mencoder/ffmpeg等)

可以把它當快速簡易參考看,主要的功能有:

  1. 視頻格式轉換
  2. 音頻格式轉換
  3. 切割視頻及音頻
  4. 連接兩段視頻
  5. 視頻音頻同步
  6. 將圖像系列轉換成視頻 ? ??
這里是百鬼丸以前收集的一部分命令行視頻音頻編輯腳本命令,一直在自己的記事本里隨時用,現在覺得新浪編輯器夠方便,速度也夠快,覺得把它們放在博客上更合適些。這些命令都是基于一些開源免費軟件,如mencoder,ffmpeg, lame, sox,perl, ffmpeg2theora等,這些軟件一般都沒有圖形界面,需要在命令行窗口輸入執行。因此對家庭用戶可能并不是太合適,需要花不少時間了解掌握。但對批量處理或者后臺處理視頻音頻很有效。當你不想購買商業軟件或者使用linux操作系統時,可以試試。?



任務1: 延遲視頻部分 (對avi文件有效)
mencoder -delay 0.7 -oac copy -ovc copy input.avi -ooutput.avi

解釋:讓視頻軌比當前的音頻軌落后0.7秒鐘



任務2:?延遲音頻部分(對avi文件有效)
mencoder -oac copy -ovc copy -audio-delay -0.7 input.avi -ooutput.avi

解釋:讓音頻軌比當前的視頻軌落后0.7秒鐘



任務3:切割視頻軌
mencoder -ss 00:00:10 -endpos 60 -ovc copy -oac copy input.avi-o output.avi

解釋:切割視頻部分,從0分10秒開始,到1分10秒,時間長度為60秒。將結果存儲為output.avi?



任務4:?連接兩段視頻 (必須比特率相同)
mencoder -oac copy -ovc copy -idx -o output.avi input1.aviinput2.avi?????????
or(不要求bitrate相同):
ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio


解釋



任務5:?將一系列靜止圖像和一個mp3文件轉換為AVI視頻文件
mencoder "mf://snap*.bmp" -mf fps=25 -oac mp3lame -lameoptsabr:br=128:mode=3 -audiofile test.mp3 -ovc lavc -lavcoptsvcodec=msmpeg4v2:vpass=1:vbitrate=2560000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3-o leadnull

mencoder "mf://snap*.bmp" -mf fps=25 -oac mp3lame -lameoptsabr:br=128:mode=3 -audiofile test.mp3 -ovc lavc -lavcoptsvcodec=msmpeg4v2:vpass=2:vbitrate=2560000:mbd=2:keyint=132:vqblur=1.0:cmp=2:subcmp=2:dia=2:mv0:last_pred=3-o lead.avi

解釋:mono=3 代表單聲道音頻輸出, mono=0 代表立體聲音頻輸出。上面使用的視頻編碼是微軟的msmpeg4,因此這個AVI文件可以直接在Windows mediaplayer中播放,不需要另外安裝插件。 上面兩條命令,表示兩遍壓縮。 為提高速度,也可以只實用第一條做單次壓縮。輸出視頻的fps為25。



任務6:?切割mp3音頻文件

mplayer -ss 00:01:59 -endpos 102.5 input.mp3 -ao pcm

sox audiodump.wav result1.wav fade t 3

sox result1.wav result2.wav fade t 0 102.5 3.5

lame result2.wav -o fighting.mp3 -b 160

解釋:這個過程由四條命令組成。 上面的例子中,
第一步:切割部分為1分59秒開始,到3分41.5秒結束,長度102.5秒。用戶需自己計算切割部分,設定上述參數。?
第二步:用sox對音頻開頭3秒鐘做一個淡入效果(聲音逐漸增強)
第三步:用sox對音頻結束3.5秒鐘做一個淡出效果(聲音逐漸衰減)
第四步:將lame處理好的音頻重新編碼成160kbps的mp3文件

其中,第二、第三步是可以省略的。?



任務7:?將wma文件轉換為mp3文件

mplayer input.wma -ao pcm

lame audiodump.wav -o output.mp3 -b 160

解釋:一共兩條命令。第一條將wma轉化為wav文件,第二條再將wav轉換為mp3文件,比特率為160kbps.?



任務8:?將一系列圖像文件轉換為flv視頻文件

mencoder ?"mf://snap*.bmp" -mf fps=25-audiofile test.mp3 -o output.flv ? -afresample=22050:0:0 -sws 9 -vf scale=448:-3,expand=448:336 -of lavf-ovc lavc -lavcoptsvcodec=flv:vbitrate=260:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:vpass=1

mencoder ?"mf://snap*.bmp" -mf fps=25 -ooutput.flv -audiofile test.mp3 ?-afresample=22050:0:0 -sws 9 -vf scale=448:-3,expand=448:336 -of lavf-ovc lavc -lavcoptsvcodec=flv:vbitrate=260:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2:vpass=2

解釋:兩遍壓縮,將一系列snap001.bmp, snap002.bmp,...圖像和一個mp3文件"test.mp3"轉換成fps=25的錄像。音頻采樣率設定為22050,視頻畫面大小為448x336,視頻的比特率為260kbps。?
如果你希望更改視頻中的keyframe,你可以在第一條命令執行后,手動編輯一個divx2pass.log文件。文件中"Type:1"表示關鍵幀keyframe (或者叫iframe), "Type:2"表示p-frame,就是只記錄相鄰幀變化部分的幀。?



任務9:?將一系列圖像文件轉換為ogg視頻文件

ffmpeg2theora -f image2 snap%05d.bmp -V 320 -ooutput.ogg

解釋:ogg錄像還是有點用的,wikipedia, wikimeida都在用。上面的視頻比特率為320kbps



任務10:?將一系列圖像轉化為與NTSCDVD兼容的mpeg2格式文件。?

mencoder -oac lavc -ovc lavc -of mpeg -mpegoptsformat=dvd:tsaf -vf scale=720:480,harddup -srate 48000 -aflavcresample=48000 -lavcoptsvcodec=mpeg2video:vpass=1:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9-ofps 30000/1001 -o ntscdvd.mpg "mf://snap*.bmp" -mf fps=25-audiofile test.mp3

mencoder -oac lavc -ovc lavc -of mpeg -mpegoptsformat=dvd:tsaf -vf scale=720:480,harddup -srate 48000 -aflavcresample=48000 -lavcoptsvcodec=mpeg2video:vpass=2:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9-ofps 30000/1001 -o ntscdvd.mpg "mf://snap*.bmp" -mf fps=25-audiofile test.mp3

解釋:兩遍壓縮,輸入圖像幀率為25fps, 輸出幀率為29.97fps,視頻編碼mpeg2, 音頻編碼192kbpsac3. ?



任務11:?將一系列圖像文件轉換為與PALDVD兼容的mpeg2格式視頻文件

mencoder -oac lavc -ovc lavc -of mpeg -mpegoptsformat=dvd:tsaf -vf scale=720:576,harddup -srate 48000 -aflavcresample=48000 -lavcoptsvcodec=mpeg2video:vpass=1:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9-ofps 25 -o paldvd.mpg "mf://snap*.bmp" -mf fps=25 -audiofiletest.mp3

mencoder -oac lavc -ovc lavc -of mpeg -mpegoptsformat=dvd:tsaf -vf scale=720:576,harddup -srate 48000 -aflavcresample=48000 -lavcoptsvcodec=mpeg2video:vpass=2:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9-ofps 25 -o paldvd.mpg "mf://snap*.bmp" -mf fps=25 -audiofiletest.mp3

解釋:兩遍壓縮,輸入為snap001.jpg, snap002.jpg...和test.mp3,圖像系列的fps為25, 輸出視頻文件的fps為25. 視頻編碼為mpeg2, 音頻編碼為192kbpsac3.?



任務12:?將視頻文件轉換為一系列圖像
用ffmpeg命令如下

ffmpeg -i test.avi snap%05d.bmp

也可以用mplayer完成同樣功能

mplayer video.avi -vo png -ss 00:00:10 -endpos 5.0 -vfcrop=480:360:80:60

解釋:這里mplayer的例子中,還提供了額外的切割選擇功能。切割的部分從0分10秒開始,到0分15秒結束,長達5秒。同時畫面也被切割,切割的位置從坐標(80,60)開始,寬度480像素,高度360像素。這里坐標系以屏幕左上角為(0,0).?



任務13:?將midi文件轉換為mp3文件

timidity input.mid -Ow

lame -b 160 -h -k input.wav output.mp3

解釋:第一條命令使用timidity將midi轉換為wav文件,第二條命令用lame將wav轉換為160kbpsmp3文件。?
timidity配置和安裝還是比較麻煩的。還需要額外安裝高品質的sf2聲音字體文件,配置sf2文件也異常容易出錯。總體效果還可以接受。但無法使用目前流行的vst,因此可能會被慢慢淘汰掉。?



任務14:?將一系列圖像轉換為swf格式的flash文件(需要perl)?

flv2swf ?input.flv?output.swf

解釋:有時候可能用swf來保存視頻比flv更方便。如果圖像數量不多的話,可以采用swftools來進行轉換?
如果圖像數量很多的話,首先我們用任務8中的命令將圖像轉換為一個flv文件。然后我們可以用adobe的各種軟件很輕松的將flv錄像加入一個flash項目里,最后輸出為swf.?如果你熟悉perl的話,也可以用一個perl腳本將flv文件轉換成swf.CPAN(Perl公共模塊庫)有一個FLV::info的模塊,安裝后就可以使用flv2swf命令了。




任務15:?將mp3文件轉換為wma文件

mplayer input.mp3 -ao pcm

ffmpeg -i audiodump.wav -acodec wmav2 -ab 128000test.wma1

解釋:偶爾也需要這個功能的。第一步,將mp3文件轉換為wav文件,第二步用ffmpeg將wav文件轉換為wma.?


如果你只需要將單幅圖像如某個封面,和一個mp3合并成一個視頻文件,請參看前一篇博文。?
將一幅圖像和一個mp3文件合并成錄像文件的小工具

參考鏈接
上述命令基本上是參考了mplayer的用戶手冊,videohelp.com的論壇帖子寫的。
http://www.mplayerhq.hu/DOCS/HTML/en/encoding-guide.html
http://forum.videohelp.com/

軟件主頁
mencoder的Windows binary:?http://oss.netfarm.it/mplayer-win32.php
ffmpeg的Windows binary:?http://ffmpeg.arrozcru.org/builds/
lame的Windows binary:?http://lame.sourceforge.net/links.php
sox:?http://sox.sourceforge.net/
ffmpeg2theora:?http://v2v.cc/~j/ffmpeg2theora/
cpan:?http://search.cpan.org/dist/FLV-Info/
Active perl的Windows版本:http://www.activestate.com/activeperl/

上述軟件被廣泛使用,其源代碼部分沒有什么問題,但因為專利和版權的問題,公布其Windows的二進制可執行文件則可能觸犯了一些國家的法律,目前合法性這個問題還比較模糊。


wav轉aac命令 可參考
ffmpeg -i soundtrack.wav -acodec aac -ab 128kb?output.m4a

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

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

相關文章

python rowcount_PyQt(Python+Qt)學習隨筆:QTableWidget的currentItem、rowCount、columnCount等部件狀態屬性訪問方法...

老猿將QTableWidget表格部件中反映部件當前情況的一些方法歸類為部件狀態訪問方法,包括部件的行數、列數、當前項、當前行、當前列等屬性訪問方法。1、行數rowCountQTableWidget的rowCount屬性保存表格部件中的行數,在QTableWidget創建時如果沒有指定行數…

Python 內置模塊之 random

常用API import random# 隨機小數 print(random.random()) # 大于0且小于1之間的小數。0< n<1.0 print(random.uniform(1,3)) # 大于1小于3的小數# 隨機整數 print(random.randint(1,5)) # 大于等于1且小于等于5之間的整數#從指定范圍內&#xff0c;按指定基…

微信jssdk遇到的一些問題匯總

1.用戶手動去觸發的接口可以直接調用比如wx.startRecord(); 但是寫在頁面加載完成里就無效&#xff0c;需要寫在 wx.ready(function(){wx.startRecord(); }); 才會有效。 2.h5 的audio標簽只支持ogg,mp3,wav格式的音頻&#xff0c;微信jssdk錄制的是amr格式的語音文件&#xf…

mongodb簡單的增刪改查

數據庫操作&#xff1a; show dbs;#查看數據庫use test;#如果沒有就創建一個db;#查看當前數據庫db.dropDatabase();#刪除數據庫 數據操作&#xff1a;show collections&#xff1b;#查看集合創建集合、插入&#xff1a;create collection;#創建集合db.student.insert({"na…

ffmpeg-0.8 開源編碼解碼庫從linux下移植到windows vs2005

最新 ffmpeg-0.8 開源編碼解碼庫&#xff0c;從linux下移植到windows vs2005&#xff0c;全部開源。需要 Intel C Compile 和 開源的SDL庫支持&#xff0c;由于 Intel C Compile支持C99語法&#xff0c;所以源代碼改動很小很小。主要的修改1&#xff1a;添加了linux中有而windo…

python3.5.2使用教程_Python3.5.2-初級教程.docx

Python3.5.2-初級教程Python 初級教程Release:3.5.2引言Python 是一門簡單易學且功能強大的編程語言。它擁有高效的高級數據結構&#xff0c;并且能夠用簡單而又高效的方式進行面向對象編程。Python 優雅的語法和動態類型&#xff0c;再結合它的解釋性&#xff0c;使其在大多數…

Flask 離線腳本

1. 在 __init__.py中創建db對象from flask_sqlalchemy import SQLAlchemy# 包含了SQLAlchemy相關的所有操作db SQLAlchemy()2. 在 __init__.py中create_app函數中讓將app傳入到db中def create_app():app Flask(__name__)app.config.from_object(settings.DevelopmentConfig)f…

day13 迭代器和生成器

一、上節回顧和作業講解&#xff1a; 1、如果這個網頁沒有被爬取過就真的去訪問這個網頁&#xff0c;否則就返回之前訪問的時候緩存文件中的內容 &#xff08;重要的例子&#xff09; from urllib.request import urlopen def wrapper(func):def inner(*args, **kwargs):with o…

Centos7.0 搭建Zabbix環境

實驗環境&#xff1a;Centos7.0IP:192.168.47.140關閉iptables及setenforce導入源 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm安裝zabbix包安裝完成安裝mysql源wget http://repo.mysql.com/mysql-community-release-el7-5…

用線性插值算法實現圖像縮放

用線性插值算法實現圖像縮放 猛禽[Mental Studio](個人專欄)(BLOG) http://mental.mentsu.com 在Windows中做過圖像方面程序的人應該都知道Windows的GDI有一個API函數&#xff1a;StretchBlt&#xff0c;對應在VCL中是TCanvas類的StretchDraw方法。它可以很簡單地實現圖像的縮放…

蒙特卡洛分析 pmp_PMP基礎名詞介紹 | 59. 實施定量風險分析

點擊上方藍字關注我們你好&#xff0c;這是“兔子研習社”為管理新手推出的“PMP基礎名詞介紹”系列內容。如果你正打算轉到管理崗位&#xff0c;或者想要學習國際通行的項目管理知識&#xff0c;那恭喜你&#xff0c;這里滿滿的干貨會讓你不虛此行。實施定量風險分析是就已識別…

深度學習案例之基于 CNN 的 MNIST 手寫數字識別

一、模型結構 本文只涉及利用Tensorflow實現CNN的手寫數字識別,CNN的內容請參考:卷積神經網絡(CNN) MNIST數據集的格式與數據預處理代碼input_data.py的講解請參考 :Tutorial (2) 二、實驗代碼 # -*- coding:utf-8 -*- """Time : Author: Feng LepengFile …

怎樣獲取linux命令幫助?

獲得命令使用幫助&#xff1a;內部命令&#xff1a;help COMMAND外部命令&#xff1a;COMMAND --help &#xff08;大多數命令有help選項&#xff09;命令手冊&#xff1a;manualman [章節號] COMMAND其中man數據庫是分章節的&#xff0c;相同的COMMAND出現在不同的章節表示…

編譯安裝 zbar 時兩次 make 帶來的驚喜

為了裝 php 的條形碼擴展模塊 php-zbarcode&#xff0c;先裝了一天的 ImageMagick 和 zbar。也許和我裝的 Ubuntu 17.10 的有版本兼容問題吧&#xff0c;總之什么毛病都有&#xff0c;apt 不行&#xff0c;PPA 源也不行&#xff0c;編譯安裝還有幾處源代碼出錯&#xff0c;裝不…

python數組的乘法_在Python中乘法非常大的2D數組

我必須在Python中將非常大的2D數組乘以大約100次.每個矩陣由3200032000元素組成.我正在使用np.dot(X,Y),但是每次乘法都需要很長時間…在我的代碼實例下面&#xff1a;import numpy as npX Nonefor i in range(100)multiplying Trueif X None:X generate_large_2darray()mu…

0階指數哥倫布編碼

指數哥倫布編碼 規定語法元素的編解碼模式的描述符如下&#xff1a; 比特串&#xff1a; b(8):任意形式的8比特字節&#xff08;就是為了說明語法元素是為8個比特&#xff0c;沒有語法上的含義&#xff09; f(n):n位固定模式比特串&#xff08;其值固定&#xff0c;如forbidde…

TensorFolw 報錯

1、報錯1&#xff1a;ValueError: Only call softmax_cross_entropy_with_logits with named arguments (labels..., logits..., ...) 提示出錯如下&#xff1a; Traceback (most recent call last):File "/MNIST/softmax.py", line 12, in <module>cross_en…

CentOS7種搭建FTP服務器

安裝vsftpd 首先要查看你是否安裝vsftp [rootlocalhost /]# rpm -q vsftpd vsftpd-3.0.2-10.el7.x86_64 #顯示也就安裝成功了&#xff01; 如果沒有則安裝vsftpd [rootlocalhost/]# yum install -y vsftpd 完成后再檢查一遍 [rootlocalhost /]# whereis vsftpd vsf…

js循環

順序——要加分號結束 分支&#xff1a;讓程序根據條件不同執行不同的代碼 if else語句用來做分支的 if&#xff08;條件&#xff09;{代碼} if&#xff08;條件&#xff09;{代碼}else{代碼} else if&#xff08;條件&#xff09;{代碼} if是嵌套。 switch...case&#xff1…

x264函數調用關系圖

1 encoder 2 slice write 3 analyse FFMPEG中MPEG-2編解碼函數調用關系圖 1 Encoder &#xff08;函數調用從左到右&#xff0c;下同&#xff1b;圖片顯示不全時&#xff0c;請下載顯示&#xff09; 2 P幀運動估計流程圖 3 B幀運動估計流程圖 4 decoder ffmpeg的mpeg2編碼I幀代…