from tkinter import Tk, filedialog, messagebox import subprocess import json # FFmpeg路径 FFMPEG_EXE rD:\ffmpeg-9.0.2-full_build\bin\ffmpeg.exe FFPROBE_EXE rD:\ffmpeg-9.0.2-full_build\bin\ffprobe.exe # def get_video_info(mp4_path): cmd [ FFPROBE_EXE, -v, error, -select_streams, v:0, -show_entries, streamwidth,height,r_frame_rate, -of, json, mp4_path ] result subprocess.run(cmd, capture_outputTrue, textTrue) info json.loads(result.stdout) stream info[streams][0] w stream[width] h stream[height] r_frame stream[r_frame_rate] return w, h, r_frame def mp4_to_yuv(): root Tk() root.withdraw() mp4_path filedialog.askopenfilename( title请选择MP4视频文件, filetypes[(视频, *.mp4 *.mkv *.avi *.mov), (所有文件, *.*)] ) if not mp4_path: messagebox.showinfo(提示, 未选择文件程序退出) return yuv_path filedialog.asksaveasfilename( title保存YUV文件, defaultextension.yuv, filetypes[(YUV裸流, *.yuv)] ) if not yuv_path: messagebox.showinfo(提示, 未选择保存路径程序退出) return try: print(正在读取视频信息...) w, h, fps_str get_video_info(mp4_path) print(f视频分辨率: {w}x{h}) print(f原始帧率: {fps_str}) pix_fmt yuv420p print(f\n开始导出YUV像素格式:{pix_fmt}开启去隔行) # 重点新增 -vf yadif 去隔行滤镜 cmd [ FFMPEG_EXE, -y, -i, mp4_path, -vf, yadif, # 去隔行消除条纹花屏 -c:v, rawvideo, -pix_fmt, pix_fmt, -r, fps_str, yuv_path ] subprocess.run(cmd, checkTrue) msg ( f✅ MP4转YUV完成\n\n f分辨率: {w}x{h}\n f帧率: {fps_str}\n f像素格式: {pix_fmt}\n f✅已启用去隔行处理 ) print(f\n{msg}) messagebox.showinfo(转换成功, msg) except Exception as e: messagebox.showerror(转换失败, f错误: {str(e)}) print(f异常: {str(e)}) if __name__ __main__: mp4_to_yuv()以上代码运行前需要先下载ffmpeg工具包下载路径https://www.gyan.dev/ffmpeg/builds/需要放在D盘D:\ffmpeg-9.0.2-full_build\bin注意不要嵌套多层文件夹bin 直接在 ffmpeg 根目录下面..CMD直接测试用ffmpeg 将 mp4转化成yuv源视频路径C:/Users/andin/Desktop/源视频.mp4导出yuv路径C:/Users/andin/Desktop/test1.yuv对应命令D:\ffmpeg-9.0.2-full_build\bin\ffmpeg.exe -y -i C:/Users/andin/Desktop/源视频.mp4 -pix_fmt yuv420p -colorspace bt709 -color_primaries bt709 -color_trc bt709 -color_range pc -c:v rawvideo -r 30000/1001 C:/Users/andin/Desktop/test1.yuv用ffmpeg 将 yuv转化成mp4选中的yuv路径C:/Users/andin/Desktop/test1.yuv输出的mp4路径C:/Users/andin/Desktop/test2.mp4对应命令D:\ffmpeg-9.0.2-full_build\bin\ffmpeg.exe -y -f rawvideo -video_size 1280x720 -pix_fmt yuv420p -color_range pc -r 30000/1001 -i C:/Users/andin/Desktop/test1.yuv C:/Users/andin/Desktop/test2.mp4效果视频格式转化的视频