You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:00:37