Author: Wang Jiahao
Date: 2020-10-27
GitHub: https://github.com/JiahaoWongg/Bilidown
Contact: jhaowong1998@sina.com
目錄

一、簡介
話說這也算是第二個版本了,第一個版本 是寫在新冠暴發(fā)之初,因無法返校無聊至極而寫。第一版所實現(xiàn)的功能不多,因此一直有改進的想法。
腳本所實現(xiàn)的功能看標題大家也能猜出一二,構思由來已久,但我接觸代碼的世界在當時也才半年而已。隨著知識的增加和實際需求的提出,便萌生了用R語言實現(xiàn)這些功能的想法了。
我比較喜歡聽音樂,特別是周杰倫的歌,而其歌曲的扒帶也是我的最愛,B站有許多優(yōu)質(zhì)的歌曲扒帶視頻,因此我就想要把這些視頻轉(zhuǎn)為音頻,放到手機音樂播放器里。后來又實現(xiàn)了對音頻文件的分割,并將這些過程流程化,你只需要提供視頻鏈接和簡單的參數(shù)的就可實現(xiàn)這些功能??偣惨膊?200來行代碼,為了便于閱讀,其中大概含有 3/4 的注釋行和空行。
先說這么多,接下來具體介紹腳本所實現(xiàn)的功能。
二、功能介紹
根據(jù)提供視頻鏈接 URL 來源的不同,將功能劃分為兩大功能模式:來源于命令行 CMD 和來源于文本文件。
① CMD模式
- 視頻 URL 直接由命令行提供,即直接在終端 (windows 系統(tǒng)是
Win + X + C打開) 里輸入URL - 根據(jù) URL 獲取視頻文件,默認下載最高清晰度格式,VIP 視頻不能下載,不能解析的 URL 不能下載
- 如果所下載的視頻文件為FLV格式,則將其轉(zhuǎn)為更容易播放的MP4格式
- 如果你愿意,你可以將 MP4 轉(zhuǎn)為 MP3 音頻格式,便于聽
- 如果你愿意,你可以將 MP3 分割為(既保留)你想要的時間段
- 根據(jù)你所指定的視頻和音頻的文件儲存路徑(既文件夾),將結(jié)果文件儲存在指定路徑內(nèi)
- 所有的這些只需一行代碼即可出結(jié)果
② 文件模式
- 視頻URL不是直接輸入的,而是儲存在單獨的一個文件里。這樣你可以實現(xiàn)多個視頻的下載與后續(xù)處理
- 每一個URL循環(huán)一次 ① 中所述的過程,實現(xiàn)批量下載
如果對于代碼和命令完全陌生的朋友,或許有些地方不明白,不過沒關系,具體操和參數(shù)設置作將在下一節(jié)具體講述。
三、環(huán)境配置
這一節(jié)是重頭戲,也是最難的部分,使用不好的朋友要多讀讀。
另外,由于我電腦是 ==window== 系統(tǒng),所以我只講在 window 里的操作方法。
① 語言環(huán)境配置
需要的語言環(huán)境及工具:Python、R、you-get、ffmpeg,你已經(jīng)有的就選擇性安裝
接下來一一介紹,不過首先講一點,安裝軟件的時候要指定安裝路徑,不要總把軟件放在C盤的Program Files里。安裝的路徑必須要知道,后面需要用到。比如我將D盤作為軟件盤,找軟件路徑的時候非常方便:

