Python调用FFmpeg无法识别同目录文件的问题求助
问题解决:Python调用FFmpeg提示找不到文件
问题描述
输入文件Media.ts和输出文件video.mp4均与Python脚本处于同一目录,但调用FFmpeg转换视频时,系统提示FileNotFoundError: [WinError 2] 系统找不到指定的文件,将网页视频下载到本地后问题依旧。
错误代码
import subprocess import pathlib def convert_video_to_mp4(input_file, output_file): print(pathlib.Path(__file__).parent.resolve()) ffmpeg_cmd = [ "ffmpeg" "-i", input_file, output_file ] try: subprocess.run(ffmpeg_cmd, check=True) print("Successfully converted") except subprocess.CalledProcessError as e: print("Conversion failed!") convert_video_to_mp4("Media.ts", "video.mp4")
完整错误信息
C:\Users\viofi\PycharmProjects\FFMPEGSERVER\venv\Scripts\python.exe C:\Users\viofi\PycharmProjects\FFMPEGSERVER\ffmpeg.py C:\Users\viofi\PycharmProjects\FFMPEGSERVER Traceback (most recent call last): File "C:\Users\viofi\PycharmProjects\FFMPEGSERVER\ffmpeg.py", line 21, in <module> convert_video_to_mp4("Media.ts", "video.mp4") File "C:\Users\viofi\PycharmProjects\FFMPEGSERVER\ffmpeg.py", line 15, in convert_video_to_mp4 subprocess.run(ffmpeg_cmd, check=True) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\subprocess.py", line 548, in run with Popen(*popenargs, **kwargs) as process: ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\subprocess.py", line 1026, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1776.0_x64__qbz5n2kfra8p0\Lib\subprocess.py", line 1538, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [WinError 2] 系统找不到指定的文件 Process finished with exit code 1
问题原因及修复方案
1. 命令列表语法错误
代码中ffmpeg_cmd列表的"ffmpeg"后缺少逗号,导致它与"-i"被合并为"ffmpeg-i",Python会把这个错误字符串当作要执行的命令,自然找不到不存在的程序。
修复后的命令列表:
ffmpeg_cmd = [ "ffmpeg", "-i", input_file, output_file ]
2. FFmpeg未加入系统PATH或需指定完整路径
若修复语法后仍报错,说明系统找不到FFmpeg可执行文件,可通过两种方式解决:
- 将FFmpeg加入系统PATH:找到FFmpeg安装目录下的
bin文件夹(如C:\ffmpeg\bin),添加到系统环境变量PATH中,重启Python运行环境即可。 - 指定FFmpeg完整路径:直接在命令中写入FFmpeg.exe的绝对路径,示例:
ffmpeg_cmd = [ "C:\\ffmpeg\\bin\\ffmpeg.exe", "-i", input_file, output_file ]
3. 代码缩进问题
原代码中print语句和try块的缩进不符合Python规范,修复后的完整代码:
import subprocess import pathlib def convert_video_to_mp4(input_file, output_file): print(pathlib.Path(__file__).parent.resolve()) ffmpeg_cmd = [ "ffmpeg", "-i", input_file, output_file ] try: subprocess.run(ffmpeg_cmd, check=True) print("转换成功") except subprocess.CalledProcessError as e: print("转换失败!") print(f"错误详情: {e}") convert_video_to_mp4("Media.ts", "video.mp4")
内容的提问来源于stack exchange,提问作者N_Viofile
相关产品推荐
相关产品推荐

