Конвертируйте mp4 треки в картинки БЕЗ ffmpeg - PullRequest
0 голосов
/ 30 июня 2018

Я разрабатываю инструмент C # для извлечения кадров mp4 в изображения. (Без использования ffmpeg)

Я использую инструмент под названием ISO Viewer 2.0.2 и вижу все мои видеокадры mp4 (145 кадров в течение 5 секунд, каждый кадр называется образцом) на вкладке «Треки».

Снимок экрана ISO Viewer 2.0.2

На каждом кадре / сэмпле я могу получить его байт данных []. Так как же конвертировать эти данные в изображение в C #?

1 Ответ

0 голосов
/ 01 июля 2018

Скорее всего, вы хотите использовать некоторую библиотеку для этого. Это может быть довольно сложно, если вы планируете сделать это самостоятельно. Я попытаюсь проиллюстрировать это, перечислив шаги, необходимые для этого.

  • Сначала вам необходимо выяснить, какой видеокодек используется в MP4. Если вам повезет, это H.264, но файлы MP4 могут содержать множество разных видеокодеков. Вы можете найти спецификацию H.264 здесь: https://www.itu.int/rec/T-REC-H.264-201704-I/en (более 700 страниц)

  • Затем вам нужно использовать извлеченный кадр и декодировать его в соответствии со спецификацией H.264

  • Если кадр не является I-кадром, вам может потребоваться просмотреть предыдущие кадры для его декодирования. Возможно, вам придется взглянуть на несколько предыдущих кадров.

  • Если вам не повезло, что видео содержит B-кадры, вам может понадобиться смотреть на будущие кадры в дополнение к предыдущим кадрам, чтобы декодировать его.

Вы смотрите на очень большой проект, который делает это только с файлами H.264, и тогда он охватывает только некоторые файлы MP4 и далеко не все. Вам будет гораздо лучше использовать что-то вроде ffmpeg или аналогичный фреймворк для этого.

Если по какой-то причине вы не можете использовать ffmpeg, вы можете посмотреть https://msdn.microsoft.com/en-us/library/windows/desktop/dd940436 (использование C # подразумевает, что вы используете Windows).

...