Под Linux я нашел GStreamer невероятно мощным в работе, которую я недавно делал. Он имеет множество плагинов, которые можно использовать для захвата, манипулирования, перекодирования и т. Д. Он включен в репозитории управления пакетами всех основных дистрибутивов Linux, с которыми я столкнулся, хотя он может представлять собой серию различных пакетов (хорошо Bad Ugly) из-за проблем с лицензированием.
Поначалу это немного утомительно, если использовать его из командной строки, он работает на конвейерной основе, аналогично самой консоли. Например, следующий конвейер будет захватывать видео с веб-камеры и сохранять его в виде файла MKV в кодировке H264.
gst-launch v4l2src ! x264enc ! matroskamux ! filesink location=webcam.mkv
Теперь очевидно, что конвейеры различаются в зависимости от ваших конкретных обстоятельств, но некоторые общие правила звучат правдоподобно - например, вам всегда нужен хотя бы один источник и приемник, и, как правило, если вы закодировали видео, вам также захочется его мультиплексировать.
Изменить: Я должен также отметить, что он имеет C SDK для тех, кто хочет использовать его как часть приложения C / C ++, как у меня.