Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

В этом случае звук будет кодироваться в PCMA (alaw) с частотой дискретизации 8 кГц.

Собственный

...

lossless видеопроцессор для входящих потоков

Для обработки входящих потоков микшера, например, если необходима дополнительная буферизация или синхронизация аудио и видео дорожек, может быть использован собственный losless lossless видеопроцессор. Этот видеопроцессор включается настройкой в файле flashphoner.properties

...

Необходимо отметить, что использование losless lossless видеопроцессора может вносить задержку в трансляции в реальном времени.

При использовании losless lossless видеопроцессора, чтобы освободить ресурсы, занятые микшером, нужно принудительно остановить микшер при помощи REST запроса /mixer/terminate, либо остановить все входящие в микшер потоки, в этом случае микшер остановится по истечении времени, заданного в миллисекундах настройкой

Code Block
themeRDark
mixer_activity_timeridle_timeout=60000

По умолчанию, при отсутствии входящих потоков, микшер останавливается через 60 секунд.

...

Code Block
languagejava
themeRDark
titleTestLayout.java
package com.flashphoner.mixerlayout;

import com.flashphoner.sdk.media.mixer.video.presentation.BoxIVideoMixerLayout;
import com.flashphoner.sdk.media.mixer.video.presentation.BoxPositionYUVFrame;
import comjava.flashphoner.media.mixer.video.presentation.VideoLayoutawt.*;
import comjava.flashphoner.sdk.media.IVideoMixerLayout;
import com.flashphoner.sdk.media.YUVFrame;
import java.util.ArrayList;

public class TestLayout extends VideoLayoututil.ArrayList;

public class TestLayout implements IVideoMixerLayout {

    private static final int PADDING = 5;

    @Override
    public Layout[] computecomputeLayout(YUVFrame[] frames yuvFrames, String[] strings, int canvasWidth, int canvasHeight) {
        ArrayList<IVideoMixerLayout.Layout> return computeGrid(frames, canvasWidth, canvasHeightlayout = new ArrayList<>();
    }

    private IVideoMixerLayout.Layout[] computeGrid(YUVFrame[] frames, int canvasWidth, int canvasHeightfor (int c = 0; c < yuvFrames.length; c++) {
         Box mainBox   Point prevPoint = new Box(null, canvasWidth, canvasHeightPoint();
        for (int i = 0; i < frames.length; i++) {    Dimension prevDimension = new Dimension(canvasWidth, canvasHeight);
            if (layout.size() > 0) {
                prevPoint.setLocation(layout.get(c-1).getPoint());
                prevDimension.setSize(layout.get(c-1).getDimension());
            }
            BoxPoint frameBoxcurrentPoint = new Box(mainBox, canvasWidth/frames.length, canvasHeight/frames.length);
Point((int) (prevPoint.getX()+prevDimension.getWidth()+PADDING), 
              frameBox.setPosition(BoxPosition.INLINE_HORIZONTAL_CENTER);
                 frameBox.setPaddingLeft(PADDING);
            frameBox.setPaddingRight(PADDING(int)(prevPoint.getY()+prevDimension.getHeight()));
            Box frame = new Box(frameBox, frames[i]);
layout.add(new IVideoMixerLayout.Layout(currentPoint, new Dimension(canvasWidth/yuvFrames.length, 
		             frame.setPosition(BoxPosition.INLINE_HORIZONTAL);
            frame.fillParent();
        }
        ArrayList<IVideoMixerLayout.Layout> layout = new ArrayList<>( canvasHeight/yuvFrames.length), yuvFrames[c]));
        mainBox.computeLayout(layout);}
        return layout.toArray(new IVideoMixerLayout.Layout[layout.size()]);
    }

}

Затем следует скомпилировать класс в байт-код. Для этого создаем дерево каталогов, соответствующее названию пакета написанного класса (com/flashphoner/mixerlayout)

Code Block
languagebash
themeRDark
mkdir -p com/flashphoner/mixerlayout

...