Есть видео с вебки. Воспроизводится простым примером из Вовзы
На некоторых система звук не воспроизводится. Видео есть.
Столкнулся с таким на Windows Vista x32 + Opera + Любая версия плеера
На этой же машине нет звука в Standalone плеере
Есть звук в хроме с PepperFlash, но если не открыта Опера с другим экземпляром примера
Соорудил пример, который таким же образом соединяется, но отслеживает данные в NetStream. Скрин в аттаче. На входе звук есть, но плеер или система не воспроизводит звук. Уже голову сломал совсем.
С чем может быть связано такое поведение?
Код AS3:
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.NetStatusEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.text.TextFielSd;
public class Main extends Sprite
{
private var nc:NetConnection = null;
private var nsPlay:NetStream = null;
private var connectStr:String
private var videoRemote:Video;
public function Main():void
{
if (stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
addChild(videoRemote);
output_tf = new TextField();
output_tf.width = stage.stageWidth - 20;
output_tf.height = 300;
output_tf.x = 10;
output_tf.y = videoRemote.y + videoRemote.height + 10;
output_tf.border = true;
addChild(output_tf);
stage.align = "TL";
stage.scaleMode = "noScale";
startCamera();
}
private function startCamera():void
{
msg("start");
connectStr = "rtmp://localhost:1935/videochat"; //connect.connectStr.text = "rtmp://www.need-get.com:1935/videochat";
doConnect(null);
}
private function ncOnStatus(e:NetStatusEvent):void
{
msg(e.info.code);
if (e.info.code == "NetConnection.Connect.Success")
{
subscribe(null);
}
}
private function doConnect(event:MouseEvent):void
{
msg("do connect");
if (nc == null)
{
msg("connect " + connectStr);
nc = new NetConnection();
nc.connect(connectStr);
nc.addEventListener(NetStatusEvent.NET_STATUS, ncOnStatus);
}
}
private function nsPlayOnStatus(e:NetStatusEvent):void
{
msg (e.toString());
}
private function subscribe(event:MouseEvent):void
{
nsPlay = new NetStream(nc);
nsPlay.addEventListener(NetStatusEvent.NET_STATUS, nsPlayOnStatus);
nsPlay.addEventListener(AsyncErrorEvent.ASYNC_ERROR, nsPlay_asyncError);
nsPlay.addEventListener(IOErrorEvent.IO_ERROR, nsPlay_ioError);
nsPlay.addEventListener(IOErrorEvent.NETWORK_ERROR, nsPlay_ioError);
var nsPlayClientObj:Object = new Object();
nsPlay.client = nsPlayClientObj;
nsPlayClientObj.onMetaData = onMetaData;
nsPlay.bufferTime = 0;
nsPlay.play("testing");
//channel = nsPlay.play("testing");
videoRemote.attachNetStream(nsPlay);
}
private function nsPlay_ioError(e:IOErrorEvent):void
{
msg(e.toString())
}
private function nsPlay_asyncError(e:AsyncErrorEvent):void
{
msg(e.toString())
}
private function onMetaData(infoObject:Object):void
{
for (var propName:String in infoObject)
{
msg(" " + propName + " = " + infoObject[propName]);
}
}
private function nsPublishOnStatus(infoObject:NetStatusEvent):void
{
}
private function msg(str:String):void
{
output_tf.appendText(str + "\n");
}
}
}