Ce qui se passe
L'équipe PyTorch fait le bilan de deux ans de consolidation de ses bibliothèques multimédia. La répartition est désormais nette :
- décoder et encoder — images, vidéo, audio, sur CPU et CUDA : TorchCodec ;
- transformer les tenseurs : TorchVision pour l'image et la vidéo, TorchAudio pour l'audio ;
- modèles, jeux de données et pipelines de ces deux bibliothèques : plus développés activement. L'équipe renvoie vers l'écosystème, Hugging Face en tête.
Ce qui disparaît
Le décodage était dispersé :
- TorchVision :
io.read_video()etio.VideoReader(), sur trois moteurs — PyAV, FFmpeg en C++, CUDA/NVCUVID. Seul PyAV marchait sans compilation depuis les sources ; les deux autres étaient liés à une version précise de FFmpeg ; - TorchAudio :
StreamReaderetStreamWriter, plus des utilitaires audio sur FFmpeg, libsoundfile ou libsox.
Ces API de décodage et d'encodage sont dépréciées ou déjà supprimées.
Les raisons avancées : un seul endroit où chercher, un seul endroit à optimiser — TorchCodec est annoncé plus rapide que les anciennes implémentations, surtout en décodage vidéo CUDA — et une seule bibliothèque pour porter les dépendances natives : six versions majeures de FFmpeg (4 à 9), le SDK vidéo de NVIDIA, libjpeg, libpng…
Le code
Vidéo, avec les transformations v2 de TorchVision (exemple adapté) :
import torch
from torchcodec.decoders import VideoDecoder
from torchvision.transforms import v2
frames = VideoDecoder("entrainement.mp4")[0:16] # FrameBatch uint8 (16, C, H, W)
pipeline = v2.Compose([
v2.Resize(256),
v2.CenterCrop(224),
v2.ToDtype(torch.float32, scale=True),
])
x = pipeline(frames.data)Audio, avec TorchAudio :
from torchcodec.decoders import AudioDecoder
from torchaudio.transforms import MelSpectrogram
audio = AudioDecoder("voix.wav").get_all_samples()
mel = MelSpectrogram(sample_rate=audio.sample_rate)(audio.data)Images : decode_image. Encodage : VideoEncoder, AudioEncoder,
JpegEncoder, PngEncoder.
Une ABI stable
TorchCodec, TorchVision et TorchAudio sont désormais compatibles ABI : une version continue de fonctionner avec les versions suivantes de PyTorch, sans recompilation. Leurs numéros et leurs dates de sortie se découplent donc de ceux de PyTorch — c'est voulu.
Les limites
- TorchAudio a perdu beaucoup d'API. Certaines, très utilisées et d'abord promises à la suppression, ont été conservées après les retours de la communauté (pytorch/audio#3902).
- Aucun chiffre de performance dans ce billet ; un second est annoncé sur les nouveautés et le réglage d'un pipeline complet.
Migrer
grep -rnE "read_video|VideoReader|StreamReader|StreamWriter" --include="*.py" .Puis suivre le guide de migration de TorchCodec.
Source : Evolution of the PyTorch Media Processing Landscape, blog PyTorch, 5 octobre 2026.