torchaudio.io未正确调用FFmpeg致h264_cuvid解码失败求助
解决Torchaudio中"Unsupported codec: h264_cuvid"错误
问题背景
运行Torchaudio硬件加速GPU解码代码时触发RuntimeError: Unsupported codec: "h264_cuvid",但系统命令行下FFmpeg可正常调用h264_cuvid解码器完成视频解码。环境信息:
- GPU: RTX 3090 Ti
- 系统: Ubuntu 22.04
- Torch版本:
1.14.0.dev20221013+cu116 - Torchaudio版本:
0.13.0.dev20221013+cu116
解决方案
1. 排查Torchaudio绑定的FFmpeg能力
Torchaudio自带的FFmpeg可能未编译NVIDIA硬件加速支持,先确认其可用解码器列表:
import torchaudio print(torchaudio.utils.ffmpeg_utils.get_ffmpeg_version()) print(torchaudio.utils.ffmpeg_utils.get_available_decoders())
若输出中无h264_cuvid,说明Torchaudio的FFmpeg缺失该组件。
2. 重新编译Torchaudio链接系统FFmpeg
利用已支持硬件加速的系统FFmpeg重新编译Torchaudio:
- 安装编译依赖:
sudo apt-get install build-essential cmake libavcodec-dev libavformat-dev libavutil-dev libswscale-dev
- 克隆对应版本的Torchaudio源码:
git clone https://github.com/pytorch/audio.git cd audio git checkout tags/v0.13.0.dev20221013
- 指定使用系统FFmpeg并编译安装:
export USE_SYSTEM_FFMPEG=1 python setup.py install
3. 简化StreamReader配置
尝试省略手动指定解码器,让Torchaudio自动匹配CUDA解码器:
cuda_conf = { "hw_accel": "cuda:0", }
Torchaudio会根据硬件和视频编码自动选择合适的硬件解码器,避免手动指定的兼容性问题。
4. 验证CUDA环境兼容性
确保NVIDIA驱动版本与Torch的CUDA版本(cu116)匹配:
nvidia-smi nvcc --version
若驱动版本低于CUDA 11.6要求,升级NVIDIA驱动至对应版本。
内容的提问来源于stack exchange,提问作者IntegrateThis
相关产品推荐
相关产品推荐

