欢迎光临散文网 会员登陆 & 注册

Python代码批量把音乐专辑转为视频发布b站

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

一、使用场景:

我有一张音乐专辑,包含一张封面图片和几首歌。我想把这个专辑上传到b站,需要把图片转为视频,再和音频拼接起来。

二、代码成品:

三、事前准备:

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),

解压到一个合适的位置,保证以后不会移动,

打开文件夹进入bin文件夹,将bin文件夹添加到环境变量中。

4、打开PyCharm新建项目,将main.py中的代码替换为上方代码。

5、在main.py所在的文件夹中,新建3个文件夹,分别命名为1、2、3。

1用来存放原始图片和音频,2用来存放生成的视频,3用来存放视频拼接音频后的成品。

6、把图片重命名为1.jpg。

7、音频的批量重命名从1开始递增,比如1.flac、2.flac、……、9.flac、10.flac、11.flac、……

四、代码讲解:

1、math库:用了向上取整的函数ceil

2、subprocess库:用来启动命令行

3、num:有多少个音频

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

5、scale:图片分辨率,

-1:1080是把图片高设为1080、宽对应缩放,

1920:-1是把图片宽设为1920、高对应缩放,

两种分辨率都要试试,选择宽不超过1920且高不超过1080的那个分辨率,

一般都选1080。

6、subprocess.run:启动子进程执行命令行

如果这个命令有输出,就用out存放输出结果:

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

如果这个命令没输出,直接执行就行了:

subprocess.run(cmd2)

7、cmd1:原始命令可看上一行的注释,这个命令的作用是输出某个音频的时间长度(以秒为单位),比如114.514秒。各个参数我不懂,就不讲解了。

out:用来存放输出的时间长度

seconds:用来存放这个时间长度向上取整的结果,比如114.514向上取整为115

8、cmd2:原始命令可看上一行的注释,这个命令的作用是根据seconds(时长)和scale(分辨率)生成视频,下面讲解各个参数:

(1)-loop 1:只循环一次(本来是可以多张图片循环多次的,但没必要,这里只需要1张图片循环1次就行了)

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

(3)-r 30:生成30帧的视频

(4)-t seconds:生成seconds时长的视频

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

vf是视频滤镜,scale在上面第5点已经讲过了,pad指生成视频的分辨率,格式是宽:高,iw、ih是scale的宽(input width)和高(input height)。

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

这是因为,pad的格式只能是能被2整除的数。而我们对scale的处理是,先确定了高1080或宽1920其中一个之后,另一个再对应缩放。如果缩放后的结果是奇数或小数,那就不行了。所以最后的乘2是为了保证能被2整除,向下取整是为了保证高不会超过1080或宽不会超过1920。

(6)'./2/' + str(i) + '.mp4':生成对应名称的mp4,并存放到指定路径中

(7)\:命令太长了,用来换行

9、cmd3:原始命令可看上一行的注释,这个命令的作用是把生成的视频和原始的音频拼接为成品,下面讲解各个参数:

(1)-i 1.mp4 -i 1.flac:输入(input)的是生成的视频和原始的音频

(2)-map 0:v:0:第1个0表示第1个输入文件,即生成的视频,v表示选择视频轨(video),第2个0表示选择视频轨中的第1个流。

(3)-map 1:a:0:1表示第2个输入文件,即原始的音频,a表示选择音频轨(audio),0表示选择音频轨中的第1个流。

(4)-c copy:c表示编码格式(code),copy表示复制(即不进行任何压制,只是拼接)

(5)1.mkv:输出的成品名称


朋友,都看到最后了,点个免费的赞吧~

Python代码批量把音乐专辑转为视频发布b站的评论 (共 条)

分享到微博请遵守国家法律