python将多个音频文件与一张图片合成视频

代码中m4a可以换成mp3,图片和音频放同一目录,图片名image.jpg,多线程max_workers可以根据CPU核心数量修改。

import os

import subprocess

import sys

import concurrent.futures

import ffmpeg

def get_media_duration(media_path):

probe = ffmpeg.probe(media_path)

format = probe['format']

duration = format['duration']

print('duration: {}'.format(duration))

return duration

def convert_m4a_to_mp4(input_file_path,imput_image_path, output_file_path):

#ffmpeg -r 10 -f image2 -loop 1 -i image.jpg -i 01.mp3 -s 1920x1080 -pix_fmt yuvj420p -t 281 -vcodec libx264 output.mp4

print(input_file_path)

duration = get_media_duration(input_file_path)

cmd = f"ffmpeg -r 10 -f image2 -loop 1 -i \"{imput_image_path}\" -i \"{input_file_path}\" -s 640*480 -pix_fmt yuvj420p -t {duration} -vcodec libx264 \"{output_file_path}\""

os.system(cmd)

def convert_files(input_folder, output_folder):

检查输出文件夹是否存在,如果不存在则创建

if not os.path.exists(output_folder):

os.makedirs(output_folder)

创建 ThreadPoolExecutor,并限制最大线程数为 16

with concurrent.futures.ThreadPoolExecutor(max_workers=2) as executor:

遍历输入文件夹中的所有 WAV 文件

for root, dirs, files in os.walk(input_folder):

for filename in files:

if filename.endswith(".m4a"):

input_image_path = os.path.join(root, "image.jpg")

input_file_path = os.path.join(root, filename)

output_file_path = os.path.join(output_folder, os.path.splitext(filename)[0] + ".mp4")

提交任务给线程池

executor.submit(convert_m4a_to_mp4, input_file_path,input_image_path, output_file_path)

等待所有任务完成后退出

executor.shutdown()

if name == "main":

从命令行获取输入和输出文件夹的路径

if len(sys.argv) != 2:

print("Usage: python script.py input_folder")

sys.exit(1)

input_folder = sys.argv[1]

output_folder = sys.argv[1]

convert_files(input_folder, output_folder)

相关推荐
SmallBambooCode2 分钟前
【Flask】在Flask应用中使用Flask-Limiter进行简单CC攻击防御
后端·python·flask
IU宝12 分钟前
vector的使用,以及部分功能的模拟实现(C++)
开发语言·c++
抱抱宝13 分钟前
Pyecharts之图表样式深度定制
python·信息可视化·数据分析
码界筑梦坊22 分钟前
基于Flask的哔哩哔哩评论数据可视化分析系统的设计与实现
python·信息可视化·flask·毕业设计
大懒猫软件30 分钟前
如何有效使用Python爬虫将网页数据存储到Word文档
爬虫·python·自动化·word
小熊科研路(同名GZH)30 分钟前
【Matlab高端绘图SCI绘图模板】第05期 绘制高阶折线图
开发语言·matlab·信息可视化
大数据魔法师33 分钟前
1905电影网中国地区电影数据分析(二) - 数据分析与可视化
python·数据分析
&白帝&34 分钟前
JAVA JDK7时间相关类
java·开发语言·python
geovindu37 分钟前
Qt Designer and Python: Build Your GUI
开发语言·qt
Xiao Xiangζั͡ޓއއ38 分钟前
程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<1>
c语言·开发语言·程序人生·学习方法·改行学it