Actionscript 3 Red5服务器中AS3中的视频录制问题
我使用动作脚本作为客户端,拥有Red5媒体服务器。我的视频有两个问题:Actionscript 3 Red5服务器中AS3中的视频录制问题,actionscript-3,video-recording,Actionscript 3,Video Recording,我使用动作脚本作为客户端,拥有Red5媒体服务器。我的视频有两个问题: 视频录制不正确,播放不顺畅 有时视频从15-20秒开始,而不是从0秒开始 我编写了以下代码: private function onStart():void { mic = Microphone.getMicrophone(); cam = Camera.getCamera(); if(cam!=null) { cam.addEventListener(StatusEvent.STATU
private function onStart():void
{
mic = Microphone.getMicrophone();
cam = Camera.getCamera();
if(cam!=null)
{
cam.addEventListener(StatusEvent.STATUS, onDivStatus);
ns.attachCamera(cam)
cam.setQuality( 0, 100 );;
}
else
{
trace("you need to check webcam setting:");
}
if(mic != null)
{
mic.setUseEchoSuppression(true);
mic.setSilenceLevel(5, 1000);
mic.addEventListener(StatusEvent.STATUS, onDivStatus);
ns.attachAudio(mic);
}
else
{
trace("you need to check Microphone setting:");
}
webCamRecording.video1.attachCamera(cam);
webCamRecording.video1.smoothing = true;
}
var timer:Timer;
public function startRecording():void
{
ns.publish(webCamRecording.userName,"record");
webCamRecording.stopBtn.visible = true;
webCamRecording.stopBtn.addEventListener(MouseEvent.CLICK,stopRecording)
timer = new Timer(1000,10*60);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);
timer.start();
}
private function stopRecording(evt:MouseEvent):void
{
trace("call external function::::::::::::::D>>>>>> ");
timer.stop();
webCamRecording.video1.clear();
ns = null
webCamRecording.video1.visible = false;
}
我检查了日志,发现以下错误:
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at sun.nio.ch.IOUtil.write(IOUtil.java:68)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:254)
at org.red5.io.flv.impl.FLVWriter.writeMetadataTag(FLVWriter.java:371)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:226)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-12" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at sun.nio.ch.IOUtil.write(IOUtil.java:68)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:254)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-15" java.nio.BufferOverflowException
at java.nio.Buffer.nextPutIndex(Buffer.java:519)
at java.nio.HeapByteBuffer.putInt(HeapByteBuffer.java:366)
at org.apache.mina.core.buffer.AbstractIoBuffer.putInt(AbstractIoBuffer.java:743)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:251)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-18" java.nio.BufferOverflowException
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:357)
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:336)
at sun.nio.ch.IOUtil.write(IOUtil.java:60)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:254)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-20" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at sun.nio.ch.IOUtil.write(IOUtil.java:68)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:254)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-34" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at sun.nio.ch.IOUtil.write(IOUtil.java:68)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:278)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-43" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:337)
at sun.nio.ch.IOUtil.write(IOUtil.java:60)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:278)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-44" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at sun.nio.ch.IOUtil.write(IOUtil.java:68)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:278)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-48" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at sun.nio.ch.IOUtil.write(IOUtil.java:68)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:278)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-65" java.nio.BufferOverflowException
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:357)
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:336)
at sun.nio.ch.IOUtil.write(IOUtil.java:60)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:254)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-68" java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:236)
at sun.nio.ch.IOUtil.write(IOUtil.java:68)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:278)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
Exception in thread "Thread-71" java.nio.BufferOverflowException
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:357)
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:336)
at sun.nio.ch.IOUtil.write(IOUtil.java:60)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:205)
at org.red5.io.flv.impl.FLVWriter.writeTag(FLVWriter.java:254)
at org.red5.server.stream.consumer.FileConsumer.write(FileConsumer.java:333)
at org.red5.server.stream.consumer.FileConsumer.doWrites(FileConsumer.java:292)
at org.red5.server.stream.consumer.FileConsumer$1.run(FileConsumer.java:180)
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Close
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Provider disconnect
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Provider disconnect
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Provider disconnect
如果有人有解决办法,请帮帮我。谢谢。根据个人经验,Red5不能产生好的录音效果 使用相同的flash客户端尝试其他服务器,如Wowza Developer server,看看是否可以获得更好的结果。如果您这样做了,那么这是一个Red5问题,并且更容易切换服务器
您可以通过增加缓冲区并等待缓冲区上载来尝试一些优化 Red5 0.9的录制过程完全中断 Red5 0.8做得相当不错,但无法解释Flash Player在慢速连接上进行流媒体/录制时,音频优先于视频数据。因此,当通过慢速连接录制高质量视频时,最终文件中的音频和视频将不同步 Red5 1.0 RC1引入了一种几乎可以正常工作的延迟写入机制 Red5 1.0 final、1.0.1和1.0.2的延迟写入机制存在完全缺陷,导致flv文件具有1个视频关键帧,在通过慢速连接录制时,其余仅为音频 录制的最佳Red5版本是修补版Red5 1.0.2,可在以下博客文章中找到: 它也将在下一个正式版本(1.0.3)中提供
我是该补丁的作者,我做了它来一次性修复Red5录音。它工作得很好。您使用的是哪个版本的RED5?我们使用的是0.9版本。我在v0.9中遇到过此类问题。更改为v0.8以使其正常工作。您可以尝试使用v0.8。检查他们建议使用v0.8,[]链接3]()的链接我同意,我们花了大量时间试图修复Red5下的录制后,不得不转移到wowza。