veilletech.fr
6 oct. Feed du jour
#08 PYTHON Article

TorchCodec remplace read_video et StreamReader

Une bibliothèque pour lire, deux pour transformer. Fin du doublon.

PyTorch range sa pile multimédia : TorchCodec décode et encode images, vidéo et audio, sur CPU comme sur CUDA ; TorchVision et TorchAudio ne gardent que les transformations. Les anciennes API de décodage (read_video, VideoReader, StreamReader…) sont dépréciées ou supprimées, et les trois bibliothèques ont désormais une ABI stable.

2 min de lectureintermédiairevidéo 1:28
Partager
Sommaire7 sections
  1. Ce qui se passe
  2. Ce qui disparaît
  3. Le code
  4. Une ABI stable
  5. Les limites
  6. Migrer
  7. À retenir

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 :

Ce qui disparaît

Le décodage était dispersé :

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é) :

Python
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 :

Python
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

Migrer

Terminal
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.