我试图实现MP4(或更具体的M4A)声音的无缝循环。加载,播放到最后,然后寻找零位的常用方法会在第二次播放开始之前产生一个小延迟(小于一秒)。
所以现在我试图预加载声音数据,然后使用NetStream.appendBytes()
在原始声音的末尾附加整个声音数据,期望声音重复一次。但首先,我希望能够使用appendBytes()
方法播放一次声音。这是我写的代码,它没有给出任何错误,但也没有发出声音:
var data:ByteArray = new SoundData; // SoundData class contains the embedded M4A file data
var connection: NetConnection = new NetConnection();
connection.connect(null);
var stream: NetStream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
stream.client = {};
function onNetStatus(event:NetStatusEvent): void {
trace(event.info.code, stream.time, stream.bytesLoaded, stream.bytesTotal);
}
stream.play(null);
stream.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
stream.appendBytes(data);
我正确使用appendBytes()
吗?
答案 0 :(得分:1)
我最终使用黑客来实现明显的无缝循环:通过NetStream加载两个声音文件,播放一个,在结束前100毫秒,开始播放另一个。