Python:下載地址: Python(用于安裝 you-get 和 ffmpeg)
R: 下載地址:R, 用于運行腳本
添加R和Python的環(huán)境變量,參照:Windows 系統(tǒng)添加環(huán)境變量
-
檢驗兩個語言環(huán)境是否安裝成功:
快捷鍵
Win + X + C打開命令提示符面板(以下簡稱終端):Microsoft Windows [版本 10.0.18362.1082] (c) 2019 Microsoft Corporation。保留所有權利。 C:\Users\Jay Chou>運行:
python --version & Rscript --version得到以下結(jié)果,則安裝并環(huán)境配置成功!恭喜~
C:\Users\Jay Chou>python --version & Rscript --version Python 3.8.5 R scripting front-end version 3.6.2 (2019-12-12) C:\Users\Jay Chou>
② 安裝 you-get 和 ffmpeg
you-get:下載視頻文件和彈幕文件之類的
-
ffmpeg:文件格式轉(zhuǎn)換
運行:
pip install you-get & pip install FFmpeg
運行:
you-get --version & ffmpeg -version
前三行得到以下結(jié)果,則安裝成功!
C:\Users\Jay Chou>you-get --version & ffmpeg -version
you-get: version 0.4.1456, a tiny downloader that scrapes the web.
ffmpeg version git-2020-01-15-0dc0837 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.2.1 (GCC) 20200111
Python安裝的軟件不需要額外添加環(huán)境變量
至此,你已經(jīng)完成了最難的部分,Congratulations !
三、腳本下載
訪問:https://github.com/JiahaoWongg/Bilidown

在瀏覽器下載歷史內(nèi),打開該文件所在路徑:

解壓,路徑我設為:D:\,盡可能簡單

將文件夾簡化重命名為Bilidown

