最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

Python代碼批量把音樂專輯轉(zhuǎn)為視頻發(fā)布b站

2023-06-03 20:41 作者:千城憶夢  | 我要投稿

一、使用場景:

我有一張音樂專輯,包含一張封面圖片和幾首歌。我想把這個(gè)專輯上傳到b站,需要把圖片轉(zhuǎn)為視頻,再和音頻拼接起來。

二、代碼成品:

三、事前準(zhǔn)備:

1、下載安裝Python,下載地址:https://www.python.org/

2、下載安裝PyCharm,下載地址:https://www.jetbrains.com/zh-cn/pycharm/download/

3、下載FFmpeg,Windows版下載地址:https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z),

解壓到一個(gè)合適的位置,保證以后不會(huì)移動(dòng),

打開文件夾進(jìn)入bin文件夾,將bin文件夾添加到環(huán)境變量中。

4、打開PyCharm新建項(xiàng)目,將main.py中的代碼替換為上方代碼。

5、在main.py所在的文件夾中,新建3個(gè)文件夾,分別命名為1、2、3。

1用來存放原始圖片和音頻,2用來存放生成的視頻,3用來存放視頻拼接音頻后的成品。

6、把圖片重命名為1.jpg。

7、音頻的批量重命名從1開始遞增,比如1.flac、2.flac、……、9.flac、10.flac、11.flac、……

四、代碼講解:

1、math庫:用了向上取整的函數(shù)ceil

2、subprocess庫:用來啟動(dòng)命令行

3、num:有多少個(gè)音頻

4、audio_type:音頻格式,一般是flac或mp3

5、scale:圖片分辨率,

-1:1080是把圖片高設(shè)為1080、寬對(duì)應(yīng)縮放,

1920:-1是把圖片寬設(shè)為1920、高對(duì)應(yīng)縮放,

兩種分辨率都要試試,選擇寬不超過1920且高不超過1080的那個(gè)分辨率,

一般都選1080。

6、subprocess.run:啟動(dòng)子進(jìn)程執(zhí)行命令行

如果這個(gè)命令有輸出,就用out存放輸出結(jié)果:

out = subprocess.run(cmd1, stdout=subprocess.PIPE).stdout

如果這個(gè)命令沒輸出,直接執(zhí)行就行了:

subprocess.run(cmd2)

7、cmd1:原始命令可看上一行的注釋,這個(gè)命令的作用是輸出某個(gè)音頻的時(shí)間長度(以秒為單位),比如114.514秒。各個(gè)參數(shù)我不懂,就不講解了。

out:用來存放輸出的時(shí)間長度

seconds:用來存放這個(gè)時(shí)間長度向上取整的結(jié)果,比如114.514向上取整為115

8、cmd2:原始命令可看上一行的注釋,這個(gè)命令的作用是根據(jù)seconds(時(shí)長)和scale(分辨率)生成視頻,下面講解各個(gè)參數(shù):

(1)-loop 1:只循環(huán)一次(本來是可以多張圖片循環(huán)多次的,但沒必要,這里只需要1張圖片循環(huán)1次就行了)

(2)-i ./1/1.jpg:輸入(input)的是1文件夾下的1.jpg

(3)-r 30:生成30幀的視頻

(4)-t?seconds:生成seconds時(shí)長的視頻

(5)-vf "scale=-1:1080,pad=floor(iw/2)*2:floor(ih/2)*2":

vf是視頻濾鏡,scale在上面第5點(diǎn)已經(jīng)講過了,pad指生成視頻的分辨率,格式是寬:高,iw、ih是scale的寬(input width)和高(input height)。

那為什么寬和高要先除以2,再向下取整,再乘2呢?

這是因?yàn)?,pad的格式只能是能被2整除的數(shù)。而我們對(duì)scale的處理是,先確定了高1080或?qū)?920其中一個(gè)之后,另一個(gè)再對(duì)應(yīng)縮放。如果縮放后的結(jié)果是奇數(shù)或小數(shù),那就不行了。所以最后的乘2是為了保證能被2整除,向下取整是為了保證高不會(huì)超過1080或?qū)挷粫?huì)超過1920。

(6)'./2/' + str(i) + '.mp4':生成對(duì)應(yīng)名稱的mp4,并存放到指定路徑中

(7)\:命令太長了,用來換行

9、cmd3:原始命令可看上一行的注釋,這個(gè)命令的作用是把生成的視頻和原始的音頻拼接為成品,下面講解各個(gè)參數(shù):

(1)-i 1.mp4 -i 1.flac:輸入(input)的是生成的視頻和原始的音頻

(2)-map 0:v:0:第1個(gè)0表示第1個(gè)輸入文件,即生成的視頻,v表示選擇視頻軌(video),第2個(gè)0表示選擇視頻軌中的第1個(gè)流。

(3)-map 1:a:0:1表示第2個(gè)輸入文件,即原始的音頻,a表示選擇音頻軌(audio),0表示選擇音頻軌中的第1個(gè)流。

(4)-c copy:c表示編碼格式(code),copy表示復(fù)制(即不進(jìn)行任何壓制,只是拼接)

(5)1.mkv:輸出的成品名稱


朋友,都看到最后了,點(diǎn)個(gè)免費(fèi)的贊吧~

Python代碼批量把音樂專輯轉(zhuǎn)為視頻發(fā)布b站的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
云浮市| 晋中市| 德惠市| 盐津县| 高青县| 巴青县| 钟祥市| 临澧县| 如皋市| 年辖:市辖区| 诸暨市| 吐鲁番市| 左权县| 沐川县| 梁山县| 宕昌县| 阳春市| 财经| 织金县| 承德县| 左贡县| 马山县| 平乐县| 东辽县| 定结县| 南皮县| 特克斯县| 长宁县| 武夷山市| 铅山县| 洪湖市| 大新县| 丰县| 自治县| 屏南县| 炎陵县| 奉化市| 鄄城县| 北海市| 尚志市| 茌平县|