bailing icon indicating copy to clipboard operation
bailing copied to clipboard

已经安装ffmpeg并将安装路径正确添加至系统变量,仍然运行错误- torio._extension.utils - DEBUG - Loading FFmpeg - torio._extension.utils - DEBUG - Failed to load FFmpeg extension.

Open JieHeNO1 opened this issue 10 months ago • 7 comments

PS E:\Program\DeepLearning\bailing-main> python main.py pygame 2.6.1 (SDL 2.28.4, Python 3.11.11) Hello from the pygame community. https://www.pygame.org/contribute.html 2025-03-29 21:50:03,672 - torio._extension.utils - DEBUG - Loading FFmpeg6 2025-03-29 21:50:03,674 - torio._extension.utils - DEBUG - Failed to load FFmpeg6 extension. Traceback (most recent call last): File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 116, in _find_ffmpeg_extension ext = _find_versionsed_ffmpeg_extension(ffmpeg_ver) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 108, in _find_versionsed_ffmpeg_extension _load_lib(lib) File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 94, in load_lib torch.ops.load_library(path) File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torch_ops.py", line 1295, in load_library ctypes.CDLL(path) File "E:\Installation\anaconda3\envs\bailing2\Lib\ctypes_init.py", line 376, in init self._handle = _dlopen(self._name, mode) ^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: Could not find module 'E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio\lib\libtorio_ffmpeg6.pyd' (or one of its dependencies). Try using the full path with constructor syntax. 2025-03-29 21:50:03,676 - torio._extension.utils - DEBUG - Loading FFmpeg5 2025-03-29 21:50:03,678 - torio._extension.utils - DEBUG - Failed to load FFmpeg5 extension. Traceback (most recent call last): File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 116, in _find_ffmpeg_extension ext = _find_versionsed_ffmpeg_extension(ffmpeg_ver) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 108, in _find_versionsed_ffmpeg_extension _load_lib(lib) File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 94, in load_lib torch.ops.load_library(path) File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torch_ops.py", line 1295, in load_library ctypes.CDLL(path) File "E:\Installation\anaconda3\envs\bailing2\Lib\ctypes_init.py", line 376, in init self._handle = _dlopen(self._name, mode) ^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: Could not find module 'E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio\lib\libtorio_ffmpeg5.pyd' (or one of its dependencies). Try using the full path with constructor syntax. 2025-03-29 21:50:03,679 - torio._extension.utils - DEBUG - Loading FFmpeg4 2025-03-29 21:50:03,680 - torio._extension.utils - DEBUG - Failed to load FFmpeg4 extension. Traceback (most recent call last): File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 116, in _find_ffmpeg_extension ext = _find_versionsed_ffmpeg_extension(ffmpeg_ver) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 108, in _find_versionsed_ffmpeg_extension _load_lib(lib) File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 94, in load_lib torch.ops.load_library(path) File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torch_ops.py", line 1295, in load_library ctypes.CDLL(path) File "E:\Installation\anaconda3\envs\bailing2\Lib\ctypes_init.py", line 376, in init self._handle = _dlopen(self._name, mode) ^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: Could not find module 'E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio\lib\libtorio_ffmpeg4.pyd' (or one of its dependencies). Try using the full path with constructor syntax. 2025-03-29 21:50:03,681 - torio._extension.utils - DEBUG - Loading FFmpeg 2025-03-29 21:50:03,683 - torio._extension.utils - DEBUG - Failed to load FFmpeg extension. Traceback (most recent call last): File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 116, in _find_ffmpeg_extension ext = _find_versionsed_ffmpeg_extension(ffmpeg_ver) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\Installation\anaconda3\envs\bailing2\Lib\site-packages\torio_extension\utils.py", line 106, in _find_versionsed_ffmpeg_extension raise RuntimeError(f"FFmpeg{version} extension is not available.") RuntimeError: FFmpeg extension is not available.

相关文件是在的 Image

ffmpeg路径也添加至系统变量中 Image

JieHeNO1 avatar Mar 29 '25 13:03 JieHeNO1

求大佬帮忙解答

JieHeNO1 avatar Mar 29 '25 13:03 JieHeNO1

大佬这个问题解决了吗

