Отредактируйте частоту кадров файла AVI - PullRequest
0 голосов
/ 14 июля 2009

Можно ли изменить частоту кадров файла avi с помощью библиотеки «Видео для Windows»? Я попытался выполнить следующие шаги, но безуспешно.

  1. AVIFileInit
  2. AviFileOpen (OF_READWRITE)
  3. pavi1 = AviFileGetStream
  4. avi_info = AviStreamInfo
  5. avi_info.dwrate = 15
  6. EditStreamSetInfo (dwrate) возвращает -2147467262.

Ответы [ 3 ]

6 голосов
/ 14 июля 2009

Я почти уверен, что API-интерфейсы AVIFile * не поддерживают это. (Отказ от ответственности: именно я определил эти API, но это было более 15 лет назад ...)

Вы не можете просто вызвать EditStreamSetInfo для простого AVIStream, только один возвращается из CreateEditableStream.

Тогда вы можете использовать AVISave, но это, очевидно, приведет к повторному копированию всего файла.

Итак, да, вы, вероятно, захотите сделать это, проанализировав заголовок файла AVI достаточно, чтобы найти тот DWORD, который вы хотите изменить. Существует множество документов в форматах RIFF и AVI, таких как http://www.opennet.ru/docs/formats/avi.txt.

0 голосов
/ 14 июля 2009

HRESULT: 0x80004002 (2147500034)
Имя: E_NOINTERFACE
Описание: Запрошенный интерфейс COM недоступен
Код серьезности: Не удалось
Код объекта: FACILITY_NULL (0)
Код ошибки: 0x4002 (16386)

Это работает, если вы НЕ вызываете EditStreamSetInfo?

Можете ли вы опубликовать код, который вы используете для установки информации о потоке?

0 голосов
/ 14 июля 2009

Я ничего не знаю о VfW, но вы всегда можете попробовать шестнадцатеричное редактирование файла. Частота кадров - это, вероятно, поле где-то в заголовке файла AVI.

В противном случае вы можете написать скрипт для такого инструмента, как mencoder [1], чтобы скопировать поток в новый файл с другой частотой кадров.

[1] http://www.mplayerhq.hu/
...