udp接收到的数据包里面含有已经编码的音频数据我该怎么转为文件存放

桃子_ 2016-04-01 03:09:59
初次接触,望大神们帮助
使用语言是java

提供的文档上说明只有
通话音频数据格式
G722编码 每帧数据180bytes。
解码后,双声道, 16位, 16khz 采样率, 256kbps。
32/8 bytes 一帧, 一次获取 512 * 4 = 2048 bytes pcm 数据。

我想知道该怎么解码得到的数据,直接存在文件里面播放不了,希望各位提供一点资料和方法
使用以下方法转码存储报错

File source = new File(file);
File target = new File("files.mp3");
AudioAttributes audio = new AudioAttributes();
audio.setCodec("mp3");
audio.setBitRate(new Integer(16000));
audio.setChannels(new Integer(2));
audio.setSamplingRate(new Integer(16000));

EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp3");
attrs.setAudioAttributes(audio);

Encoder encoder = new Encoder();

encoder.encode(source, target, attrs);

it.sauronsoftware.jave.InputFormatException: Unknown format
at it.sauronsoftware.jave.Encoder.parseMultimediaInfo(Encoder.java:532)
at it.sauronsoftware.jave.Encoder.encode(Encoder.java:840)
at it.sauronsoftware.jave.Encoder.encode(Encoder.java:713)
...全文
413 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
桃子_ 2016-04-07
  • 打赏
  • 举报
回复
虽然问题还在,但是已经能大致定位问题了,先这样了
桃子_ 2016-04-06
  • 打赏
  • 举报
回复
被压缩的数据有没可能是这样的
桃子_ 2016-04-06
  • 打赏
  • 举报
回复
引用 10 楼 sharkka 的回复:
你的图多半不正确,至少应该是这样的,pcm的话,音频参数要正确
导入原始数据时,编码和字节序怎么选择?
百灵工作室 2016-04-06
  • 打赏
  • 举报
回复


你的图多半不正确,至少应该是这样的,pcm的话,音频参数要正确
桃子_ 2016-04-06
  • 打赏
  • 举报
回复
引用 6 楼 sharkka 的回复:
小技巧,不用听声,用audaacity,打开,如果波形分布错落随机,你就会知道声音对不对,如果一片蓝或者一片白那自然是不正确的,听都不用听


这样的图谱有没有问题?
桃子_ 2016-04-06
  • 打赏
  • 举报
回复
引用 6 楼 sharkka 的回复:
小技巧,不用听声,用audaacity,打开,如果波形分布错落随机,你就会知道声音对不对,如果一片蓝或者一片白那自然是不正确的,听都不用听

导入原始数据得到的图
桃子_ 2016-04-06
  • 打赏
  • 举报
回复
引用 6 楼 sharkka 的回复:
小技巧,不用听声,用audaacity,打开,如果波形分布错落随机,你就会知道声音对不对,如果一片蓝或者一片白那自然是不正确的,听都不用听
谢谢,不过我存为文件后用其他软件打开文件,发现不能播放,而且也获取不了音频的一些信息,一般来讲是不是数据不对的原因? 我获取到的数据样例
FD E7 D5 DA BE E7 9F 97 EF FA B7 77 FB F4 7B FB 55 3F DA ED D5 7E BE 77 B7 B7 EF FB 97 77 FA A6 EB F9 DD DD DB 76 7B 73 BD EF FA BC 7F FB AD EF F3 3F 7F BB 7E E7 FA DD ED FA 9E CB 5F B7 DF 3F 37 3F 67 DF 72 7D DF F5 66 DF F7 7D DF DD AE DF BF BD DF DF AE E7 F6 7E EF DE 9D 6F F2 7D 6F 3F BE B5 FA 77 6B 3F 36 DF BF 7F 7D 99 7D DF FB 3F 77 B7 BD EB FA 97 EF 77 3F 7F 7A 3F 3F EF FB 75 EF FE B6 EF DD BE CB 9B 77 3F 37 7B F7 BE EB DF 9E EF DE 6E 7F FB F7 7D BB DD C9 DB EE ED 3A 66 77 FB AE EF DD 57 6F FB BE EB DB FE 76 7A BC 7B
F7 BD EF B1 7D CF B5 77 D7 BB 3E CF B9 DC DD 3F 3F 3F 3F EF A6 DF DD 7F BB DF 3F 7F 7B 3F F6 EF FB F5 7F DF 9D 3D DF FB EE 67 FE DB EF FA F7 DD 3F 7F FB 9F F7 F5 BD F7 EF FB F5 FD DF 66 7F 5F B6 7B 3F 37 DB D9 F7 DD 3F 37 7F B5 B7 DB DD 7C DB 77 F7 7D 3F DD 5D 3F 7F FA 67 D7 5F FE ED DE 7E DF 79 77 6B F6 BE CF 7B B7 7B F7 77 EB DF FD ED 73 AC EF F2 B6 DB F1 7F 3F AE EF 3F 3D DB F9 A6 D7 FB 7D 3F DB B7 CF F6 1E DF DE 76 DB F7 3C DB DF FE DF 3F 3C FB BD BE EB B7 7D 3F B7 EF BB 9D 3F 7F 3F 7F ED DD DF B7 EF FD 3F 7F
百灵工作室 2016-04-06
  • 打赏
  • 举报
