Как закодировать видео с веб-камеры в H.264 на C#?[закрыто]
Вопрос
Как кодировать видео с веб-камеры в H.264 на C#?
Что мне нужно
- MSDN, если есть какая-либо помощь по этому поводу.
- Библиотеки/обертки с открытым исходным кодом для кодирования/декодирования.
- Учебники и статьи в блогах о том, как это сделать.
Некоторые примеры кодирования в 3GP, FLV или что-то еще с небольшим размером файла были бы более чем оценены.
Решение
Вам нужно будет изучить DirectShow SDK.
Кодирование в H.264 напрямую невозможно, однако существуют коммерческие элементы управления ActiveX, которые могут вам помочь.Но нужно понять несколько вещей,
DirectShow — это платформа обработки аудио/видео, и вы можете использовать инструмент редактирования графиков, чтобы поместить свои устройства на график и протестировать его.И вам нужно написать аналогичный код для построения графа, граф — это цепочка устройств/объектов, которые взаимодействуют друг с другом для получения конечного результата.
DirectShow можно использовать в .NET, вы можете использовать инструмент GraphEditPlus для создания графика и использовать его в .NET, однако я сомневаюсь, что .NET — лучший способ, поскольку это может привести к неизвестным ошибкам, поскольку DirectShow тесно связан с COM.Если вы создаете элемент управления ActiveX на собственном C++ и используете DirectShow для полной записи, а также используете ActiveX в WPF, это будет более стабильно, но сложно программировать.
Обычно вам понадобится следующий график:
Video Source => Demux -> Audio Stream + Video Stream -> MP4Muxer
x264 является бесплатным с открытым исходным кодом и имеет хороший MP4Muxer, но нелегальный. Для использования H264 в вашем коде вам необходимы патентные лицензии.
В качестве альтернативы вы можете использовать множество коммерческих элементов управления. Intel IPP на данный момент является лучшей реализацией H264, но разместить его в прямом шоу немного сложно.
Другие советы
Ниже приведены два примера из CodeProject для захвата видео в .NET.
- http://www.codeproject.com/KB/directx/DirXVidStrm.aspx
- http://www.codeproject.com/KB/cs/WebCamService.aspx
Они не включают конкретно H.264.Для этого вам может потребоваться постобработка видео после захвата с помощью сторонних компонентов. Например:http://www.elecard.com/products/products-pc/sdk/codec-.net-sdk/