视频转换为8K60帧率
import tkinter as tk
from tkinter import filedialog, messagebox
import av
import osdef convert_video(input_file, output_file):# 打开输入视频流input_container = av.open(input_file)# 创建输出视频流output_container = av.open(output_file, 'w')# 添加视频流并设置参数video_stream = output_container.add_stream('h264', rate=60)video_stream.height = 4320video_stream.width = 7680video_stream.pix_fmt = 'yuv420p'# 添加音频流audio_stream = Nonefor stream in input_container.streams:if stream.type == 'audio':audio_stream = output_container.add_stream('aac', rate=stream.rate)audio_stream.channels = stream.channelsbreak# 逐帧处理视频for frame in input_container.decode(video=0):# 调整大小为8Kframe_resized = frame.reformat(width=7680, height=4320)# 写入到输出容器for packet in video_stream.encode(frame_resized):output_container.mux(packet)# 处理未写入的视频帧for packet in video_stream.encode():output_container.mux(packet)# 逐帧处理音频if audio_stream:for frame in input_container.decode(audio=0):# 将音频帧写入输出容器for packet in audio_stream.encode(frame):output_container.mux(packet)# 处理未写入的音频帧for packet in audio_stream.encode():output_container.mux(packet)# 关闭容器input_container.close()output_container.close()messagebox.showinfo("完成", "视频转换成功,已维持原视频时长!")def open_file():input_file = filedialog.askopenfilename(title="选择输入视频",filetypes=(("MP4 文件", "*.mp4"), ("所有文件", "*.*")))if input_file:# 获取输入文件的基础名称和扩展名base_name, ext = os.path.splitext(os.path.basename(input_file))# 创建新的输出文件名output_file = filedialog.asksaveasfilename(title="保存输出视频",defaultextension=".mp4",initialfile=f"{base_name}_8k_60fps{ext}",filetypes=(("MP4 文件", "*.mp4"), ("所有文件", "*.*")))if output_file:convert_video(input_file, output_file)# 创建主窗口
root = tk.Tk()
root.title("视频转换器")
root.geometry("300x150")# 创建按钮以打开文件
btn_open = tk.Button(root, text="打开视频文件", command=open_file)
btn_open.pack(pady=20)# 启动应用程序
root.mainloop()
首先,确保安装必要的库:
pip install av tkinter