Реализация FCSubscribe на стороне клиента

Я изо всех сил пытаюсь найти любую информацию о FCSubscribe методы, используемые различными CDN. Мне нужно реализовать методы в пользовательском видеоплеере.

Я хотел бы получить официальную спецификацию для этих методов, но даже поиск SO для "FCSubscribe" дает только 2 результата. Мне удалось найти клочки кода в Интернете, но ничего конкретного.

Мне удалось собрать работающий плеер после прочтения всех этих фрагментов кода, но я не уверен в его надежности из-за отсутствия какой-либо документации.

Ниже приведена основная схема моего кода:

public function connectCDN() :void
{
    netConnection.client = {
        onFCSubscribe : onFCSubscribe
    };

    netConnection.call('FCSubscribe', null, streamName);

    netStream.play(streamName);
}

public function onFCSubscribe(...args) :void
{
    //Don't know what to do here???
}

Там не очень много для этого.

Мои конкретные проблемы:

  • Должен ли я начать играть в NetStream сразу после звонка FCSubscribe, или я должен ждать обратного звонка?

  • Я реализовал onFCSubscribe обратный звонок, но я не знаю, что я должен делать здесь. Args содержит такую ​​структуру, как info.code (похоже на NetStatusEvent).

  • В других реализациях я видел onFCUnsubscribe обратные вызовы, я должен также реализовать это? Зачем?

1 ответ

Для тех, кто хочет добавить onFCSubscribe поддержка, вот пара ссылок, которые мне помогли.

Во-первых, убедитесь, что ваш rtmp поток играет, проверив его здесь: http://support.akamai.com/flash/index.html?autostart=true&url=rtmp://REPLACE-WITH-YOUR-RTMP-STREAM-URL

Более того, я считаю полезными эти два ресурса:

Вы используете onFCSubscribe а также onFCUnsubscribe открыть и закрыть netStream

public var hostName:String = "rtmp://client.flash.internapcdn.net/client/live_1";
public var streamName:String = "thestream";
public var netConnection:NetConnection;
public var netStream:NetStream;
public var video:Video;

public function BasicLiveVideo()
{
    video = new Video();
    this.addChild(video);
    netConnection = new NetConnection();
    netConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
    var rtnClient:Object = new Object();

    rtnClient.onFCSubscribe = function (info:Object){
        netStream.play(streamName);
        video.attachNetStream(netStream);
    }

    rtnClient.onFCUnsubscribe = function (info:Object){
        netStream.close();
    }

    netConnection.client = rtnClient;
    netConnection.connect(hostName);
}
Другие вопросы по тегам