Jspeex转换出来的wav音频不被standing wave识别,无法播放?报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Jspeex转换出来的wav音频不被standing wave识别,无法播放?报错

2020-06-15 19:41:36 400 1

环境:JDK 1.7, Flex 4, Win7/8/8.1

前提:手机端的语音压缩用的是Speex。并把文件用Base64转码了。

公司项目需求:在Flex平台接收来自手机端发来的语音并播放。

项目结构:前台Flex,后台Java。

解决方案:

    1、直接在Flex端接收语音的编码然后解码并播放。

        但是我搜索了两天,发现在Flex端没有用AS3写的speex的实现,也没找到例子。唯一的一个线索是,一个老外说用AS3重写speex。OMG,我时间有限,另外我貌似也搞不定。。。

    2、在后台Java端解码,然后写入spx文件,spx文件转换为flex可识别的语音格式,后台给前台一个文件地址,然后前台播放。

        JSpeex版本:0.9.8  ;      Standing Wave 版本:2

        采用JSpeex来转换spx,可输出为wav格式。但是Flex只识别MP3和Flv的音频,只好再次搜索,找到一个Flex的类库Standing Wave ,可以实现在Flex端播放wav音频。自己写了Flex的Demo来播放wav音频,但是我发现用JSpeex转换过来的wav就是没法用Standing Wave播放,也不报错,Standing Wave倒是可以播放其他一些wav文件。

代码如下:

Java端:


String[] sourceAndDest = new String[]{"F:\\java\\speex\\jspeex\\dist\\input.spx", "F:\\java\\speex\\jspeex\\dist\\output.wav"};


            JSpeexDec decoder = new JSpeexDec();
            if (decoder.parseArgs(sourceAndDest)) {
                decoder.decode();
            }




Flex端:


import com.noteflight.standingwave2.elements.Sample;
        import com.noteflight.standingwave2.formats.WaveFile;
        import com.noteflight.standingwave2.output.AudioPlayer;


        var file:FileReference;
        var player:AudioPlayer = new AudioPlayer();

        var content:ByteArray = null;
        var sample:Sample = null;

        // 文件路径
        var urlStr:String = "C:\\CiatMonitor\\tempDir\\chatvoice\\wav\\20140729113707.wav";

        /**
         * 初始化请求加载文件
         */
        public function init():void {
            var urlRequest:URLRequest = new URLRequest(urlStr);

            var loader:URLLoader = new URLLoader();
            loader.dataFormat = URLLoaderDataFormat.BINARY;
            loader.addEventListener(Event.COMPLETE, completeLoad);
            loader.load(urlRequest);
        }

        /**
         * 加载文件结束
         * @param evt
         */
        function completeLoad(evt:Event):void {
            content = evt.target.data as ByteArray;
        }

        /**
         * 播放声音
         */
        function playVoice():void
        {
            player.play(WaveFile.createSample(content));
        }

        /**
         * 停止播放
         */
        function stopVoice():void
        {
            player.stop();
        }




请教高手来给小弟以指导啊,我是真过不去了,静候答案。

取消 提交回答
全部回答(1)
相关问答

1

回答

Android webview与javascript的交互以及代码混淆

2016-06-20 11:03:24 2092浏览量 回答数 1

1

回答

C#json反序列化 - C#报错

2020-06-03 17:47:50 495浏览量 回答数 1

1

回答

将python应用程序转换为webapp的最简单框架?

2020-02-22 18:29:25 548浏览量 回答数 1

1

回答

python3.x中用opecv3做人脸识别报错问题1

2021-10-21 21:01:51 345浏览量 回答数 1

0

回答

stm32实现阿里云智能语音识别

2020-05-23 21:01:50 698浏览量 回答数 0

1

回答

阿里云ES的索引(index)是什么意思?

2020-12-29 10:54:35 1079浏览量 回答数 1

1

回答

python3.x中用opecv3做人脸识别报错问题2

2021-10-21 21:02:26 456浏览量 回答数 1

1

回答

android/Java如何将String类型转为XML实例?:报错

2020-06-06 23:51:42 452浏览量 回答数 1

1

回答

fastjson报java.lang.VerifyError:错误?报错

2020-06-08 15:47:50 608浏览量 回答数 1

1

回答

[@talishboy][¥20]写一段 Java 程序将 byte 转换为 long?

2018-12-14 16:38:16 1775浏览量 回答数 1
+关注
爱吃鱼的程序员
https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
2
文章
21564
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载