==以上設置即為初次使用該腳本所需的所環(huán)境配置和操作==
==以下為以后每次運次腳本時的流程==
四、 腳本運行測試
① 打開終端并切換工作路徑
快捷鍵 Win + X + C 打開命令提示符面板
運行:
d: & cd \Bilidown
結(jié)果:
C:\Users\Jay Chou>d: & cd \Bilidown
D:\Bilidown>
② 腳本運行測試
運行:
Rscript bilidown.R -h
結(jié)果:
D:\Bilidown>Rscript bilidown.R -h
Usage: bilidown.R [options]
Options:
--url=URL
video URL.
--list=LIST
Whether download playlist.
--mp3=MP3
Whether tranfer to mp3.
--file=FILE
Whether get URL(s) from file.
--mp3Folder=MP3FOLDER
Mp3 output folder.
--mp4Folder=MP4FOLDER
Mp4 output folder.
--name=NAME
Rename output file.
--start=START
Start point of mp3 cut
--end=END
end point of mp3 cut
-h, --help
Show this help message and exit
D:\Bilidown>
出現(xiàn)這樣的結(jié)果說明一切正常,其中``Options`即為運行腳本所需設的參數(shù),可以閱讀一下,根據(jù)提示差不多能看出其作用。
測試成功后我們就要進行真正的運行了,該腳本和其他命令行軟件一樣,都必須賦予指定格式的參數(shù)或文件,一點錯誤一般都是不允許的,或者結(jié)果可能會不是你想要的。所以下一節(jié)的參數(shù)設置也至關重要,決定了能不能得到你想要的結(jié)果!
接下來將一一解釋每一參數(shù)的作用和如何設置
五、參數(shù)設置
第二節(jié)內(nèi)容提到,該腳本有兩個使用模式,URL來源于CMD模式 和URL來源于文件模式
因此參數(shù)設置也要分為這兩部分講解
首先要知道的是:
參數(shù)的使用方法為:
--參數(shù)名 參數(shù)值,在下一節(jié)的案例中將會更詳細地看到每種模式你只需要提供與之對應的url來源即可,既參數(shù)url和file必須且只能存在其中一個
如果兩個參數(shù)url和file都存在或都不存,腳本也會提示你必須要提供其中之一
下面所述的必選和可選,前者意為必須給這個參數(shù)賦值,而后者可賦可不賦
當給某個可選參數(shù)賦值時,其他的一些參數(shù)可能就變?yōu)榱吮剡x參數(shù)。比如你可以選擇要不要對MP3文件進行分割,如果需要分割,則start參數(shù)需要賦值,這時end參數(shù)自然也就是必選的了
① CMD模式
-
url;視頻鏈接;該模式下為必選參數(shù)
即為視頻鏈接,直接從視頻觀看頁面的地址欄里粘貼即可,如下圖紅框內(nèi)即為該視頻的URL,復制下來即可
需要注意的是:==URL要用雙引號包圍起來,因為有的URL中含有特殊字符,如
&,會被識別為命令字符,會發(fā)生報錯==對應腳本為:
Rscript bilidown.R -- url "https://www.bilibili.com/video/BV1dt4s11a7FX?from=search&seid=3497926814758339505"
別猴急運行,說運行了再運行
-
list;是否下載視頻列表;可選參數(shù)
我們都知道B站的視頻是可以分P的,對于一個分P視頻的其中一P的URL,我們可以選擇只下載這一P或者下載所有P,當然也可以下載指定的P,不過you-get實現(xiàn)不了,作者可以實現(xiàn),但作者太懶就沒加這個功能。
默認是不下載所有P的,不賦值即可。如果想下載所有P,則需要賦值為
TRUE下載全P的情況下此時的代碼:
Rscript bilidown.R --url "https://www.bilibili.com/video/BV1dt411a7FX?from=search&seid=3497926814758339505" --list TRUE
-
mp3,是否將MP4文件轉(zhuǎn)化為MP3文件,可選參數(shù)
默認不轉(zhuǎn)換,如果你只想下載視頻,則不需賦值;如果你還想得到音頻,則需賦值為
TRUE -
mp3Folder;MP3文件保存路徑;可選參數(shù),當MP3為
TRUE時為必選參數(shù)電腦里可以原先不存在你所指定的文件夾,不存在時腳本會幫你創(chuàng)建;下同
mp4Folder;MP4文件保存路徑;必選參數(shù)
插播一條:文件保存路徑必須使用 絕對路徑 ,windowns絕對路徑以盤符開頭,如:D:/Bilidown/MP4
-
name;是否對下載的文件重命名;可選參數(shù)
默認不重命名,需要重命名的話需要將名字賦值給name參數(shù)
如在以上全為
TRUE的情況下,將下載的視頻及轉(zhuǎn)的音頻均命名為牛逼腳本下載的東東的代碼為:
Rscript bilidown.R --url "https://www.bilibili.com/video/BV1dt411a7FX?from=search&seid=3497926814758339505" --list TRUE --mp3 TRUE --mp3Folder D:/Bilidown/MP3 --mp4Folder D:/Bilidown/MP4 --name 牛逼腳本下載的東東
則輸出文件為:牛逼腳本下載的東東.mp3 和 牛逼腳本下載的東東.mp4
-
start 及 end
顯然這兩個也是成對出現(xiàn)的,如果你不想將MP3文件分割為你想要的部分,則兩個都賦值即可
若果想分割,則需要分別對它們進行賦值
賦的值為時間點,格式為
00:00:00,既時分秒比如你只想保留轉(zhuǎn)的MP3文件的10秒至1分10秒之間的部分,代碼為:
Rscript bilidown.R --url "https://www.bilibili.com/video/BV1JE411D74q?from=search&seid=12356753915334889298" --mp3 TRUE --mp3Folder D:/Bilidown/MP3 --mp4Folder D:/Bilidown/MP4 --name 牛逼腳本下載的東東 --start 00:00:10 --end 00:01:10
這就是該模式下最完整的代碼,整理好看一點:
Rscript bilidown.R --url "https://www.bilibili.com/video/BV1dt411a7FX?from=search&seid=3497926814758339505"
--mp3 TRUE
--mp3Folder D:/Bilidown/MP3
--mp4Folder D:/Bilidown/MP4
--name 牛逼腳本下載的東東
--start 00:00:10
--end 00:01:10
一目了然。注意我把list參數(shù)給去掉了,因為,如果你下載全P視頻,那你對多個視頻在同樣的時間點進行切割顯然是不符合邏輯的
② 文件模式
file文件格式要求
? 由于既要考慮用戶的體驗而格式不能太復雜,同時又要考慮作者的能力范圍,因為要實現(xiàn)多個視頻的流程化處理,該文件內(nèi)容稍許復雜,其實也不是很復雜,就是將CMD模式的一些參數(shù)值寫入該文件中而已,需要注意的是文件內(nèi)容格式必須遵守規(guī)定,具體規(guī)定如下:
- 每一行是相互獨立的下載信息,文件格式為 txt 格式
- 對于某一行來說,你最多可以提供6個下載信息,既CMD模式中提到的
url mp3 list name start end - 只需要提供參數(shù)值即可,參數(shù)名不需提供,每個參數(shù)值之間必須由空格作為分隔
- 當然,你也可以提供少于6個的下載信息,但必須遵循的是,參數(shù)值的順序是固定的,即按照==url mp3 list name start end==的順序,如果你所提供的參數(shù)在這6個里面不是連續(xù)的,比如你只想提供
url name兩個參數(shù),則你必須將中間空缺的位置的值設為==no==,既==url no no name==,右側(cè)空缺的參數(shù)則不需寫no,直接回車即可 - 例如,你將一個視頻的URL放在文件里,你想將下載的視頻轉(zhuǎn)換為音頻,但只下載此URL所代表的單P視頻,不需要重命名,而需要將音頻分割,則在URL文件里你可以這樣寫:
"https://www.bilibili.com/video/BV1dt411a7FX?from=search&seid=3497926814758339505" TRUE no no 00:00:10 00:01:10
- 文件的最后一行==必須是空行==!粘貼完最后一個URL記得==回車==一下!
- 雖然很有點麻煩,但用起來很香??
該模式參數(shù)設置
-
file; 含有url和其他處理信息的``txt`文件名;該模式下為必選參數(shù)
需要注意,文件須和
bilidown.R腳本位于同一文件夾下,否則你需要提供絕對路徑,如D:/Bilidown/URL_List.txt -
mp3Folder;可選參數(shù)
只要你想要這些視頻中的任何一個視頻轉(zhuǎn)為音頻,你就要提供改參數(shù)
mp4Folder;仍然是必選參數(shù)
腳本會循環(huán)file文件的每一行,每一循環(huán)執(zhí)行一次CMD模式
六、開始實戰(zhàn)
記得要先進入腳本所在文件夾:
d: & cd Bilidown
①CMD模式
單P下載
命令:
Rscript bilidown.R --url "https://www.bilibili.com/video/BV1JE411D74q?from=search&seid=12356753915334889298" --mp3 TRUE --mp3Folder D:/Bilidown/MP3 --mp4Folder D:/Bilidown/MP4 --name 周杰倫-秘密花園(扒帶) --start 00:00:10 --end 00:01:10
屏幕顯示的下載過程:
D:\Bilidown>Rscript bilidown.R --url "https://www.bilibili.com/video/BV1JE411D74q?from=search&seid=12356753915334889298" --mp3 TRUE --mp3Folder D:/Bilidown/MP3 --mp4Folder D:/Bilidown/MP4 --name 周杰倫-秘密花園(扒帶) --start 00:00:10 --end 00:01:10
Downloading video file ...
site: Bilibili
title: 周杰倫《秘密花園》編曲扒帶
stream:
- format: dash-flv720
container: mp4
quality: 高清 720P
size: 21.9 MiB (22968001 bytes)
# download-with: you-get --format=dash-flv720 [URL]
Downloading 周杰倫《秘密花園》編曲扒帶.mp4 ...
100% ( 21.9/ 21.9MB) ├████████████████████████████████████████┤[2/2] 743 kB/s
Merging video parts... Merged into 周杰倫《秘密花園》編曲扒帶.mp4
Skipping captions or danmaku.
Transcoding flv file to mp4 file
Transcoding mp4 file to mp3 file
Cutting mp3 file
Copying & rename files and remove tmpFolder
Done!
D:\Bilidown>
結(jié)果:
MP4 文件:

