日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg builds by zeranoe_FFmpeg

發(fā)布時(shí)間:2023/12/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg builds by zeranoe_FFmpeg 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

FFmpeg 是一個(gè)用于處理音視頻的開(kāi)源程序,但它的入門(mén)較為復(fù)雜,難度較大,且沒(méi)有較為清晰明了的簡(jiǎn)易教程,因此有必要,系統(tǒng)性地講解 FFmpeg 的一些實(shí)用操作。

關(guān)于下載:

官方下載鏈接:

https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20200715-a54b367-win64-static.zip

這也是針對(duì) Windows 系統(tǒng)的最新版本,當(dāng)然 static 版無(wú)需執(zhí)行安裝操作,較為簡(jiǎn)單。對(duì)上述壓縮文件解壓縮后,獲得文件下的子級(jí)內(nèi)容:--- bin---?doc?---?presets---?LICENSE.txt---?README.txt事實(shí)上,該文件夾,需要放置在一個(gè)固定的位置,建議采用全英文路徑!

Windows 系統(tǒng)下如何配置?選擇「此電腦」?> 右鍵,選擇屬性 > 高級(jí)系統(tǒng)設(shè)置 > 環(huán)境變量 > 選中 Path? > 新建,添加應(yīng)當(dāng)注意,是把文件夾下的 bin 文件夾添加到 Path 中之后,打開(kāi) PowerShell, 輸入:ffmpeg?-version
?即可獲得:

到此,FFmpeg 配置成功

由于 FFmpeg 屬于純粹的命令行工具,因此如何調(diào)出命令行窗口,則是首要任務(wù)。對(duì)于 Windows 系統(tǒng)下,可以使用 Powershell 窗口,由于 FFmpeg 的處理對(duì)象是音視頻文件,那么如何快速切換到音視頻文件的路徑下,則是重點(diǎn)。不建議使用命令來(lái)切換路徑,相對(duì)而言,應(yīng)該采用更加簡(jiǎn)潔的方式:打開(kāi)任一文件下,此時(shí)鼠標(biāo)不能選中任何文件,先按 鍵的同時(shí),鼠標(biāo)右鍵,彈出窗口,選擇:「在此處打開(kāi) Powershell 窗口」

之后,便能進(jìn)入當(dāng)前路徑下的 Powershell 窗口

如何使用及基本語(yǔ)法?FFmpeg 的核心在于 ffmpeg 工具,也就是:ffmpeg.exe語(yǔ)法形式:ffmpeg?-i?x1?[]?x2
-i 后面,輸入文件名,即為需要處理的音視頻文件x1: 對(duì)應(yīng)待處理的文件名,需要添加后綴名[]: 認(rèn)為是控制處理的一系列參數(shù)x2: 最后輸出的文件名ffmpeg?-i?04.mp4??_hide_banner
當(dāng)前文件夾下,存在 04.mp4 文件,參數(shù):_hide_banner 用于隱藏banner 信息,僅展示 mp4 文件的相關(guān)信息。

注意事項(xiàng):由于 Powershell 下不支持中文輸入,因此所有文件名必須為英文模式。

通過(guò)上述命令,即可獲取該視頻的基本信息,如時(shí)長(zhǎng),畫(huà)面的寬高,速率等

基本語(yǔ)法:>??ffmpeg?-i?04.mp4??-sameq??-f?avi?2.avi

....
Option?'sameq'?was?removed.?If?you?are?looking?for?an?option?to?preserve?the?quality?(which?is?not?what?-sameq?was?for),?use?-qscale?0?or?an?equivalent?quality?factor?option.
Failed?to?set?value?'1'?for?option?'sameq':?Invalid?argument
Error?parsing?global?options:?Invalid?argument
上述命令用于將?04.mp4 轉(zhuǎn)為 2.avi , 但需要注意:-sameq 參數(shù),目前已經(jīng)被移除,所以控制轉(zhuǎn)格式時(shí)的質(zhì)量,需要采用 -qscale 0 參數(shù)。-qscale 0?: 跟原視頻質(zhì)量相同,其值越大,轉(zhuǎn)碼后視頻質(zhì)量愈差。ffmpeg?-i?04.mp4??-qscale?0??-f?avi?2.avi
通過(guò)上述方式,將 mp4 轉(zhuǎn)為同等質(zhì)量的 avi 格式-qscale 參數(shù)值一般在?0?~6 之間比較合適,越大,轉(zhuǎn)碼后視頻質(zhì)量越差。視頻裁剪ffmpeg?-i?04.mp4?-t?60??03.mp4
-t 參數(shù) 60 表示取視頻長(zhǎng)度為:60s由于未指定起始和終止點(diǎn),默認(rèn)截取前 60s, 因此:

