FFmpeg av_read_frame возвращает размер, но нет данных?

Я написал код на C для доступа к ffmpeg и обернул его в класс C ++ / CLI (управляемый .NET). Программа извлекает видеопоток в реальном времени, извлекает кадры и преобразует их в файлы PNG.

К сожалению, изображения, которые сохраняются на диск, всегда черные (открытие их в Notepad ++ показывает, что они полны нулей).

Я использую сборки aformat / codec-55.dll и заголовки разработки и библиотеки для компиляции из ffmpeg-20131120-git-e502783-win64-dev. Весь проект компилируется с использованием Managed C ++ (Cpp / cli) .NET 4.0 для 64-битных систем.

После некоторого исследования проблема, по-видимому, заключается в том, что av_read_frame правильно заполняет значение AVPacket-> size, но данные AVPAcket-> всегда равны нулю. Когда кадр закончен (получил == 1), тогда данные для AVFrame — это просто матрица нулей. 🙁

Вот код:
Пример кода (извините, но он плохо вставлен в SO)

Я думаю, что проблема в строке 34, когда пакет возвращается так:
размер установлен, но данные пусты

Пожалуйста, как мне заставить это работать? Что я сделал не так?

4

Решение

Часть декодирования кажется мне подходящей. Я не уверен в кодировке & сохранение в PNG. Почему бы тебе не попробовать просто сбросить (frame->linesize*frame->height) байты из frame->data на диск с fwrite и посмотреть на него с Irfanview (например)?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]