2013-11-20 3 views
2

Мне нужно разработать полноэкранный клиент, который будет декодировать необработанные h264-кадры из сетевого источника. Любой предлагаемый подход о том, с чего начать? Я смотрел на ffmpeg, но потом мне нужно связать его с VS, и я теряюсь по пути туда. Microsoft Media Foundation имеет встроенный h264decoder, и нет примера, достаточно простого для понимания. То же самое с DirectShow, но затем Microsoft говорит, что его вымершие технологии не используют его. клиент должен иметь возможность работать с WinXP и последующими целями. Так что, если кто-нибудь может, возможно, указать мне в правильном направлении, было бы здорово.Как сделать декодирование необработанных кадров H264

ответ

2

Вы правильно указали параметры, и вы правильно указали, что нет простого примера. Сама технология немного сложна, и она обычно не используется сама по себе, а вместо этого является частью более сложной системы, такой как потоковый клиент. Кроме того, эта технология не является бесплатной, и нет широко распространенной реализации декодера H.264 по умолчанию.

FFmpeg - хороший выбор, если вы хорошо согласны с LGPL/GPL, и вы можете построить его из исходного кода (с GPL вы даже можете скачать prebuilt binaries), сопряжение с VS требует некоторых усилий, но выполнимо, больше проблем отсутствует документация, поэтому вам нужно искать фрагменты кода в Интернете.

Media Foundation - это не выход: в Windows XP отсутствует декодер Media Foundation H.264. Тогда сам API не пользуется популярностью, и единственным преимуществом, которое он предлагает, является доступность для версий без Windows, не имеющих DirectShow.

DirectShow - это лучший API родных носителей в Windows. С обратной совместимостью в Windows, она доступна Windows XP через Windows 8.1. Microsoft предоставляет достойный декодер H.264, запускающий Windows Vista - Microsoft DTV-DVD Video Decoder, то есть в тех же версиях, что и декодер, доступен через Media Foundation. Сторонние декодеры, как правило, связаны с DirectShow. Поддерживается поддержка декодирования с помощью аппаратного обеспечения, множество примеров кода и обучающих программ в Интернете. Тем не менее, немного крутая кривая обучения.

+1

Я получил задание с ffmpeg. Входной сетевой поток -> FFMPEG -> SDL (для рисования видео на экране) Задержка составляет около 200 мс для 1280x720 при 30 кадров в секунду при скорости передачи 3 Мбит/с :) – user2967920

Смежные вопросы