在 flex 中播放 mp4 声音

Play mp4 sound in flex

我正在研究播放 mp4 文件格式声音的音频播放器。
此音频文件为用户录制的文件,稍后将在音频播放器中播放。

另一件事是 mp4 文件 url 是 rtmp 而不是 http 就像:

rtmp://domain/vod/mp4:foldername/filname.mp4

我做了以下事情:

<s:Button id="btnPlay" label="Play" click="Play_clickHandler(event)" />

作为:

public var sound:Sound;
public var mySoundChannel:SoundChannel;

protected function Play_clickHandler(event:MouseEvent):void
{
    sound = new Sound();
    sound.addEventListener(Event.SOUND_COMPLETE, soundComplete);
    var req:URLRequest = new URLRequest("rtmp://domain/vod/mp4:foldername/filname.mp4");
    sound.load(req);
    mySoundChannel = sound.play();
}

private function soundComplete(event:Event):void {
    sound.load(new URLRequest("rtmp://domain/vod/mp4:foldername/filname.mp4"));
    mySoundChannel = sound.play();
}

我试过上面的代码但没有成功。它只播放 mp3 文件格式。
有什么办法可以播放这个文件吗?

注意:我不想使用任何方法将文件转换为mp3文件格式。
我试图在 VideoPlayer 中播放此文件。它有效,但设计看起来很糟糕。

仅供参考:

音频文件格式为:

非常感谢任何帮助。

您不能像这样使用 Sound 对象来播放 RTMP 流的音频。

但要做到这一点,我认为最简单的方法是使用 NetStream 对象,并通过其 receiveVideo() 功能,您可以只接收音频流,甚至不接收音频流需要附加任何视频播放器。

看看这个例子:

var server:String = 'rtmp://localhost/vod',
    stream:String = 'mp4:video.mp4',
    nc:NetConnection,
    ns:NetStream;

function init(): void
{
    nc = new NetConnection();
    nc.addEventListener(NetStatusEvent.NET_STATUS, on_NetStatus);
    nc.connect(server); 
}

function on_NetStatus(e:NetStatusEvent): void 
{
    if(e.info.code == 'NetConnection.Connect.Success'){
        ns = new NetStream(nc);
        ns.receiveVideo(false);
        ns.play(stream);
    }
}

init();

希望能帮到你。