從文件的屬性中,即可獲知:時(shí)長(zhǎng) 00:01:00當(dāng)上面的方法,依然對(duì)視頻進(jìn)行了重新編碼,自然會(huì)造成過(guò)長(zhǎng)的耗時(shí)。由于裁剪前后,視頻的格式未發(fā)生變化,因此,我們只需要復(fù)制即可,容器本身不發(fā)生,只是單純地 拷貝到另一個(gè)容器中,因此需要增加參數(shù):?ffmpeg?-i?04.mp4?-t?60?-c?copy??03-1.mp4

通過(guò)屬性信息比對(duì),就能得出:-c copy 的體積更小。因此,推薦使用 -c copy指定位置裁剪:??ffmpeg?-i?04.mp4?-ss?4:30?-t?45?-c?copy?01.mp4
-ss 指定起始點(diǎn),如上所示,為 4 分 30 秒處開(kāi)始,往后截取 45 秒。以及:??ffmpeg?-i?04.mp4?-ss?4:30?-to?6:45?-c?copy?01.mp4
-to 實(shí)際上,指定終點(diǎn)點(diǎn),從 4 分 30 秒到?6 分?45 秒而:-c:v copy ?只拷貝視頻編碼部分!ffmpeg?-i?04.mp4?-ss?4:30?-to?6:45?-c:v?copy?-an?01.mp4上述代碼中的:-an , 用于去除音頻部分。此時(shí),獲得 「無(wú)聲的視頻」:

屬性信息中,音頻部分不顯示任何信息,說(shuō)明,-an 已經(jīng)去除了音頻部分。類似的:ffmpeg?-i?04.mp4?-ss?4:30?-to?6:45??-vn?01.mp3
-vn 去除視頻,獲得音頻文件。但此時(shí)不能添加:-c:a copy事實(shí)上,標(biāo)準(zhǔn)的時(shí)間格式為:00:00:00 表示?「時(shí):分:秒」,但一般情況下,不需要用到的,都可以省略,直接以 4:30 即可表示 「分:秒」

拓展延伸:如何實(shí)現(xiàn)對(duì)文件下一堆視頻文件的批量轉(zhuǎn)音頻操作?

事實(shí)上,FFmpeg 并不支持批量操作!如何構(gòu)建批量化操作,則只能另想辦法?

首先,我們先考慮有沒(méi)有前人做好的?「輪子」, 這樣就不必閉門(mén)造車(chē),重新制造輪子。

Name:?Pazera?Free?Audio?Extractor?(32/64-bit)
Version:?2.9
License:?Freeware
Date:?2018.07.29
Author:?Jacek?Pazera
Web?page:?http://www.pazera-software.com/products/audio-extractor/
Quick?start:?http://www.pazera-software.com/products/audio-extractor/quickstart.php



??This?program?is?distributed?in?the?hope?that?it?will?be?useful,
??but?WITHOUT?ANY?WARRANTY;?without?even?the?implied?warranty?of
??MERCHANTABILITY?or?FITNESS?FOR?A?PARTICULAR?PURPOSE.
??


