• Пасиб @blooddy заюзал его JPEGEncoder в рабочем проекте.

    Задача: показывать одновременно много видеопотоков на одной html странице.
    Проблема: проц загнется, да и по траффику будет слишком жирно.
    Идея: одно видео активное, его показываем в хорошем качестве, остальные видео не активны, их показываем в минимальном качестве и с очень низким fps (можно даже 1 кадр в 10-20 секунд). По роловеру мыши переключать качество видео.
    Проблема N2: невозможну с одной и той же вебкамеры снимать два потока с разным качеством. Настройки: fps, quality и т.д. примеряются к объекту Camera, а не к объекту NetStream. Так что сколько NetStream не снимай с камеры, все они будут одинаковые.
    Идея N2: снимать BitmapData с камеры (с объекта Video, к которому прицеплена камера) раз в N секунд. Кодировать в JPEG, бродкастить через erlyvideo всем подписчиками, подписчики показывают картинку вместо видео, и обновляют ее раз в N секунд.

    Вот тут и пригодился JPEGEncoder @blooddy. Быстро работает, все ок.

    Только один нюанс — он никак не документирован, и сорцов нет. Пришлось залезть внутрь blooddy_crypto.swc/library.swf чтобы найти там это:
    public class by.blooddy.crypto.image.JPEGEncoder extends Object
    {
    native public function JPEGEncoder():void;

    static native public final function encode(image:flash.display.BitmapData,quality:uint = 60):flash.utils.ByteArray;
    }
    ♡ recommended by @develar

Replies (11)