2018-Summer avatar Apr 17 '25 09:04 2018-Summer

我刚好解决这个问题,我发现如果我在Windows平台上不使用ctypes.CDLL强制加载动态库,就会报错找不到动态库,即使加到环境变量中也会报错 就是这个 2025-03-29 21:50:03,683 - torio._extension.utils - DEBUG - Failed to load FFmpeg extension. 解决方法:ctypes.CDLL(avcodec-60.dll) 直接加载ffmpeg的动态库,如果你不知道模块加载顺序、或者要加载什么动态库,就在所有module前加全部动态库

"""
Windows 平台的库加载器
"""

import ctypes
import os
from os import environ


def load_libraries():
    """加载 Windows 平台的 FFmpeg DLL 文件"""
    ffmpeg_path = environ.get("FFMPEG_DLL_PATH")

    dll_list = [
        "avcodec-60.dll",
        "avdevice-60.dll",
        "avfilter-9.dll",
        "avformat-60.dll",
        "avutil-58.dll",
        "swresample-4.dll",
        "swscale-7.dll",
    ]

    # 检查 FFmpeg 路径是否存在
    if not os.path.exists(ffmpeg_path):
        print(f"Warning: FFmpeg path {ffmpeg_path} does not exist")
        return False

    loaded_count = 0
    for dll in dll_list:
        dll_path = ffmpeg_path + dll
        try:
            if os.path.exists(dll_path):
                ctypes.CDLL(dll_path)
                loaded_count += 1
                print(f"Loaded: {dll}")
            else:
                print(f"Warning: {dll_path} not found")
        except Exception as e:
            print(f"Error loading {dll}: {e}")

    print(f"Successfully loaded {loaded_count}/{len(dll_list)} Windows DLL files")
    return loaded_count > 0

类似这样,然后在 main.py 中执行load_libraries函数

yeisme avatar Jun 17 '25 13:06 yeisme

https://github.com/wwbin2017/bailing/issues/52#issuecomment-2980427885 确实有用,终于解决了

Image

NGC717 avatar Jun 30 '25 04:06 NGC717

conda install -c conda-forge ffmpeg=6.1

zhmxiaowo avatar Jul 16 '25 06:07 zhmxiaowo

我刚好解决这个问题,我发现如果我在Windows平台上不使用ctypes.CDLL强制加载动态库,就会报错找不到动态库,即使加到环境变量中也会报错 就是这个 2025-03-29 21:50:03,683 - torio._extension.utils - DEBUG - Failed to load FFmpeg extension. 解决方法:ctypes.CDLL(avcodec-60.dll) 直接加载ffmpeg的动态库,如果你不知道模块加载顺序、或者要加载什么动态库,就在所有module前加全部动态库

""" Windows 平台的库加载器 """

import ctypes import os from os import environ

def load_libraries(): """加载 Windows 平台的 FFmpeg DLL 文件""" ffmpeg_path = environ.get("FFMPEG_DLL_PATH")

dll_list = [
    "avcodec-60.dll",
    "avdevice-60.dll",
    "avfilter-9.dll",
    "avformat-60.dll",
    "avutil-58.dll",
    "swresample-4.dll",
    "swscale-7.dll",
]

# 检查 FFmpeg 路径是否存在
if not os.path.exists(ffmpeg_path):
    print(f"Warning: FFmpeg path {ffmpeg_path} does not exist")
    return False

loaded_count = 0
for dll in dll_list:
    dll_path = ffmpeg_path + dll
    try:
        if os.path.exists(dll_path):
            ctypes.CDLL(dll_path)
            loaded_count += 1
            print(f"Loaded: {dll}")
        else:
            print(f"Warning: {dll_path} not found")
    except Exception as e:
        print(f"Error loading {dll}: {e}")

print(f"Successfully loaded {loaded_count}/{len(dll_list)} Windows DLL files")
return loaded_count > 0

类似这样,然后在 main.py 中执行load_libraries函数

大佬,我在树莓派上遇到同样的问题,请问要怎么解决?谢谢!

cheruidonglu avatar Aug 23 '25 15:08 cheruidonglu

您发的邮件我已收到,谢谢您!!!

hjxbin avatar Aug 23 '25 15:08 hjxbin