MP3文件:


可以看到時長只有一分鐘,因為我取的是 00:00:10 至 00:01:10
多P下載
多P下載就不必重命名了
命令:
Rscript bilidown.R --url "https://www.bilibili.com/video/BV17t411K7et?from=search&seid=3759713561223284474" --mp3 TRUE --list TRUE --mp3Folder D:/Bilidown/MP3 --mp4Folder D:/Bilidown/MP4
屏幕顯示的下載過程:
D:\Bilidown>Rscript bilidown.R --url "https://www.bilibili.com/video/BV17t411K7et?from=search&seid=3759713561223284474" --mp3 TRUE --list TRUE --mp3Folder D:/Bilidown/MP3 --mp4Folder D:/Bilidown/MP4
Downloading video file ...
site: Bilibili
title: 你能猜到這是周杰倫哪一首歌嗎?答案在2P (P1. 你能猜到這是周杰倫哪一首歌嗎?答案在2P)
stream:
- format: dash-flv720
container: mp4
quality: 高清 720P
size: 4.3 MiB (4464751 bytes)
# download-with: you-get --format=dash-flv720 [URL]
Downloading 你能猜到這是周杰倫哪一首歌嗎?答案在2P (P1. 你能猜到這是周杰倫哪一首歌嗎?答案在2P).mp4 ...
100% ( 4.3/ 4.3MB) ├████████████████████████████████████████┤[2/2] 473 kB/s
Merging video parts... Merged into 你能猜到這是周杰倫哪一首歌嗎?答案在2P (P1. 你能猜到這是周杰倫哪一首歌嗎?答案在2P).mp4
Skipping captions or danmaku.
site: Bilibili
title: 你能猜到這是周杰倫哪一首歌嗎?答案在2P (P2. 致敬科比_考古MV《天地一斗》)
stream:
- format: dash-flv720
container: mp4
quality: 高清 720P
size: 45.2 MiB (47435509 bytes)
# download-with: you-get --format=dash-flv720 [URL]
Downloading 你能猜到這是周杰倫哪一首歌嗎?答案在2P (P2. 致敬科比_考古MV《天地一斗》).mp4 ...
100% ( 45.2/ 45.2MB) ├████████████████████████████████████████┤[2/2] 92 kB/s
Merging video parts... Merged into 你能猜到這是周杰倫哪一首歌嗎?答案在2P (P2. 致敬科比_考古MV《天地一斗》).mp4
Skipping captions or danmaku.
Transcoding flv file to mp4 file
Transcoding mp4 file to mp3 file
Copying & rename files and remove tmpFolder
Done!
D:\Bilidown>
結(jié)果:
MP4文件:

