已经安装ffmpeg并将安装路径正确添加至系统变量,仍然运行错误- torio._extension.utils - DEBUG - Loading FFmpeg - torio._extension.utils - DEBUG - Failed to load FFmpeg extension.
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.
相关文件是在的
ffmpeg路径也添加至系统变量中
求大佬帮忙解答
大佬这个问题解决了吗
我刚好解决这个问题,我发现如果我在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函数
https://github.com/wwbin2017/bailing/issues/52#issuecomment-2980427885 确实有用,终于解决了
conda install -c conda-forge ffmpeg=6.1
我刚好解决这个问题,我发现如果我在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函数
大佬,我在树莓派上遇到同样的问题,请问要怎么解决?谢谢!
您发的邮件我已收到,谢谢您!!!