Трухильо Стэн
Шрифт:
Форматы видеофайлов (такие как AVI) фактически поддерживают два уровня сжатия. Различные алгоритмы обеспечивают сжатие отдельных кадров; кроме того, некоторые кадры представляются не в виде самостоятельных изображений, а в виде изменений, внесенных в предыдущие кадры.
Это объясняется тем, что типичный видеоролик состоит из похожих изображений. Например, если в нем показано, как человек идет по комнате, то фигура человека будет изменяться от кадра к кадру, но остальная часть (комната), скорее всего, останется практически неизменной. Следовательно, такой видеоролик можно представить в виде первого кадра и цепочки последующих изменений.
Кадры видеоролика с полным изображением называются ключевыми кадрами (key frames). Видеоролик может содержать любое количество ключевых кадров, в зависимости от того, насколько часто и сильно меняется изображение. Ключевые кадры особенно часто появляются при переходах между сценами, эффектах «растворения» и перемещении съемочной камеры. Ключевые кадры чрезвычайно важны при чтении видеоролика; без них промежуточные кадры теряют смысл. Неключевой кадр тоже можно вывести, но изображение, скорее всего, будет нарушено, потому что такой кадр представляет собой лишь изменение предыдущего изображения, а не самостоятельное изображение.
Открытый видеофайл обычно называется потоком. Как мы увидим в следующем разделе, посвященном Video For Windows API, концепция потока тесно интегрирована с Video For Windows.
Для создания и чтения AVI-файлов Windows предоставляет разработчикам Video For Windows (VFW) API. Этот API заметно упрощает задачу воспроизведения видео, поскольку в нем имеются удобные средства для поиска и извлечения кадров из ролика.
VFW не пытается поддерживать все возможные алгоритмы сжатия, используемые для хранения AVI-данных. Вместо этого VFW допускает установку и удаление компрессоров и декомпрессоров, обеспечивающих работу одного или нескольких алгоритмов сжатия. Таким образом, VFW позволяет выбрать нужные компрессор и декомпрессор в зависимости от потребностей разработчика. Кроме поддержки сжатия и распаковки VFW API предоставляет средства для поиска и извлечения кадров, а также для решения других задач, связанных с потоками.
Имена многих функций VFW API начинаются с букв AVI. Другие функции (например, относящиеся к сжатию) начинаются с IC. Существуют некоторые исключения, но большинство функций VFW снабжается одним из этих префиксов. Алфавитный список всех функций VFW приведен в табл. 8.1.
Таблица 8.1. Функции VFW
AVIBuildFilter
AVICLearClipboard
AVIFileAddRef
AVIFileCreateStream
AVIFileEndRecord
AVIFileExit
AVIFileGetStream
AVIFileInfo
AVIFileInit
AVIFileOpen
AVIFileReadData
AVIFileRelease
AVIFileWriteData
AVIGetFromClipboard
AVIMakeCompressedStream
AVIMakeFileFromStream
AVIMakeStreamFromClipboard
AVIPutFileOnClipboard
AVISave
AVISaveOptions
AVISaveOptionsFree
AVISaveV
AVIStreamAddRef
AVIStreamBeginStreaming
AVIStreamCreate
AVIStreamEndStreaming
AVIStreamCreate
AVIStreamEndStreaming
AVIStreamFindSample
AVIStreamGetFrame
AVIStreamGetFrameClose
AVIStreamGetFrameOpen
AVIStreamInfo
AVIStreamLength
AVIStreamOpenFromFile
AVIStreamRead
AVIStreamReadData
AVIStreamReadFormat
AVIStreamRelease
AVIStreamSampleToTime
AVIStreamSetFormat
AVIStreamStart
AVIStreamTimeToSample
AVIStreamWrite
AVIStreamWriteData
CreateEditableStream
EditStreamClone
EditStreamCopy
EditStreamCut
EditStreamPaste
EditStreamSetInfo
EditStreamSetName
ICClose