py3处理音频文件信息

发布时间 2023-08-30 16:00:36作者: 骚年来支华子

from moviepy.editor import concatenate_videoclips, ImageClip, VideoFileClip
import cv2
import eyed3
import imghdr
from eyed3.id3.frames import ImageFrame
from PIL import Image, ImageFilter, ImageOps

input_file = "9.mp4" # 输入视频文件名
output_path = "fenge" # 分割之后的文件路径
video_files = ["9.mp4", "11.mp4"]
split_time = 10 #以10秒为单位进行分割
cover_image = "bb.jpg"

img = Image.open("aa.jpg")

def dodge(a,b,alpha):
return min(int(a255/(256-balpha)),255)

分割视频

def split_video(input_file, output_path):
video = VideoFileClip(input_file)
end_time = video.duration
print(f"当前视频的总时长数", end_time)
index = 1 #第几个视频
for i in range(0,int(end_time),10):
if i+ 10 < end_time:
segment = video.subclip(i, i+10)
else:
segment = video.subclip(i, end_time)
segment.write_videofile(f"{output_path}/output_{index}.mp4")
print(f"拆分{index}个视频成功")
index += 1

获取视频文件的封面图

video_path 视频文件地址

cover_image 获取到的封面图地址

def get_video_cover_image(video_path, cover_image):
vidcap = cv2.VideoCapture(video_path)
success,image = vidcap.read()
n = 1
while n < 30:
success, image = vidcap.read()
n+=1
imag = cv2.imwrite(cover_image,image)
if imag == True:
print('ok')

合并视频信息 将多个片段视频合并成一个视频

def merge_video(video_files,output_file):
video_clips = []
for file in video_files:
clip = VideoFileClip(file)
video_clips.append(clip)
final_clip = concatenate_videoclips(video_clips)
final_clip.write_videofile(output_file)

def saveMp3(mp3_path,img_path):
audioFile = eyed3.load(path = mp3_path)
audioFile.tag.artist = "xxx"
audioFile.tag.title = "xxx-外婆桥"
audioFile.tag.album = "乐队的夏天"
img_type = imghdr.what(img_path)
audioFile.tag.images.set(ImageFrame.FRONT_COVER, open(img_path,'rb').read(),'image/'+img_type)
audioFile.tag.save(version = eyed3.id3.ID3_DEFAULT_VERSION)

def draw(img,blur=10,alpha=1.0):
img1 = img.convert('L')
img2 = img1.copy()
img2 = ImageOps.invert(img2)

for i in range(blur):
    img2 = img2.filter(ImageFilter.BLUR)
width,height = img1.size
for x in range(width):
    for y in range(height):
        a = img1.getpixel((x,y))
        b = img2.getpixel((x,y))
        img1.putpixel((x,y),dodge(a,b,alpha))
img1.save("n.jpg")

if name == "main":
draw(img)
#saveMp3('外婆桥.mp3',cover_image)
# print(f"处理合并视频文件{input_file},输出视频文件路径{output_path}")
# split_video(input_file, output_path)
# print(f"获取视频封面图信息")
# get_video_cover_image(input_file, cover_image)
``