DV Data in the AVI File Format
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Корпорация Майкрософт указала формат хранения данных цифрового видео (DV) в файлах AVI. Соответствие этой спецификации гарантирует, что AVI-файлы, созданные в этом формате, будут совместимы с будущими версиями архитектуры цифрового видео DirectShow для Платформы Windows.
В этой статье описывается формат файлов AVI, содержащих данные DV. Определены конкретные FOURCCs (четырехсимвольный код) для потоков данных с чередованием DV и обработчиков потоков для сжатия и распаковки dv. Определена структура формата потока для данных DV. Указаны спецификации для двух методов хранения данных DV в формате AVI-файла.
Предполагается, что читатель знаком с форматом данных DV. (Этот формат определен в спецификации цифровых видео-видео с использованием потребителей, также называемой Синей книгой.)
Существует два типа файлов DV AVI: файлы AVI, которые содержат один поток данных DV, называемый файлами типа 1 ; и AVI-файлы, содержащие dv video в качестве потока "vids" и dv audio в качестве потоков "auds", называемые файлами типа 2 .
Файлы AVI, содержащие один поток данных DV (тип 1)
Данные с чередованием DV можно хранить в собственном формате в виде одного потока в RIFF-файле AVI. Преимуществом этого является использование минимального объема хранилища данных для DV. Основной недостаток заключается в том, что этот формат файла не является обратно совместимым с Видео для Windows, так как он не содержит видео "vids" или аудиопоток "auds". Поддержка потока DV с чередованием обеспечивается с помощью фильтров DV Muxer и DV Splitter , предоставляемых с DirectShow.
Данные DV можно хранить в одном потоке в RIFF-файле AVI, указав "iavs" (чередующийся аудио- и видеопоток) FOURCC (четырехсимвольный код) в члене fccType и любой из "dvsd", "dvhd" или "dvsl" FOURCCs в элементе fccHandler блока заголовка потока "strh". Кадры в секунду видеопотока должны быть указаны в членах dwRate и dwScale и общее количество блоков видео в блоке movi в элементе dwLength .
Обработчик потока dvsd FOURCC указывает, что данные DV определены в части 2 спецификации цифровых видеопотоков, используемых потребителем. Видео имеет формат 525 строк с частотой 29,97 Гц (525–60) или 625 строк с частотой 25,00 Гц (625–50).
Обработчик потока "dvhd" FOURCC указывает, что данные DV определены в части 3 спецификации цифровых видеопотоков, используемых потребителем. Видео имеет формат 1125 строк с частотой 30,00 Гц (1125–60) или 1250 строк с частотой 25,00 Гц (1250–50).
Обработчик потока dvsl FOURCC указывает, что данные DV определены в части 6 спецификации цифровых видеопотоков, используемых потребителем. Видео имеет формат SD с высоким уровнем сжатия (SDL).
Примечание
В оставшейся части этой статьи приведены определения потоков dvsd.
За блоком заголовка потока должен следовать блок формата потока DVINFO .
Фактические данные DV хранятся в виде блоков ##dc в блоке movi (## в формате представляет идентификатор потока). Каждый блок содержит один кадр данных, 10 или 12 последовательностей DV DIF для систем 525-60 или 625-50 соответственно. Формат последовательности DV SD (dvsd) DIF определен в части 2 спецификации цифровых видеофиксов, используемых потребителем.
В следующем примере показана форма AIFF RIFF для AVI-файла с одним потоком данных DV, развернутым заполненными блоками заголовков.
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)
Файлы AVI, содержащие видео и аудиопотоки DV (тип 2)
Данные с чередованием DV можно разделить на видеопоток и от одного до четырех аудиопотоков в RIFF-файле AVI. Это имеет преимущество обратной совместимости с Видео для Windows, так как он содержит стандартный поток видео "vids" и по крайней мере один стандартный аудиопоток "auds". Основной недостаток заключается в том, что этот формат файла требует избыточного хранения звуковых данных в виде аудиопотоков. Поток "видео" на самом деле является собственным потоком данных с чередованием DV. Однако в качестве стандартного потока "vids" с типом обработчика "dvsd" используется декодер видео DV . Для этого формата также требуется использовать фильтр разделителя DV , чтобы разделить "захваченные" файлы перед их записью в виде AVI-файлов.
Данные DV могут храниться в виде видеопотока с отдельным количеством аудиопотоков в RIFF-файле AVI. Видеопоток указывается с помощью стандартного заголовка видеопотока (значение члена fccType — vids). Член fccHandler указывается как "dvsd", "dvhd" или "dvsl". Кадры в секунду видеопотока должны быть указаны в членах dwRate и dwScale и общее количество блоков видео в блоке movi в элементе dwLength .
В этом AVI-файле, содержав dv video в качестве потока "vids" и dv audio как "auds" streams формы DV, блок формата видеопотока является стандартной структурой BITMAPINFOHEADER . При необходимости блок формата потока можно расширить, включив блок DVINFO , увеличив размер блока формата потока с 40 байт (размер структуры BITMAPINFOHEADER ) до 72 байт (размер структур BITMAPINFOHEADER и DVINFO ) и сразу после структуры данных BITMAPINFOHEADER со структурой данных DVINFO .
Аудиопотоки задаются с помощью стандартного заголовка аудиопотока (значение члена fccType — "auds"). Член fccHandler не используется для аудиопотоков.
Видеоданные DV хранятся в виде блоков ##dc, как определено в предыдущем описании AVI-файла с одними данными DV, а звуковые данные хранятся в виде блоков ##wb в блоке movi.
Примечание
На некоторых языках и в некоторых странах может быть недоступна спецификация цифровых видеомеров, используемых потребителями.
В следующем примере показана форма RIFF AIFF для AVI-файла, содержащего dv video в виде потока "vids" и dv audio в виде потоков "auds", развернутых с заполненными блоками заголовков (включая необязательные данные DVINFO после BITMAPINFO в под-блоке strf для потока 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)
Связанные темы