Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash appendBytes()不适用于actionscript 3_Flash_Actionscript 3_Netstream - Fatal编程技术网

Flash appendBytes()不适用于actionscript 3

Flash appendBytes()不适用于actionscript 3,flash,actionscript-3,netstream,Flash,Actionscript 3,Netstream,我有以下代码 var playingStream:NetStream; function playBytes(bytes:ByteArray): void { var connect_nc:NetConnection = new NetConnection(); connect_nc.connect(null); playingStream=new NetStream(connect_nc); playin

我有以下代码

var playingStream:NetStream;
function playBytes(bytes:ByteArray): void
{

            var connect_nc:NetConnection = new NetConnection();
        connect_nc.connect(null);
            playingStream=new NetStream(connect_nc);
            playingStream.soundTransform= mySound;
             playingStream.play(null);
            playingStream.appendBytes(bytes);
}
我使用外部接口回调从JS调用此函数 但是,当我在
.fla
文件中编译上述代码时,它就会抛出一个错误

错误:1061通过静态类型为flash.net:NetStream的引用调用可能未定义的方法appendBytes


闪光灯显示该功能在AS3中有效。那么我要去哪里写呢???

我一眼就看不出代码有什么问题,但在“帮助”页面上有一个注释:

iOS版AIR 3.0中的H.264视频不支持此方法


您是在iphone上还是在AdobeAIR上部署此功能?

您的代码应该可以工作。但是,appendBytes方法包含在Flash Player 10.1及更新版本中。如果您针对低于10.1的任何内容进行编译,您将得到与问题中列出的错误类似的错误。查看下面在ByteArray.org上的博文,以及下面我包含的示例。我为另一篇文章建立了一个例子,我希望它也能帮助你


播放初始化:

var video:Video = new Video(width, height);
var video_nc:NetConnection = new NetConnection();
var video_ns:NetStream = new NetStream();

video_nc.connect(null);
video_ns.play(null);
video_ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);

video.attachNetStream(video_ns);
ProgressEvent.PROGRESS处理程序:

video_ns.appendBytes(bytesAvailable);
这本质上是它的jist,bytesAvailable将表示从事件数据缓冲区读取的字节。下面列出了一个完整的示例:

package
{

import flash.display.Sprite;
import flash.events.NetStatusEvent;
import flash.events.ProgressEvent;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.net.NetStreamAppendBytesAction;
import flash.net.URLRequest;
import flash.net.URLStream;
import flash.utils.ByteArray;

[SWF(width="1280", height="720")]
public class NetStreamAppendBytes extends Sprite
{

    var video:Video;
    var video_nc:NetConnection;
    var video_ns:NetStream;

    var video_stream:URLStream; 

    public function NetStreamAppendBytes()
    {
        super();

        video_nc = new NetConnection();
        video_nc.connect(null);

        video_ns = new NetStream(video_nc);
        video_ns.client = this;
        video_ns.addEventListener(NetStatusEvent.NET_STATUS, ns_statusHandler);

        video = new Video(1280, 720);
        video.attachNetStream(video_ns);
        video.smoothing = true;

        video_ns.play(null);
        video_ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);

        video_stream = new URLStream();
        video_stream.addEventListener(ProgressEvent.PROGRESS, videoStream_progressHandler);

        video_stream.load(new URLRequest("path_to_flv"));

        addChild(video);
    }

    private function ns_statusHandler(event:NetStatusEvent):void
    {
        trace(event.info.code);
    }

    private function videoStream_progressHandler(event:ProgressEvent):void
    {
        var bytes:ByteArray = new ByteArray();

        video_stream.readBytes(bytes);
        video_ns.appendBytes(bytes);
    }

}

}

祝你好运

如果您正在将一个持久的黑色帧编码到flv中,那么可以使用此技术来http流式传输aac/m4a。我的测试flv用H264和aac/mp4a编码。有关http psudostreaming的更多信息,请查看此链接。