Python 实现:MP4 切片成 M3U8,TS 伪装图片上传图床并带配置界面
以下是一个简单的 Python 程序,用于将 MP4 文件切片成 M3U8 文件,并将 TS 文件伪装成图片上传到图床。该程序使用 tkinter 创建一个简单的界面,允许用户设置图床链接配置。 本示例中使用了第三方库 pydub 和 requests,因此在运行之前需要确保已经安装了这两个库。 ```python import os import tkinter as tk from tkinter import filedialog from tkinter import messagebox from pydub import AudioSegment import requests class VideoSlicer: def __init__(self): self.root = tk.Tk() self.root.title("Video Slicer") self.root.geometry("300x200") self.config_label = tk.Label(self.root, text="图床链接配置:") self.config_label.pack() self.config_entry = tk.Entry(self.root, width=50) self.config_entry.pack() self.browse_button = tk.Button(self.root, text="选择文件", command=self.select_file) self.browse_button.pack() self.slice_button = tk.Button(self.root, text="切片", command=self.slice_video) self.slice_button.pack() self.root.mainloop() def select_file(self): file_path = filedialog.askopenfilename() if file_path: self.file_path = file_path else: messagebox.showerror("错误", "请选择一个文件!") def slice_video(self): try: file_name = os.path.basename(self.file_path) output_dir = os.path.dirname(self.file_path) output_folder = os.path.join(output_dir, "sliced") os.makedirs(output_folder, exist_ok=True) audio = AudioSegment.from_file(self.file_path, "mp4") duration = audio.duration_seconds segment_duration = 10 # 每个切片的持续时间(秒) n_segments = int(duration / segment_duration) + 1 m3u8_content = "#EXTM3U\n" for i in range(n_segments): start_time = i * segment_duration * 1000 end_time = start_time + segment_duration * 1000 segment = audio[start_time:end_time] segment_file = os.path.join(output_folder, f"segment{i}.ts") segment.export(segment_file, format="mp3") # 将 TS 文件伪装成图片上传到图床 image_url = self.upload_to_image_host(segment_file) m3u8_content += f"#EXTINF:{segment_duration},\n" + image_url + "\n" m3u8_file = os.path.join(output_folder, "output.m3u8") with open(m3u8_file, "w") as f: f.write(m3u8_content) messagebox.showinfo("成功", "切片完成!") except Exception as e: messagebox.showerror("错误", str(e)) def upload_to_image_host(self, file_path): try: # 使用图床链接配置上传文件 url = self.config_entry.get() with open(file_path, "rb") as f: files = {'file': f} response = requests.post(url, files=files) image_url = response.json().get('url') return image_url except Exception as e: raise ValueError(f"上传文件失败: {str(e)}") if __name__ == "__main__": VideoSlicer() ``` 运行此程序后,将会弹出一个界面。在界面中,你可以选择要切片的 MP4 文件,然后通过点击 "切片" 按钮开始切片过程。在切片过程中,每个切片会被伪装成图片并上传到图床,并且生成一个 M3U8 文件。图床链接配置可在界面中设置。 图床链接配置指向一个可以接受文件上传的图床 API 接口。你需要将图床链接配置替换为你自己的图床 API 接口。 ######[AI写代码神器 | 2394点数解答 | 2024-09-26 20:32:33]
- Java JFrame 实现多界面跳转:含登录、注册及个人信息管理功能(讯飞星火 | 503点数解答 | 2024-06-06 23:49:29)408
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)490
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)374
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)443
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)436
- 用Python轻松将PPT每页转为图片,附代码示例!(阿里通义 | 315点数解答 | 2024-04-23 10:01:04)1386
- Python 实现:在 Windows 系统将 PPT 每页轻松转为图片(百度文心 | 692点数解答 | 2024-10-30 18:08:44)389
- Python 实现:轻松将 PPT 每页转换为图片(DeepSeek | 462点数解答 | 2025-02-17 17:26:45)286
- MATLAB秒绘:一阶系统G(s)=1/(ts - 1) 当t=1,2,3时的Nyquist图! ( | 465点数解答 | 2024-04-28 11:21:19)163
- MATLAB 实现一阶系统 g(s)=1/(ts - 1) 当 t 为 1、2、3 时的 Nyquist 图绘制( | 634点数解答 | 2024-04-28 11:28:24)162
- TypeScript:string|undefined 类型变量与空字符串用 || 组合的结果揭秘 (字节豆包 | 173点数解答 | 2024-09-30 08:40:09)196
- 巧用高斯滤波器:去除信号高斯噪声并可视化滤波前后效果(讯飞星火 | 605点数解答 | 2024-12-09 15:33:46)177