FMS/AMS服务本地录制在线视频碰到的问题解决方案

最近在使用AMS服务器录制本机的摄像头视频的时候总是不成功,由于只有一台机器,服务器和客户端都在一台机器上,所以发现问题多多。

先把代码贴出来:

package  
{
	import flash.display.*;
	import flash.media.*;
	import flash.events.*;
	import flash.net.*;
	import fl.motion.MotionEvent;
	
	public class recordVideo extends MovieClip
	{
		var nc:NetConnection;
		var ns:NetStream;
		var video:Video;
		var cam:Camera;
		var mic:Microphone;

		public function recordVideo() 
		{
			//videoName.text = "";
			beginRecordBtn.label = "开始录制";
			beginRecordBtn.addEventListener(MouseEvent.CLICK, onBeginRecord);
			stopRecordBtn.label = "停止录制";
			stopRecordBtn.addEventListener(MouseEvent.CLICK, onStopRecord);
			
			video = new Video(400, 300);
			cam = Camera.getCamera();
			mic = Microphone.getMicrophone();
			video.attachCamera(cam);
			
			addChild(video);			
		}
		
		private function onBeginRecord(evt:MouseEvent):void
		{
			nc = new NetConnection();
			nc.client = this;
			nc.addEventListener(NetStatusEvent.NET_STATUS, onBeginRecordStatusHandler);
			nc.connect("rtmp://localhost/live");
		}
		
		public function onBWDone(){}
		
		private function onBeginRecordStatusHandler(evt:NetStatusEvent):void
		{
			if(evt.info.code == "NetConnection.Connect.Success")
			{
				ns = new NetStream(nc);
				ns.addEventListener(NetStatusEvent.NET_STATUS, onBeginRecordStatusHandler);
				
				var obj = new Object();
				obj.onMetaData = function(){};				
				ns.client = obj;
				
				ns.attachCamera(cam);
				ns.attachAudio(mic);
				
				ns.publish(videoName.text, "record");
			}
		}
		
		private function onStopRecord(evt:MouseEvent):void
		{
			nc.close();
		}
	}
	
}

如果想把视频录到.../applications/live文件夹下,则出现 如下日志:


 Application doesn't have permissions for server-side record/append of streams; access denied to stream 123. 

就是说应该没有权限向服务器端录制流,对123流的录制被拒绝。(123为我要录制的视频名称)

如果录到.../applications/vod下,则出现下面的日志显示:


Write access denied for stream ww.

即写流ww的通道被拒绝。(ww是我录制的视频名称)

如果是录制到你自己创建的应用下面,则根据你是从哪个默认应用下拷贝的main.far文件有关。具体这里就不说了。

这里就说说录制到live文件夹下的解决方案.

1.首先解压live文件夹下的main.far(可以用常用解压工具),会出现如下几个文件:


2.用编辑工具打开Application.xml,显示如下:

<Application>
<SharedObjManager>
<ClientAccess override="no">false</ClientAccess>
</SharedObjManager>
<StreamManager>
            <StreamRecord override="no">false</StreamRecord>
    </StreamManager>
</Application>

这里的信息大致意思是禁止共享对象的客户端访问和流录制,只要将其访问和流录制都改为允许,则能解决问题。

即改为:

<Application>
<SharedObjManager>
<ClientAccess override="yes">true</ClientAccess>
</SharedObjManager>
<StreamManager>
            <StreamRecord override="yes">true</StreamRecord>
    </StreamManager>
</Application>


3.改好后,将其所在文件夹重新压缩一下,如果后缀是rar或者zip什么,不要紧,直接改后缀为.far就行了。

4.重启服务,再次运行程序,服务器端的摄像头录制没问题,问题解决,哈哈。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值