![](/img/trans.png)
[英]Adobe Air/Actionscript/Flex for IOS IPhone 4 Camera Rotated 90 degrees
[英]Adobe AIR for iOS stream from iPhone Camera to RTMP server
我有一个在我的iOS设备上测试过的客户端.ipa文件,现在我已经通过使用Adobe Air for IOS成功地使该应用程序在iPhone上运行,为此,我正在使用Adobe Flash CC。
当我在iPhone上启动该应用程序时,视频连接未连接到red5流服务器,因此无法将流从摄像机广播到服务器。
我已经使用了stagevideo。 当我在具有网络摄像头的本地PC上启动该应用程序,并在iOS上启动另一个应用程序以在iPhone上接收流时,我可以从我的PC网络摄像头看到直播。
但我想测试iPhone相机并发送来自red5服务器的实时流媒体。
我怎样才能做到这一点。 我将当前代码放在下面。
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.NetStatusEvent;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Camera;
import flash.media.Microphone;
import flash.media.Video;
import flash.net.Responder;
import flash.media.StageVideo;
import flash.events.StageVideoAvailabilityEvent;
import flash.events.StageVideoEvent;
import flash.geom.Rectangle;
var nc:NetConnection;
var good:Boolean;
var netOut:NetStream;
var netIn:NetStream;
var cam:Camera;
var mic:Microphone;
var responder:Responder;
var r:Responder;
var vidOut:Video;
var vidIn:Video;
var outStream:String;
var inStream:String;
var sv:StageVideo;
stage.addEventListener(StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY, onAvail);
var sva:Boolean;
function onAvail(e:StageVideoAvailabilityEvent):void{
sva = (e.availability == StageVideoAvailability.AVAILABLE);
trace(sva);
var rtmpNow:String="rtmp://192.168.1.7/test1";
nc=new NetConnection;
nc.client = this;
nc.connect(rtmpNow,"trik");
nc.addEventListener(NetStatusEvent.NET_STATUS,getStream);
}
function onRender(e:StageVideoEvent):void{
sv.viewPort = new Rectangle(0,0, 240, 180);
}
function getStream(e:NetStatusEvent):void
{
good=e.info.code == "NetConnection.Connect.Success";
if(good)
{
trace("hello");
// Here we call functions in our Java Application
setCam();
//setMic();
//Play streamed video
netIn = new NetStream(nc);
if(sva){
//Publish local video
netOut=new NetStream(nc);
//netOut.attachAudio(mic);
netOut.attachCamera(cam);
netOut.publish("tester", "live");
sv = stage.stageVideos[0];
sv.addEventListener(StageVideoEvent.RENDER_STATE, onRender);
sv.attachNetStream(netIn);
netIn.play("tester");
}else{
setVid();
vidIn.attachNetStream(netIn);
netIn.play("tester");
}
}
}
function streamNow(streamSelect:Object):void
{
trace("hello");
}
function setCam():void
{
cam=Camera.getCamera();
cam.setMode(240,180,15);
cam.setQuality(0,85);
}
function setMic():void
{
trace("hello");
mic=Microphone.getMicrophone();
trace("hello");
mic.rate =11;
trace("hello");
//mic.setSilenceLevel(12,2000);
trace("hello");
}
function setVid():void
{
trace("vid");
vidIn=new Video(240,180);
addChild(vidIn);
vidIn.x=0;
vidIn.y=0;
}
您的代码通常看起来不错,但是我将ns.publish和ns.play部分分开。 恕我直言,在发布成功之前,您不应该尝试播放。 另外,如果您不只是在测试到服务器的往返行程,还可以将摄像机连接到StageVideo上。 如果iOS允许的话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.