回复
小技巧,不用听声,用audaacity,打开,如果波形分布错落随机,你就会知道声音对不对,如果一片蓝或者一片白那自然是不正确的,听都不用听
百灵工作室 2016-04-06
  • 打赏
  • 举报
回复
引用 4 楼 w3226327 的回复:
[quote=引用 1 楼 sharkka 的回复:] 解码后的pcm,就是波形了,下一个音频软件,给对采样率,采样精度,声道就可以按波形播放了,如果出声且声音对了,说明就对了
什么软件,能推荐下吗?很抱歉这么晚才回复。[/quote] Audacity,用它可以播放pcm,等各类音频,要给对参数哦
桃子_ 2016-04-06
  • 打赏
  • 举报
回复
引用 1 楼 sharkka 的回复:
解码后的pcm,就是波形了,下一个音频软件,给对采样率,采样精度,声道就可以按波形播放了,如果出声且声音对了,说明就对了
什么软件,能推荐下吗?很抱歉这么晚才回复。
桃子_ 2016-04-06
  • 打赏
  • 举报
回复
引用 楼主 w3226327 的回复:
初次接触,望大神们帮助 使用语言是java 提供的文档上说明只有 通话音频数据格式 G722编码 每帧数据180bytes。 解码后,双声道, 16位, 16khz 采样率, 256kbps。 32/8 bytes 一帧, 一次获取 512 * 4 = 2048 bytes pcm 数据。 我想知道该怎么解码得到的数据,直接存在文件里面播放不了,希望各位提供一点资料和方法 使用以下方法转码存储报错

            File source = new File(file);
			File target = new File("files.mp3");
			AudioAttributes audio = new AudioAttributes();
			audio.setCodec("mp3");
			audio.setBitRate(new Integer(16000));
			audio.setChannels(new Integer(2));
			audio.setSamplingRate(new Integer(16000));
			 
			EncodingAttributes attrs = new EncodingAttributes();
			attrs.setFormat("mp3");
			attrs.setAudioAttributes(audio);
		
			Encoder encoder = new Encoder();
			 
			encoder.encode(source, target, attrs);
it.sauronsoftware.jave.InputFormatException: Unknown format
	at it.sauronsoftware.jave.Encoder.parseMultimediaInfo(Encoder.java:532)
	at it.sauronsoftware.jave.Encoder.encode(Encoder.java:840)
	at it.sauronsoftware.jave.Encoder.encode(Encoder.java:713)
引用 2 楼 rightorwrong 的回复:
bitrate错了吧。用工具打开保存的文件,看工具是否识别
感谢2位的回答,一直在研究以为没人回答了。。 也就是说如果数据正确我直接保存为文件,是可以直接播放的对吗?就算不用语言解析播放,直接用音乐播放器也可以播放对吗?
rightorwrong 2016-04-05
  • 打赏
  • 举报
回复
bitrate错了吧。用工具打开保存的文件,看工具是否识别
百灵工作室 2016-04-01
  • 打赏
  • 举报
回复
解码后的pcm,就是波形了,下一个音频软件,给对采样率,采样精度,声道就可以按波形播放了,如果出声且声音对了,说明就对了

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