2015-01-28 3 views
2

В моем проекте я должен следовать эта работа потокаDirectShow (.net) h264 кодер/декодер

  1. Я должен взять изображение, снятое с помощью веб-камеры и просмотреть его
  2. в фоновом режиме закодировать его с помощью H264
  3. сохранить его на столе
  4. декодировать сохраненный файл, чтобы воспроизвести его.

Я использовал Direct Show .net для реализации этого, и я успешно реализовать шаг 1, но я сейчас в застряле с точкой, начиная с 2

Я сделал много поиска, как мне нужно что-то совместимое с .net, но мало результатов было очень полезно, я понял, что есть direct show decoder using h264(msdn), но я не думаю, что это то, что я ищу. Также я нашел много разговоров о создании оконных медиа, но я думаю, что это работает только с собственным кодом.

Пожалуйста, помогите мне с мыслями (мне нужна начальная точка).

+0

В чем вопрос? Как кодировать необработанные пиксельные данные в поток H264 в контексте DirectShow? Кажется, что (1,2,3) и (4) - это разные задачи, выполняемые различными (суб) программами, или вы просто воспроизводите захваченный поток битмапа. –

+0

@AntonAngelov да мой вопрос, как кодировать/декодировать поток из directshow с помощью h264 – tulipe

ответ

3

мой вопрос, как кодировать/декодировать поток с DirectShow с использованием h264

Поскольку вы используете DirectShow, правильный способ заключается в создании двух различных filtergraphs для двух сценариев (например, для захвата: 1 , 2,3 и для воспроизведения: 4). Для кодирования/декодирования используйте фильтры H264 Encoder/Decoder в вашем фильтровальном графике. Насколько мне известно, DirectShow не предлагает встроенные фильтры кодирования H264, но вы можете использовать сторонние фильтры DShow для работы над вами.

Простой поиск декодеров вернулся в этом:

Если вы используете формат пикселя для несжатого потока захватили видео RGB /, то обратите внимание, что некоторые фильтры кодировщик может потребовать, чтобы ваш видеопоток был в формате пикселя Luma-chroma, таком как YV12 или NV12, в этом случае вам необходимо использовать фильтр конвертации цветов, который, к счастью, поддерживается DShow (как DMO) в DMO ca tegory.

Ваш захватный график должен выглядеть следующим образом: Фильтр захвата -> [Преобразователь цветов] -> H264 Encoder -> [Мультиплексор (например, mp4)] -> Фильтр Writer (файловый или сторонний фильтр фильтра файлов)

(скобки - [] означает, что оно не может быть необходимо использовать эти фильтры.)

график воспроизведения должен быть: File Source -> [разветвитель] -> H264 Decoder -> Render фильтр

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