MP3文件:

②文件模式
切記URL文件內(nèi)容格式?。。?/p>
我準備了幾個測試數(shù)據(jù),保存在同一文件夾下的``test.txt`文件中,有5個鏈接,給與了不同的處理模式。大家也可以在當前文件夾下找到。在使用的時候按照這樣的格式創(chuàng)建就行了,記得運行的代碼文件名字要改成你自己寫的。

運行代碼:
Rscript bilidown.R --file D:/Bilidown/test.txt --mp3Folder D:/Bilidown/MP3 --mp4Folder D:/Bilidown/MP4
屏幕顯示的下載過程:
D:\Bilidown>Rscript bilidown.R --file D:/Bilidown/test.txt --mp3Folder D:/Bilidown/MP3 --mp4Folder D:/Bilidown/MP4
Processing serial number 1, Remian 4
Downloading video file ...
site: Bilibili
title: 我把周杰倫婚禮進行曲扒帶編出來了
stream:
- format: dash-flv
container: mp4
quality: 高清 1080P
size: 23.7 MiB (24804205 bytes)
# download-with: you-get --format=dash-flv [URL]
Downloading 我把周杰倫婚禮進行曲扒帶編出來了.mp4 ...
100% ( 23.7/ 23.7MB) ├████████████████████████████████████████┤[2/2] 106 kB/s
Merging video parts... Merged into 我把周杰倫婚禮進行曲扒帶編出來了.mp4
Skipping captions or danmaku.
Transcoding flv file to mp4 file
Transcoding mp4 file to mp3 file
Copying & rename files and remove tmpFolder
Done!
Processing serial number 2, Remian 3
Downloading video file ...
site: Bilibili
title: 周杰倫秘密花園扒帶伴奏!既然原版的不夠清晰,那就自己做一個吧!
stream:
- format: dash-flv
container: mp4
quality: 高清 1080P
size: 18.2 MiB (19045299 bytes)
# download-with: you-get --format=dash-flv [URL]
Downloading 周杰倫秘密花園扒帶伴奏!既然原版的不夠清晰,那就自己做一個吧!.mp4 ...
100% ( 18.2/ 18.2MB) ├████████████████████████████████████████┤[2/2] 696 kB/s
Merging video parts... Merged into 周杰倫秘密花園扒帶伴奏!既然原版的不夠清晰,那就自己做一個吧!.mp4
Skipping captions or danmaku.
Transcoding flv file to mp4 file
Transcoding mp4 file to mp3 file
Copying & rename files and remove tmpFolder
Done!
Processing serial number 3, Remian 2
Downloading video file ...
site: Bilibili
title: 周杰倫在快本給吳昕的三鍵成曲扒帶
stream:
- format: dash-flv
container: mp4
quality: 高清 1080P
size: 31.1 MiB (32599288 bytes)
# download-with: you-get --format=dash-flv [URL]
Downloading 周杰倫在快本給吳昕的三鍵成曲扒帶.mp4 ...
100% ( 31.1/ 31.1MB) ├████████████████████████████████████████┤[2/2] 96 kB/s
Merging video parts... Merged into 周杰倫在快本給吳昕的三鍵成曲扒帶.mp4
Skipping captions or danmaku.
Transcoding flv file to mp4 file
Transcoding mp4 file to mp3 file
Copying & rename files and remove tmpFolder
Done!
Processing serial number 4, Remian 1
Downloading video file ...
site: Bilibili
title: 周杰倫編曲扒帶第一張專輯《反方向的鐘》編曲扒帶
stream:
- format: dash-flv
container: mp4
quality: 高清 1080P
size: 52.9 MiB (55428095 bytes)
# download-with: you-get --format=dash-flv [URL]
Downloading 周杰倫編曲扒帶第一張專輯《反方向的鐘》編曲扒帶.mp4 ...
100% ( 52.9/ 52.9MB) ├████████████████████████████████████████┤[2/2] 100 kB/s
Merging video parts... Merged into 周杰倫編曲扒帶第一張專輯《反方向的鐘》編曲扒帶.mp4
Skipping captions or danmaku.
Transcoding flv file to mp4 file
Transcoding mp4 file to mp3 file
Cutting mp3 file
Copying & rename files and remove tmpFolder
Done!
Processing serial number 5, Remian 0
Downloading video file ...
site: Bilibili
title: 周杰倫 《蒲公英的約定》完整扒帶還原-林邁可編曲 (P1. 蒲公英的約定)
stream:
- format: dash-flv
container: mp4
quality: 高清 1080P
size: 96.8 MiB (101538738 bytes)
# download-with: you-get --format=dash-flv [URL]
Downloading 周杰倫 《蒲公英的約定》完整扒帶還原-林邁可編曲 (P1. 蒲公英的約定).mp4 ...
100% ( 96.8/ 96.8MB) ├████████████████████████████████████████┤[2/2] 90 kB/s
Merging video parts... Merged into 周杰倫 《蒲公英的約定》完整扒帶還原-林邁可編曲 (P1. 蒲公英的約定).mp4
Skipping captions or danmaku.
site: Bilibili
title: 周杰倫 《蒲公英的約定》完整扒帶還原-林邁可編曲 (P2. 蒲公英的約定伴奏)
stream:
- format: dash-flv
container: mp4
quality: 高清 1080P
size: 61.7 MiB (64708427 bytes)
# download-with: you-get --format=dash-flv [URL]
Downloading 周杰倫 《蒲公英的約定》完整扒帶還原-林邁可編曲 (P2. 蒲公英的約定伴奏).mp4 ...
100% ( 61.7/ 61.7MB) ├████████████████████████████████████████┤[2/2] 659 kB/s
Merging video parts... Merged into 周杰倫 《蒲公英的約定》完整扒帶還原-林邁可編曲 (P2. 蒲公英的約定伴奏).mp4
Skipping captions or danmaku.
Transcoding flv file to mp4 file
Transcoding mp4 file to mp3 file
Copying & rename files and remove tmpFolder
Done!
D:\Bilidown>
每處理一個URL都會提示:Processing serial number 1, Remian 4,這告訴你當前處理第幾個URL,還剩多少個等待處理。
結(jié)果:
MP4文件:

MP3文件:

雖然寫URL文件有些麻煩,但現(xiàn)在看來是不是挺值得的??
視頻彈幕文件下載,并以txt格式輸出
結(jié)果展示:

排在上面的是最新的發(fā)布的彈幕,越往下越晚
使用方法
腳本:位于同一目錄下的
getChat.R-
參數(shù)
url;視頻鏈接;必選參數(shù)
-
name; 重命名;可選參數(shù)
- 不重命名會默認命名為`chat.txt,所以為了防止文件重復,最好命名一下
-
outFolder;指定
txt文件保存位置;可選參數(shù)- 指定路徑可以不存在,腳本會自動檢測
運行
Rscript getChat.R --url "https://www.bilibili.com/video/BV1aW411y7Ap?from=search&seid=1744832395255800797" --name 測試 --outFolder Chats

