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