Я разработал приложение для Windows, которое захватывает видео с внешнего устройства с помощью DirectShow.Разрешение изображения составляет 640x480, а видео, сохраненные без сжатия, имеют очень большие размеры (около 27 МБ в секунду).
Моя цель - максимально уменьшить этот размер, поэтому я ищу кодер, который будетПозвольте мне сжать видео в режиме реального времени.Это может быть H.264, MPEG-2 или что-то еще.Это должно позволить мне сохранить видео на диск, и было бы лучше, если бы я также мог передавать его в режиме реального времени по сети (Wi-Fi, поэтому его размер должен составлять около 1 МБ в секунду или меньше).Значительная потеря качества была бы неприемлемой.
Я обнаружил, что получить соответствующий фильтр DirectShow для этой задачи очень сложно.Можно предположить, что клиентский компьютер достаточно современный (быстрый 2-ядерный процессор) и может использовать CUDA / OpenCL.Есть несколько приложений, которые позволяют кодировать видео с помощью CUDA и обеспечивают хорошую производительность, однако я не нашел подходящего фильтра DirectShow или API, который можно было бы использовать для его разработки.Кажется, что у NVIDIA nvcuvenc.dll есть закрытый API, поэтому я не могу использовать его напрямую.Любые кодировщики на базе процессора, которые я обнаружил, слишком медленные для моих требований, но, возможно, я пропустил некоторые.
Может кто-нибудь порекомендовать мне решение, то есть кодировщик (платный или бесплатный, который можно использовать в закрытом режиме)?приложение), которое может достичь хорошей производительности, независимо от того, использует ли оно CPU / CUDA / OpenCL или DirectCompute?Или, может, мне стоит использовать какой-нибудь внешний аппаратный видеокодер?
С уважением,
madbadger