Поделиться через


Данные 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)

формат файла AVI