Russian Qt Forum
Ноябрь 22, 2024, 06:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt Media Encoding Library - библиотека кодирования аудио и видео  (Прочитано 11897 раз)
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« : Апрель 24, 2013, 22:02 »

Привет всем!

Последнее время работал над кодированием видео с использованием FFMPEG, решил оформить это все в виде библиотеки, но в более расширенном виде.

Qt Media Encoding Library (QtMEL) - библиотека, позволяющая кодировать видео и аудио потоки.

Возможности:
  • кодирование видео с постоянной и переменной частотой кадров
  • кодирование аудио
  • граббинг экрана с переменной частотой кадров
  • граббинг веб-камер с переменной частотой кадров
  • граббинг аудио с устройств ввода

Иерарахия классов:


Платформа: пока только Windows
Лиценция: LGPL
Исходный код: https://github.com/kibsoft/QtMEL
Все, для использования в Вашем проекте: скачать
Бинарники примеров: скачать
FFmpeg(используется для сборки QtMEL): скачать
Документация(CHM): https://dl.dropboxusercontent.com/u/77719957/QtMEL_doc.chm

Процесс сборки:
1) Скачиваем исходники - https://github.com/kibsoft/QtMEL/archive/master.zip
2) Скачиваем FFmpeg по ссылке выше
3) Задаем значения переменных FFMPEG_LIBRARY_PATH и FFMPEG_INCLUDE_PATH в Qt Creator, либо в системе.
4) Собираем
В итоге получаем 2 .dll файла(дебаг и релиз) в папке lib(в каталоге с исходниками).

Что планируется к релизу:
  • Поддержка OC Linux (часть функционала уже работает)
  • Попробовать реализовать граббинг экрана с псевдо-постоянной частотой кадров
  • Расширенная документация(в т.ч. туториалы)

Тестирование проводилось на версии FFmpeg git-14d94a1 годичной давности. Работа с последними версиями не гарантируется.
Насчет багов(если кто-то будет пользоваться Улыбающийся ) и предложений писать в IssueTracker на GitHub, либо сюда.

P.S. Т.к. я занимаюсь разработкой QtMEL в свободное время, поэтому дата релиза не запланирована, но надеюсь это будет в скором времени Улыбающийся
Помощь в разработке посредством Pull Request'ов приветствуется!
« Последнее редактирование: Июнь 21, 2013, 11:50 от kibsoft » Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Июнь 19, 2013, 22:10 »

Итак, прошло уже 2 месяца с момента когда я написал первый пост и вот что было сделано за этот период:
  • Добавлена возможность захвата изображения с веб-камер (переменная частота кадров)
  • AudioGrabber был переведен на использование библиотеки RtAudio (из-за глюков в QtMultimedia)
  • Добавлен новый класс - Recorder, который является вашим помощником при записи видео/аудио
  • Исправлен глюк с рассинхронизацией звука и видео. Используя Recorder вам не нужно заботиться о синхронизации видео/аудио потоков
  • Добавлена возможность переключения источников захвата изображения "на лету" во время записи видео - т.е. экран <-> камера
  • Добавлен новый пример - CameraExample, который позволяет записывать видео с веб-камеры
  • Исправлены найденные баги

В первом посте актуализировал все ссылки и добавил пункт "Все, для использования в Вашем проекте" - в архиве находится скомпилированный QtMEL с зависимостями + папка include. Для подключения в свой проект нужно добавить в .pro следующее:
Код:
#add QtMEL library
INCLUDEPATH += путь_до_include
LIBS += -Lпуть_к_lib

CONFIG(debug, debug|release) {
    LIBS += -lqtmeld1
} else {
    LIBS += -lqtmel1
}

Вот пример include'ов для вашего проекте:
Код:
#include <AudioGrabber>
#include <CameraGrabber>
#include <ScreenGrabber>
#include <Recorder>
и так далее (т.е. иклуды по названию классов)

P.S. Заметил такой прикол - CameraExample требует mediaservice плагины, так вот, если они уже есть в PATH и лежат рядом с exe, то по какой-то причине они подгружаются дважды (проверено ProcessExplorer) и в связи с этим в списке камер появляются дубликаты. Кто-нибудь знает с чем это связано и как исправить?
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #2 : Июнь 20, 2013, 08:52 »

Есть ли среди нас гуру по кодированию видео/аудио? Улыбающийся
Есть идея сделать набор пресетов для разных кодеков, чтобы пользователю не приходилось изобретать велосипеды.
В примерах я использую один из таких пресетов:
Код:
//x264 loseless fast preset
    VideoCodecSettings settings;
    settings.setCoderType(EncoderGlobal::Vlc);
    settings.setFlags(EncoderGlobal::LoopFilter);
    settings.setMotionEstimationComparison(1);
    settings.setPartitions(EncoderGlobal::I4x4 | EncoderGlobal::P8x8);
    settings.setMotionEstimationMethod(EncoderGlobal::Hex);
    settings.setSubpixelMotionEstimationQuality(3);
    settings.setMotionEstimationRange(16);
    settings.setGopSize(250);
    settings.setMinimumKeyframeInterval(25);
    settings.setSceneChangeThreshold(40);
    settings.setIQuantFactor(0.71f);
    settings.setBFrameStrategy(1);
    settings.setQuantizerCurveCompressionFactor(0.6f);
    settings.setMinimumQuantizer(0);
    settings.setMaximumQuantizer(69);
    settings.setMaximumQuantizerDifference(4);
    settings.setDirectMvPredictionMode(EncoderGlobal::SpatialMode);
    settings.setFlags2(EncoderGlobal::FastPSkip);
    settings.setConstantQuantizerMode(0);
    settings.setPFramePredictionAnalysisMethod(EncoderGlobal::NoWpm);

Найден был здесь - https://code.google.com/p/bencos/source/browse/trunk/out/presets/?r=156
Хотелось бы пресеты не только для H264.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #3 : Июнь 27, 2013, 21:22 »

Появилась версия 1.0 Alpha2!

Изменения:
  • Поддержка Linux (тестирование производилось на Ubuntu 12.04)
  • Поддержка Qt5
  • Исправлены краши, небольшие баги и т.д.

Новые сборки, готовые для использования:
Для использования необходимо распаковать архив и добавить в .pro файл пути к папке include и к папке с библиотеками.


Нужно установить пакеты поочередно.

В deb пакеты включены не все зависимости нужные для работы, поэтому работа на система отличных от Ubuntu 12.04 не гарантируется. В этом случае вам нужно установить нужные пакеты вручную.

Это временный косяк, в дальнейшем будет исправлен(пока пакеты созданы для тестирования).

Если есть какие-то предложения - буду рад выслушать Улыбающийся
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 22.