This?program?uses?the?following?open?source?software:
??1.?FFmpeg,?licensed?under?the?GNU?Lesser?General?Public?License?(LGPL)?version?2.1?available?at?http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
??2.?MediaInfo?library,?licensed?under?the?MediaInfo(Lib)?License?available?at?https://mediaarea.net/en/MediaInfo/License
??3.?Free?SpTBX?components?available?at?http://www.silverpointdevelopment.com/sptbxlib/index.htm,?licensed?under?the?SpTBXLib?License?available?at?http://www.silverpointdevelopment.com/sptbxlib/SpTBXLib-LICENSE.htm
??4.?The?Drop?Files?and?Version?Information?components?by?Peter?D.?Johnson?(http://delphidabbler.com/),?licensed?under?the?Mozilla?Public?License?v2.0?available?at?https://www.mozilla.org/en-US/MPL/2.0/
AudioExtractor64.exe 的 README.txt 文件信息如上所示,專門(mén)用于音頻的提取!其中使用了 FFmpeg 工具,本質(zhì)上是調(diào)用 FFmpeg 來(lái)完成視頻的相關(guān)操作,但作者已經(jīng)把這個(gè)輪子做成了完善的軟件。同時(shí)也實(shí)現(xiàn)了 Freeware 的目標(biāo)。界面:

畢竟,已經(jīng)是完善的界面設(shè)置,因此,不再詳細(xì)說(shuō)明如何使用。下面,我們開(kāi)始自己造輪子?

本著,R 語(yǔ)言優(yōu)先的原則,批量自動(dòng)化,肯定是考慮使用 R 語(yǔ)言。>?ffmpeg?-i?04.mp4?-ss?4:30?-to?6:45??-vn?01.mp3
>?ffmpeg?-i?05.mp4?-ss?4:30?-to?6:45??-vn?02.mp3
>?ffmpeg?-i?06.mp4?-ss?4:30?-to?6:45??-vn?03.mp3
事實(shí)上,可能就是如上所示,一條一條的命令,依次執(zhí)行罷了,但最終依然需要通過(guò)命令行來(lái)執(zhí)行。有規(guī)律性的命令,本質(zhì)上依然是一堆字符串,因此利用 R 語(yǔ)言的字符串操作來(lái)生成字符串向量,最終傳遞給命令行窗口,執(zhí)行命令即可。f?'ffmpeg?-i?',
?????????????sprintf('%02.0f',1:4),
?????????????'.mp4',
?????????????'?-ss?4:30?-to?6:45?-vn?',
????????????sprintf('%02.0f',1:4),'.mp3')
返回信息:>?f
[1]?"ffmpeg?-i?01.mp4?-ss?4:30?-to?6:45?-vn?01.mp3"
[2]?"ffmpeg?-i?02.mp4?-ss?4:30?-to?6:45?-vn?02.mp3"
[3]?"ffmpeg?-i?03.mp4?-ss?4:30?-to?6:45?-vn?03.mp3"
[4]?"ffmpeg?-i?04.mp4?-ss?4:30?-to?6:45?-vn?04.mp3"

實(shí)踐環(huán)節(jié):>?list.files()
[1]?"01.mp4"?"02.mp4"?"03.mp4"?"04.mp4"
list.files() 返回當(dāng)前路徑下的文件。然后,開(kāi)始構(gòu)造循環(huán):for?(i?in?seq_along(f))?{
????system(f[i])
??}
執(zhí)行代碼后,查看文件:>?list.files()
[1]?"01.mp3"?"01.mp4"?"02.mp3"?"02.mp4"?"03.mp3"
[6]?"03.mp4"?"04.mp3"?"04.mp4"
事實(shí)上,已經(jīng)生成了目標(biāo)文件。至此,批量工作結(jié)束。>?list.files()
[1]?"01.mp3"?"01.mp4"?"02.mp3"?"02.mp4"?"03.mp3"
[6]?"03.mp4"?"04.mp3"?"04.mp4"
>?list.files(pattern?=?'.mp3')?%>%?unlink
>?list.files()
[1]?"01.mp4"?"02.mp4"?"03.mp4"?"04.mp4"

通過(guò) pattern 進(jìn)行篩選,交由 unlink() 刪除 mp3 文件

unlink() 在這里的作用等同于 file.remove()

比對(duì)效率:

?a?function()?{
for?(i?in?seq_along(f))?{
????system(f[i],show.output.on.console?=?F)
??}
list.files(pattern?=?'.mp3')?%>%?unlink
}

