Ошибка 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