游戏开发论坛

 找回密码
 立即注册
搜索
查看: 9500|回复: 27

关于从文件流中播放MP3的问题

[复制链接]

23

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
发表于 2008-4-17 00:18:00 | 显示全部楼层 |阅读模式
我做了以个打包压缩程序
已经实现了随意读取压缩文件中任意文件的流了
请问大家 我怎么通过得到的文件流来播放MP3?
在DirectX9中的Audio实现不了!
希望大家解答,谢谢!我用的是.NET

11

主题

747

帖子

752

积分

高级会员

Rank: 4

积分
752
发表于 2008-4-17 15:34:00 | 显示全部楼层

Re:关于从文件流中播放MP3的问题

你用什么程序?VB?

23

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
 楼主| 发表于 2008-4-18 00:51:00 | 显示全部楼层

Re:关于从文件流中播放MP3的问题

是的,我用的是VB.NET
不过如果是C# 的方法,我也能懂!希望有人能帮忙

23

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
 楼主| 发表于 2008-4-18 01:07:00 | 显示全部楼层

Re:关于从文件流中播放MP3的问题

还有关于 压缩算法
我想用比较简单的 "LZW压缩算法"
但是我是才接触文件编程的,不知道这种GIF的压缩算法对一般文件的压缩率会怎样
针对Byte的标识需要高于8位,那么用哪种数据类型才不会浪费空间且标识数目不大不小呢?INT16?
希望有人曾经编写过类似的程序

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
发表于 2008-4-18 10:17:00 | 显示全部楼层

Re:关于从文件流中播放MP3的问题

lzw理论上压缩率已接近极限,但实际应用中不可能,字典项字节数多时带来的空间冗余和字节数少时导致的频繁重建是必然的矛盾,Int16应该算是不错的选择,空间冗余不算严重,文件不很大时字典填满重建的次数也有限。

DirectX9中的Audio需要的入口参数是文件路径,用它你必须先完全解压文件,流怕是用不上。最底层的方法是用DirectSound,但又只能自己处理MP3解码器,一般非C++人不干这事儿。MP3本就是高压缩的音频文件,直接用Audio调播就是了,何必lzw多处理一层?

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2008-4-18 12:45:00 | 显示全部楼层

Re:关于从文件流中播放MP3的问题

用dshow的例子。

7

主题

87

帖子

109

积分

注册会员

Rank: 2

积分
109
QQ
发表于 2008-4-19 01:37:00 | 显示全部楼层

Re:关于从文件流中播放MP3的问题

在DotNet中最好把资源释放到一个临时文件:dim tempmusic as string=path.gettempfilename,直接用AudioVideoPlayback中的Audio(如果音频)或Video(如果视频).想再麻烦一点可以包装一下COM版的DirectShow,

至于MP3解码器,别说 非C++人不干这事儿,用C++的也懒的搞.

7

主题

87

帖子

109

积分

注册会员

Rank: 2

积分
109
QQ
发表于 2008-4-19 01:46:00 | 显示全部楼层

Re:关于从文件流中播放MP3的问题

lzw压缩图象比较好吧,音频由于数据内容的性质,用lzw压缩效果很差的.以前曾用vb6写过,经验感觉用13位编码最好(只用8192个编码),用16位int有点浪费了,压缩效果不好.

而且像jpg、mp3、zip这类已经压缩过的文件,如果不加识别就用lzw的话,体积不减反增,会增到未压缩的尺寸,跟解压了一样,DotNet的System.IO里的GZip和Deflate也是这样。

11

主题

747

帖子

752

积分

高级会员

Rank: 4

积分
752
发表于 2008-4-19 12:54:00 | 显示全部楼层

Re: Re:关于从文件流中播放MP3的问题

息阳: Re:关于从文件流中播放MP3的问题

还有关于 压缩算法
我想用比较简单的 "LZW压缩算法"
但是我是才接触文件编程的,不知道这种GIF的...

关于 压缩算法 如果你考虑这个问题那么你开始走弯路了,你得确定你的程序目标是什么?如果是MP3播放器,那么你可以深入这个问题,如果是游戏,那么你要考虑的是只要可以根据游戏内容播放MP3就行,这样你可以把大量的精力花费在如何制作游戏的主程序上,如果你对这个问题考虑过深,那么等你的程序能播放MP3时,你可能已经精疲力竭。并且开始改变你最初的想法了。
关于播放,VB6里有MP3的控件,记得有个用API播放MP3的源程序,.NET不太清楚,你可以查一下播放MP3的相关资料

23

主题

142

帖子

142

积分

注册会员

Rank: 2

积分
142
 楼主| 发表于 2008-4-19 19:16:00 | 显示全部楼层

Re:关于从文件流中播放MP3的问题

其实这个压缩我也没怎么打算加进去,关于打包,我只是不想在游戏的目录下有太多的散乱文件
所以嘛,压缩我想还是直接在文件上花时间好了,起码BMP的文件我不会用它了
还是直接用带ALPHA通道的文件吧!
非常感谢大家的讨论
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 15:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表