Я работаю над (своего рода) приложением VOIP для мобильных устройств с поддержкой видео. Большинство современных смартфонов оснащены аппаратным кодером / декодером H.264. Однако большинство из них поддерживают только ограниченное количество профилей кодирования. В частности, меня интересует SVC, который обычно не поддерживается. Самое простое решение — использовать программный кодировщик. Но, очевидно, у него есть свой недостаток.
Недавно ко мне пришла идея создать гибридный аппаратный + программный кодировщик. Который состоит из аппаратного кодировщика и «мелкого программного перекодировщика».
Я знаю (в общих чертах), что H.264 работает в терминах макроблоков. Кодированный поток содержит инструкции для макроблоков: либо полная повторная передача (в форме jpeg-подобных данных), его параметры движения, либо просто ничего.
Полное программное перекодирование будет обрабатывать такой кодированный поток, анализировать / реализовывать его и выполнять на его данных изображения, а затем кодировать результирующее изображение, что включает обработку каждого макроблока, принятие решения о стратегии, построение векторов движения и, наконец, кодирование всех инструкции.
Идея состоит в том, чтобы сделать «поверхностное» перекодирование. Я думаю о разборе входящего закодированного потока, но вместо выполнения его инструкций — просто используйте их в качестве источника для кодера, т.е. кодируйте их в рамках сложной схемы кодирования H.264, с необходимой точностью (то есть битрейтом) и т. Д., Фактически не анализируя изображение, поиск векторов движения и т. д.
По сути, он использует декодер + кодировщик, но с ярлыком, чтобы фактическое изображение не создавалось декодером и не анализировалось кодером.
Это звучит выполнимо? Была ли попытка сделать что-то подобное?
Я не думаю, что это возможно сделать. Я слышал подобные предложения от людей с базовым пониманием кодирования видео без четкого знания о фактическом кодировании h264. Это может быть возможно, но для достижения каких-либо ощутимых результатов потребуется слишком много времени. Вы могли бы, например, заключить контракт с некоторыми из лучших разработчиков из x264 и это, возможно, стоило бы вам около 100K, чтобы получить какие-либо результаты. Лучше всего подтвердить мой ответ, спросив x264 или же FFmpeg зловредный список.
Других решений пока нет …