對比

FFmpeg的一些常用功能
文件格式的轉(zhuǎn)換,視音頻的切割都是使用 ffmpeg 軟件完成的,我只是加以包裝整合。
如果小伙伴們想單獨完成上述某一功能的話,ffmpeg 還需略懂一點的
功能介紹
同樣也是在終端里運行,直接使用ffmpeg命令即可,具體常用功能如下
① 格式轉(zhuǎn)換
不同視頻格式之間的轉(zhuǎn)換,視音頻之間的轉(zhuǎn)換等
比如輸入文件為:
xxx.format1,輸出文件為:xxx.format2即要把
xxx文件從格式format1轉(zhuǎn)換為`format2命令為:
ffmpeg -i xxx.format1 `xxx.format2`
- 以flv轉(zhuǎn)mp4為例:
ffmpeg -i test.flv `test.mp4`
② 視音頻切割
視頻同樣是可以切割的,不過我沒有加入這個功能,不過用法和音頻切割完全一樣
以音頻切割為例:
-
ffmpeg -ss 00:00:10 -t 00:01:00 -i input.mp3 -c copy output.mp3其中:
-
-i輸入的音頻 -
-c copy用原來的編碼并復制到新文件中 -
-ss起始時間 -
-t截取音頻時間長度
-
另外,搜資料時看到一位老兄寫道音視頻還可以有轉(zhuǎn)場效果,ffmpeg的功能真強大:
從0s開始淡入3s
ffmpeg -i input.mp3 -af "afade=t=in:ss=0:d=3" out.mp3從50秒開始淡出5s
ffmpeg -i input.mp3 -af "afade=t=out:st=50:d=5" out.mp3參數(shù)
-af為音頻濾鏡,afade為音頻淡入淡出。相應的如果是對視頻的操作,這里的參數(shù)afade處可以使用fade。
合并音視頻
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -lavfi hstack=inputs=3 output.mp4
需要一一指定輸入文件和輸入文件個數(shù)
如有疑問或糾錯,請聯(lián)系:jhaowong1998@sina.com
