Données DV au format de fichier AVI
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Microsoft a spécifié le format de stockage des données de vidéo numérique (DV) dans des fichiers AVI. La conformité à cette spécification garantit que les fichiers AVI créés dans ce format seront compatibles avec les futures versions de l’architecture vidéo numérique DirectShow pour la plateforme Windows.
Cet article décrit le format des fichiers AVI contenant des données DV. Des FOURCS (codes à quatre caractères) spécifiques pour les flux de données DV entrelacés et les gestionnaires de flux de compression/décompresseur DV sont définis. La structure de format de flux pour les données DV est définie. Les spécifications pour deux méthodes de stockage des données DV au format de fichier AVI sont spécifiées.
Il est supposé que le lecteur est familiarisé avec le format de données DV. (Ce format est défini dans la spécification des magnétoscopes numériques à l’usage des consommateurs, également appelée Livre bleu.)
Il existe deux types de fichiers AVI DV : les fichiers AVI qui contiennent un seul flux de données DV, appelé fichiers de type 1 ; et les fichiers AVI qui contiennent la vidéo DV en tant que flux « vids » et les fichiers audio DV en tant que flux « auds », appelés fichiers de type 2 .
Fichiers AVI contenant un flux de données DV (type 1)
Les données DV entrelacées peuvent être stockées dans leur format natif en tant que flux unique dans un fichier RIFF AVI. Cela présente l’avantage d’utiliser la quantité minimale de stockage de données pour DV. Le principal inconvénient est que ce format de fichier n’est pas rétrocompatible avec Video pour Windows, car il ne contient ni un flux vidéo « vids » ni un flux audio « auds ». La prise en charge du flux DV entrelacé est fournie via les filtres DV Muxer et DV Splitter fournis avec DirectShow.
Les données DV peuvent être stockées dans un seul flux au sein d’un fichier RIFF AVI en spécifiant les FOURCC « iavs » (flux audio et vidéo entrelacés) FOURCC (code à quatre caractères) dans le membre fccType et l’un des « dvsd », « dvhd » ou « dvsl » fourccs dans le membre fccHandler du segment d’en-tête de flux « strh ». Les images par seconde du flux vidéo doivent être spécifiées dans les membres dwRate et dwScale , ainsi que le nombre total de blocs vidéo dans le segment « movi » dans le membre dwLength .
Le gestionnaire de flux « dvsd » FOURCC spécifie que les données DV sont telles que définies dans la partie 2 de la spécification des magnétoscopes numériques à l’usage des consommateurs. La vidéo est au format 525 lignes à 29,97 Hz (525-60) ou 625 lignes à 25,00 Hz (625-50).
Le gestionnaire de flux « dvhd » FOURCC spécifie que les données DV sont définies dans la partie 3 de la spécification des magnétoscopes numériques à usage consommateur. La vidéo est au format 1125 lignes à 30,00 Hz (1125-60) ou 1250 lignes à 25,00 Hz (1250-50).
Le gestionnaire de flux « dvsl » FOURCC spécifie que les données DV sont telles que définies dans la partie 6 de spécification des magnétoscopes numériques à usage consommateur. La vidéo est au format SD (SDL) à compression élevée.
Notes
Le reste de cet article fournit des définitions pour les flux « dvsd ».
Le segment d’en-tête de flux doit être suivi d’un segment de format de flux DVINFO .
Les données DV réelles sont stockées sous forme de segments « ##dc » dans le segment « movi » (le ## au format représente l’identificateur de flux). Chaque segment contient une trame de données, soit 10 ou 12 séquences DIF DV pour 525-60 ou 625-50 systèmes, respectivement. Le format de séquence DIF DV ('dvsd') est défini dans la partie 2 de la spécification des magnétoscopes numériques à l’usage des consommateurs.
L’exemple suivant montre le formulaire RIFF AIFF pour un fichier AVI avec un flux de données DV, développé avec des blocs d’en-tête terminés.
00000000 RIFF (0FAE35D4) 'AVI '
0000000C LIST (00000106) 'hdrl'
00000018 avih (00000038)
dwMicroSecPerFrame : 33367
dwMaxBytesPerSec : 3728000
dwPaddingGranularity : 0
dwFlags : 0x810 HASINDEX | TRUSTCKTYPE
dwTotalFrames : 2192
dwInitialFrames : 0
dwStreams : 1
dwSuggestedBufferSize : 120000
dwWidth : 720
dwHeight : 480
dwReserved : 0x0
00000058 LIST (0000006C) 'strl'
00000064 strh (00000038)
fccType : 'iavs'
fccHandler : 'dvsd'
dwFlags : 0x0
wPriority : 0
wLanguage : 0x0 undefined
dwInitialFrames : 0
dwScale : 100 (29.970 Frames/Sec)
dwRate : 2997
dwStart : 0
dwLength : 2192
dwSuggestedBufferSize : 120000
dwQuality : 0
dwSampleSize : 0
rcFrame : 0,0,720,480
000000A4 strf (00000020)
dwDVAAuxSrc : 0x........
dwDVAAuxCtl : 0x........
dwDVAAuxSrc1 : 0x........
dwDVAAuxCtl1 : 0x........
dwDVVAuxSrc : 0x........
dwDVVAuxCtl : 0x........
dwDVReserved[2] : 0,0
000000CC LIST (0FADAC00) 'movi'
0FADACD4 idx1 (00008900)
Fichiers AVI contenant des flux vidéo DV et audio DV (type 2)
Les données DV entrelacées peuvent être fractionnées en un flux vidéo et un à quatre flux audio dans un fichier RIFF AVI. Cela présente l’avantage d’être rétrocompatible avec Video pour Windows, car il contient un flux vidéo standard « vids » et au moins un flux audio standard « auds » . Le principal inconvénient est que ce format de fichier nécessite que les données audio soient stockées de manière redondante en tant que flux audio. Le flux « vidéo » est en fait le flux de données DV entrelacé natif. Toutefois, en tant que flux « vids » standard avec un type de gestionnaire « dvsd », le décodeur vidéo DV est utilisé. Ce format nécessite également l’utilisation du filtre DV Splitter pour fractionner les fichiers « capturés » avant de les écrire en tant que fichiers AVI.
Les données DV peuvent être stockées sous forme de flux vidéo avec un nombre distinct de flux audio dans un fichier AVI RIFF. Le flux vidéo est spécifié avec un en-tête de flux vidéo standard (la valeur du membre fccType est « vids »). Le membre fccHandler est spécifié comme « dvsd », « dvhd » ou « dvsl ». Les images par seconde du flux vidéo doivent être spécifiées dans les membres dwRate et dwScale , ainsi que le nombre total de blocs vidéo dans le segment « movi » dans le membre dwLength .
Dans ce fichier AVI contenant la vidéo DV en tant que flux « vids » et l’audio DV sous forme de flux « auds » de DV, le segment de format de flux vidéo est une structure BITMAPINFOHEADER standard. Le segment de format de flux peut être éventuellement étendu pour inclure le segment DVINFO , en augmentant la taille du segment de format de flux de 40 octets (taille de la structure BITMAPINFOHEADER ) à 72 octets (taille des structures BITMAPINFOHEADER plus DVINFO ) et en suivant immédiatement la structure de données BITMAPINFOHEADER avec une structure de données DVINFO .
Le ou les flux audio sont spécifiés avec un en-tête de flux audio standard (la valeur du membre fccType est « auds »). Le membre fccHandler n’est pas utilisé pour les flux audio.
Les données vidéo DV sont stockées sous forme de segments « ##dc », comme défini dans la description précédente d’un fichier AVI avec une donnée DV, et les données audio sont stockées en tant que blocs « ##wb » dans le segment « movi ».
Notes
La spécification des magnétoscopes numériques à usage consommateur peut ne pas être disponible dans certaines langues et certains pays.
L’exemple suivant montre le formulaire RIFF AIFF pour un fichier AVI contenant une vidéo DV en tant que flux « vids » et des flux audio DV en tant que flux « auds » développés avec des blocs d’en-tête terminés (y compris les données DVINFO facultatives suivant bitmapINFO dans le sous-segment « strf » pour le flux « vids »).
00000000 RIFF (103E2920) 'AVI '
0000000C LIST (00000146) 'hdrl'
00000018 avih (00000038)
dwMicroSecPerFrame : 33367
dwMaxBytesPerSec : 3728000
dwPaddingGranularity : 0
dwFlags : 0x810 HASINDEX | TRUSTCKTYPE
dwTotalFrames : 2192
dwInitialFrames : 0
dwStreams : 2
dwSuggestedBufferSize : 120000
dwWidth : 720
dwHeight : 480
dwReserved : 0x0
00000058 LIST (00000094) 'strl'
00000064 strh (00000038)
fccType : 'vids'
fccHandler : 'dvsd'
dwFlags : 0x0
wPriority : 0
wLanguage : 0x0 undefined
dwInitialFrames : 0
dwScale : 100 (29.970 Frames/Sec)
dwRate : 2997
dwStart : 0
dwLength : 2192
dwSuggestedBufferSize : 120000
dwQuality : 0
dwSampleSize : 0
rcFrame : 0,0,720,480
000000A4 strf (00000048)
biSize : 40
biWidth : 720
biHeight : 480
biPlanes : 1
biBitCount : 24
biCompression : 0x64737664 'dvsd'
biSizeImage : 120000
biXPelsPerMeter : 0
biYPelsPerMeter : 0
biClrUsed : 0
biClrImportant : 0
dwDVAAuxSrc : 0x........
dwDVAAuxCtl : 0x........
dwDVAAuxSrc1 : 0x........
dwDVAAuxCtl1 : 0x........
dwDVVAuxSrc : 0x........
dwDVVAuxCtl : 0x........
dwDVReserved[2] : 0,0
000000F4 LIST (0000005E) 'strl'
00000100 strh (00000038)
fccType : 'auds'
fccHandler : ' '
dwFlags : 0x0
wPriority : 0
wLanguage : 0x0 undefined
dwInitialFrames : 0
dwScale : 1 (32000.000 Samples/Sec)
dwRate : 32000
dwStart : 0
dwLength : 2340474
dwSuggestedBufferSize : 4272
dwQuality : 0
dwSampleSize : 4
rcFrame : 0,0,0,0
00000140 strf (00000012)
wFormatTag : 1 PCM
nChannels : 2
nSamplesPerSec : 32000
nAvgBytesPerSec : 128000
nBlockAlign : 4
wBitsPerSample : 16
cbSize : 0
00000814 LIST (103D0EF4) 'movi'
103D1710 idx1 (00011210)
Rubriques connexes