Ошибка Adobe Cirrus в Direct Connect. "Свойство startTransmit не найдено на flash.net.NetStream"

Ошибка:

ReferenceError: Error #1069: Property startTransmit not found on flash.net.NetStream and there is no default value.

Я много раз играл с циррусом и до сих пор не видел эту ошибку раньше. Но сейчас я не могу заставить его уйти.

Мой p2p Direct connect отлично работает просто отлично. Но каждый раз, когда я вижу эту ошибку всплывающим. Это исключение. Я не могу понять, где это происходит.

Кто-нибудь сталкивался с этим раньше? Любые идеи, где я должен искать?

5 ответов

Решение

Каждый клиентский объект должен иметь следующие определенные функции.

client.stopTransmit=function($p1:*,$p2:*):void{
    trace("stopTransmit called",$p1,$p2);
}
client.startTransmit=function():void{
    trace("startTransmit called");
}

Например, установите их в onPeerConnect функция:

sendStream.client = new Object();
sendStreamClient.onPeerConnect = function(subscriber:NetStream): Boolean{
    var client:Object=new Object();
    client.stopTransmit=function($p1:*,$p2:*):void{
        trace("stopTransmit called",$p1,$p2);
    }
    client.startTransmit=function():void{
        trace("startTransmit called");
    }
    subscriber.client=farStreamClient;
}

Кроме того, они должны быть установлены на вашем sendStreamClient's client имущество:

sendStreamClient.client.stopTransmit=function($p1:*,$p2:*):void{
    trace("stopTransmit called",$p1,$p2);
}
sendStreamClient.client.startTransmit=function():void{
    trace("startTransmit called");
}

И они должны быть установлены на вашем recieveStreamClient's client имущество.

В сценарии на стороне сервера вы, вероятно (или кто-то еще) настроили приложение, чтобы оно вызывало функцию - на этот раз это startTransmit- и не обрабатывалось на стороне клиента. Удалите код с сервера, добавьте значение по умолчанию или добавьте функцию к своему коду.

В моей аналогичной программе мне пришлось добавить функцию в мой код (в моем случае это не было startTransmit):

if ("NetConnection.Connect.Success" == e.info.code) {
netConnection.client=new Object();
netConnection.client.startTransmit=startTransmit; //no columns!
}

где startTransmit

private function startTransmit():Boolean{
    return true;
}

Существует другой netstream, кроме receiveStream и sendStream. Вы должны установить startTransmit а также stopTransmit функции на звонящих netstream, примерно так:

sendStreamClient.onPeerConnect = function(callerns:NetStream): Boolean{
    var farStreamClient:Object=new Object();
    farStreamClient.stopTransmit=function($p1:*,$p2:*):void{
        trace("-------------farStream stopTransmit called!",$p1,$p2);
    }
    farStreamClient.startTransmit=function():void{
        trace("-------------farStream startTransmit called!");
    }
    callerns.client=farStreamClient;
}

Вы отправляете видео h264? Я думаю, что это связано с этим...

Если вы добавите

public function startTransmit($p1:*,$p2:*):void{

}

public function stopTransmit():void{

}

где у вас есть подключение к медиасерверу, оно должно работать нормально, по крайней мере, для меня:)

Проблема не на сервере AMS или Red5. Даже передача видео по P2P с устройства Android вызывает ту же ошибку. Решение сработало. На самом деле stopTransmit() отправляет логическое и целое число. Было бы удивительно узнать, что они имеют в виду. Я открыл ошибку на базе ошибок Adobe, чтобы ее можно было документировать или удалить. Пожалуйста, проголосуйте: https://bugbase.adobe.com/index.cfm?event=bug&id=3844856

Другие вопросы по тегам