在Kaggle中使用torchvision的VideoReader读取视频时遇属性错误
解决torchvision VideoReader的AttributeError: 'AudioCodecContext' has no attribute 'average_rate'问题
问题分析
你在Kaggle笔记本中使用torchvision.io.VideoReader读取视频时触发的错误,核心原因有两个:
- 库冲突:同时安装了
av和pyav(二者是同一个库的新旧PyPI包名),导致版本冲突引发API异常。 - 版本不兼容:torchvision 0.18.0与av 12.x版本存在API不匹配,av 12.x移除了
AudioCodecContext.average_rate属性,但torchvision的代码仍在调用该属性。
解决方案
1. 彻底清理并重新安装兼容的库组合
首先卸载所有冲突或不兼容的库,再安装经过验证的兼容版本:
!pip uninstall -y av pyav torch torchvision torchaudio !pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 av==11.0.0
2. 规避音频流相关错误(可选)
如果视频文件的音频流存在异常,即使安装了兼容版本,读取元数据时仍可能触发错误,可通过以下方式规避:
import torch import torchvision import os video_path = os.path.join(VIDEOS, '001', '001_segment_1.mp4') # 仅加载视频流,跳过音频流处理 video = torchvision.io.VideoReader(video_path, stream_type='video') # 提取元数据时过滤音频相关内容 metadata = video.get_metadata() video_only_metadata = {key: val for key, val in metadata.items() if key != 'audio'} print(video_only_metadata)
内容的提问来源于stack exchange,提问作者Felipe Marra
相关产品推荐
相关产品推荐