b?function()?{
???sapply(f,?system,show.output.on.console?=?F)
???list.files(pattern?=?'.mp3')?%>%?unlink
}

a 采用 for 循環(huán),b 采用?sapply() 方法

同時(shí),添加了參數(shù):show.output.on.console = F, 不再輸出終端信息。

那么他們的效率如何呢?

>?system.time(a())
???user??system?elapsed?
???0.00????0.01???12.24?
>?system.time(b())
???user??system?elapsed?
???0.01????0.00???12.17?

事實(shí)上,后者僅比前者快了 0.07s?

但,sapply() 的形式,更加優(yōu)雅,推薦使用后者。

小細(xì)節(jié):

a() 運(yùn)行后,實(shí)際上已經(jīng)刪除了生成的 mp3 文件,之后才重新運(yùn)行 b()

這里,在 R 語(yǔ)言運(yùn)行模式下,是不能夠默認(rèn)覆蓋文件的,因此需要?jiǎng)h除之前的 mp3 文件。

y 參數(shù):

?ffmpeg?-i?01.mp4?-ss?4:30?-to?6:45??-y??-vn?01.mp3

-y 用于直接覆蓋同名文件。即意味著:若之前就存在 01.mp3 同名文件,則直接覆蓋。

av 包

?Package:?????????????av
Type:????????????????Package
Title:???????????????Working?with?Audio
?????????????????????and?Video?in?R
Version:?????????????0.5.0
Authors@R:???????????person("Jeroen",
?????????????????????"Ooms",?role?=
?????????????????????c("aut",?"cre"),
?????????????????????email?=
?????????????????????"jeroen@berkeley.edu",
?????????????????????comment?=?c(ORCID?=
?????????????????????"0000-0002-4035-0289"))
Description:?????????Bindings?to?'FFmpeg'
?????????????????????

...
SystemRequirements:
?????????????????????FFmpeg?(>=?3.2);
?????????????????????with?at?least
?????????????????????libx264?and?lame
?????????????????????(mp3)?drivers.
?????????????????????Debian/Ubuntu:
?????????????????????libavfilter-dev,
?????????????????????Fedora/CentOS:
?????????????????????ffmpeg-devel?(via
?????????????????????https://rpmfusion.org),
?????????????????????MacOS?Homebrew:
?????????????????????ffmpeg.
Depends:?????????????R?(>=?3.5)

av 包的出現(xiàn),解決了 R 語(yǔ)言無(wú)法更好地處理音視頻的弊端,同時(shí) av 包其實(shí)是需要 FFmpeg 作為支持,其實(shí)是調(diào)用 FFmpeg 進(jìn)行處理。

因此,更建議使用 av

>?ls('package:av')
?[1]?"av_audio_convert"?????"av_capture_graphics"??"av_decoders"?????????
?[4]?"av_demo"??????????????"av_demuxers"??????????"av_encode_video"?????
?[7]?"av_encoders"??????????"av_filters"???????????"av_log_level"????????
[10]?"av_media_info"????????"av_muxers"????????????"av_spectrogram_video"
[13]?"av_video_convert"?????"av_video_images"??????"av_video_info"???????
[16]?"bartlett"?????????????"bhann"????????????????"bharris"?????????????
[19]?"blackman"?????????????"bnuttall"?????????????"bohman"??????????????
[22]?"cauchy"???????????????"dolph"????????????????"flattop"?????????????
[25]?"gauss"????????????????"hamming"??????????????"hanning"?????????????
[28]?"lanczos"??????????????"nuttall"??????????????"parzen"??????????????
[31]?"read_audio_bin"???????"read_audio_fft"???????"sine"????????????????
[34]?"tukey"????????????????"welch"???????????????

av 中的函數(shù),其實(shí)僅僅只有 35個(gè),量并不是很大,但涉及到音視頻相關(guān)的一系列知識(shí),想要熟練使用的話,仍需付出大量的實(shí)踐。

---end---

總結(jié)

以上是生活随笔為你收集整理的ffmpeg builds by zeranoe_FFmpeg的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。