音乐DVD,wav与pcm,pcm1704解码器,播放等,有何区别

音乐DVD(AOB\VOB),wav与pcm,解码、播放等,有何区别?将44.1KHz 16bit的wav,刻为数据光盘,是否可行?
最近,亲戚买了部 二手车&br&想用wav 、ape、flac等&br&刻录 无损 音乐&br&&img data-rawheight=&473& data-rawwidth=&515& src=&/2e2417fff33ec43a8f064_b.jpg& class=&origin_image zh-lightbox-thumb& width=&515& data-original=&/2e2417fff33ec43a8f064_r.jpg&&不过,CD的歌曲容量,比较少&br&所以,想要 刻录 PCM&br&&b&无损 音乐 的 DVD&/b&&br&&img data-rawheight=&536& data-rawwidth=&667& src=&/2b25e574fa50be2fd12adaa6c35b8e44_b.jpg& class=&origin_image zh-lightbox-thumb& width=&667& data-original=&/2b25e574fa50be2fd12adaa6c35b8e44_r.jpg&&不过,看了网上的一些介绍&br&类似:&b&Auido DVD Creator&/b&&br&内置的PCM编码器&br&&b&&br&只支持48KHz 16bit&/b&&br&车子 好像 识别不了&br&&img data-rawheight=&263& data-rawwidth=&859& src=&/be92f7e5ac06ac46916c_b.jpg& class=&origin_image zh-lightbox-thumb& width=&859& data-original=&/be92f7e5ac06ac46916c_r.jpg&&CDBurnerXP 、nero 等&br&刻录音乐光盘&br&好像会出现:&br&歌曲有&b&时间&/b&、数量的&b&限制&/b&&br&按时间的话:80min 左右&br&大概,只能够 刻录 20-30 首&br&&img data-rawheight=&86& data-rawwidth=&318& src=&/7a7f6097cdbfca70a172_b.jpg& class=&content_image& width=&318&&正常的话&br&wav 、ape、flac 等&br&无损音乐 格式, 制作 音乐DVD(AOB\VOB)&br&应该是:可以刻录 90首 左右
最近,亲戚买了部 二手车想用wav 、ape、flac等刻录 无损 音乐不过,CD的歌曲容量,比较少…
按投票排序
这应该取决于那部汽车的播放器能支持什么格式吧?如果没资料,试一下不同格式不就知道了。
谢邀。简单纯干货回复。1、纯PCM肯定是不支持的。2、比较好的解决方案,是用mp3,码率采用320就可以了。3、其他也有更合适的方案,取决于你的车,如果支持flac就用flac。
泻药对于PCM(线性脉冲编码)而言,WAV只是一种封装格式,就像苹果系统常用的AIFF一样,他们封装的都是PCM编码的音频波形文件,然而,车子能不能播放需要解码芯片可以支持你的音频文件的封装格式才行,就像视频一样,mp4(视频h.264编码 音频aac编码)视频可以完美的被封装成mkv格式(指的是不用二次编码),但是并不是所有终端设备可以直接支持mkv,就拿iPhone(iPad也一样)打比方,对于相同编码的一段视频,iOS自带的视频APP可以完美播放mp4封装的视频,但是不能播放mkv封装的视频,也就是说封装格式仅仅只是个容器,而里面装的是什么并不是一定的,而播放器(的分离器)必须要支持文件的封装格式才可以播放。————————华丽的分割线—————————暂时先写到这里,下次有空继续更新。
谢邀。如赵老师(同学?)所说,题主对音质有所要求,那就先搞清楚车子碟机所支持的格式有哪些,PCM不行的话flac应该是可以的。其实320k的MP3真的够了,一张CD能弄七八十首,最近录音棚有客户反应说直接刻文件进CD车子会播放不了,我在Nero里选音乐CD再刻就好了。望安全驾驶!0&&parseInt(document.getElementById('custompage').value)页&&1&&parseInt(document.getElementById('custompage').value)楼&&
回复:19 &查看:40132 &
解决部分下载的WAV音乐车子上不能播放的原因。
财产: 720 爱卡币
来自: 江苏省|淮安市
解决部分下载的WAV音乐车子上不能播放的原因。
虎子效果不太好,听说WAV无损的音效更好些。于是全部下载WAV音乐听,可是有些喜欢的WAV音乐在电脑上能播放,到虎子上却播放不了,今天有空用老版千千静听查看属性,原来是和声道的问题,下面分享给大家。
& &先看不能播放的WAV属性,下图
& &760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
看上图编码是DVD DTS 声道是5.1,车子只支持CD音乐,再查播放正常的音乐属性,下图,编码是PCM,声道是 立体声。
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
百度找转换软件,找了好久,终于找到这个软件,如下图,没有注册,一次只能转一首。
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
点“添加文件”打开要转换的WAV音乐,“输出格式”选“WAV(CD)”然后点软件最上方“整理名称”旁边的“转换格式(图标的那个)”就开始转换了,过几十秒就转换好了(注意存储的位置)。用千千静听打开看属性,如下图
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
此时还不行,看比特率24Bits,机子还是不支持,再用千千静听打开刚才转换过的文件,然后右健文件“转换格式”修改比特率为16Bits,看下图
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="window.open('.cn/bbs/photo/.htm')" longdesc=".cn/bbs/photo/.htm" title="点击进入图库"
onmousewheel="return imgzoom(this);" alt="" />
立即转换后,就大功完成了!拷车上就能听了。
[ 本帖最后由 lufeng5288 于
21:57 编辑 ]
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="if(!this.resized) {} else {window.open('.cn/attachments/a/day_cd0a94e450ff73dkVrvDB.jpg');}" onmousewheel="return imgzoom(this);" alt="" />
[每日热点]:
财产: 720 爱卡币
来自: 江苏省|淮安市
自己沙发。。。
760) {this.resized= this.width=760; this.alt='Click here to open new window';}" onmouseover="if(this.width>760) {this.resized= this.width=760; this.style.cursor='hand'; this.alt='Click here to open new window';}" onclick="if(!this.resized) {} else {window.open('.cn/attachments/a/day_cd0a94e450ff73dkVrvDB.jpg');}" onmousewheel="return imgzoom(this);" alt="" />
[每日热点]:
财产: 8732 爱卡币
来自: 上海市|上海市
[每日热点]:
财产: 210 爱卡币
来自: 四川省|成都市
我将 APE、FLAC 或者无损的 Wave 转换成 320kbps 的 MP3,各种设备上都可以播放了,音质也够用了。 推荐两个软件,用于批量转换:
1&&Bigasoft Audio Converter (APE/FLAC转换)
2&&AnyMP4&&Video Converter Platinum (用Bigasoft转换,有的DTS Wave转换出来的MP3,用Windows自带的媒体播放机测试是噪音,翼虎同样不支持。 用这个软件转换,可以得到正确的输出)
[每日热点]:
财产: 210 爱卡币
来自: 四川省|成都市
另外, Wave格式太占空间,不值得。 要想音质好,不如买一个专门的播放器,播放APE或者FLAC,通过线路输入播放。翼虎的音响,个人认为 320kbps MP3足以。 我买了一张 32GB的SD卡,可以放 2000多首歌曲
[每日热点]:
财产: 1893 爱卡币
来自: 上海市|上海市
除了多声道编码制作的WAV文件以外,普通两声道WAV文件,也会见到两种类型。
一种是常见的,制作的取样频率是44100Hz;而另一种比较少见,是48000Hz的取样频率。部分电脑上用的音频播放器,放48000Hz的文件,出来的声音是会有问题的。
不过没试过48000Hz的文件在翼虎上是否能播放。
[每日热点]:
流盲毒书人
财产: 6517 爱卡币
来自: 上海市|上海市
我除了听音乐台103.7或101.7,就是放CD。
[每日热点]:
财产: 15114 爱卡币
来自: 浙江|嘉兴
秀车、改装、自驾!诚邀您的加入
爱卡翼虎官方总群 群号:918883
爱卡翼虎官方总群(二)群号:
爱卡翼虎官方总群(三)群号:
爱卡翼虎浙江分会&&群号:
爱卡翼虎官方嘉兴群 群号:
[每日热点]:
财产: 6445 爱卡币
来自: 江苏省|苏州市
虎子音响效果不太好,听说WAV无损的音效更好些。于是全部下载WAV音乐听,可是有些喜欢的WAV音乐在电脑上能播放,到虎子上却播放不了,今天有空用老版千 ... 谢谢分享。
[每日热点]:
财产: 3260 爱卡币
来自: 北京市|北京市
追求完美,精神可嘉,但我觉得车载音响硬件不太好,听听Mp3就满足了。
苟全性命于乱世,不求闻达于诸侯
[每日热点]:
回复成功,收到1个大米!
10&&parseInt(document.getElementById('custompage_down').value)页楼
1299 爱卡币
18.8 元68.00
49 元159.00
已有 438 人申请查看: 6084|回复: 41
原创科普:音频播放原理及格式解释(纠结wav,ape的可以看看),第一次修改版
TA的每日心情开心 08:26签到天数: 4 天[LV.2]偶尔看看I
本帖最后由 geogechan 于
09:22 编辑
前段时间在闪存区发了一篇关于解码与音质的帖子,漏洞百出,在小小了解了音乐CD的原理之后,重作此文。本文参考了维基和一些资料。全文结构较乱,本来准备再整理,看到有研究wav和ape之类的帖子,决定提前发。下面简述音乐从制作到变成声音进入我们耳朵的流程:
歌手在录音棚里唱歌,对于这些声音,专业设备每秒采样44100次,以16个二进制数表示电压(44100Hz,16bit,另外196KHz之类同理),将声音(模拟信号)转换为数字信号,称为AD(模数转换)。由于声音要后期处理,这些数字信号还要再DA(数模转换),AD多次,最终还是数字形式保存。这些数字信号具体形式为一串串16位的二进制数字(中间包括定位符),称为线性PCM,DAC只认识这些东西。
对于CD机,它们读取CD碟中的二进制数字,然后每隔1/44100秒输出一组16位的二进制数字(PCM)到到DAC。
DAC负责数模转换,它把PCM转换为电压值。每次转盘给他一组16位的二进制数字,他就输出一个电压(根据这16个二进制数字里的定位符确定左右声道)。对于mp3播放器,DAC出来的一个个电压值直接进入运算放大器(运放),就是Line Out口。
还有一条路是DAC出来进入信号放大电路,这就是Phone Out口。
上述过程中有一个很重大问题,名曰Jitter。二进制数字在传输过程中不可能出现一丁点错误(0,1的世界里有完善的纠错体制),那么理论而言CD机输出的数字信号是完全正确的。但由于世界上没有精准的时钟,每隔1/44100秒输出的那个数字信号虽然完全正确,但时间不对,本来要在1s时的PCM变成了1s+50ps的PCM,最后输出的模拟信号波形是变形的!比如大家高中描点画正弦波形,x=1对应Y=1,结果变成x=1+5*10^(-11)对应Y=1,波形就不对了。Jitter在录音棚里就产生,由于人家的家伙很贵,Jitter都是ps级别的。到了CD机之类的,就是ns级别的,甚至更高(当然贵CD的就小),所以CD输出到DAC的信号变形不小,mp3播放器之类就更悲剧了。(ps为皮秒,10^(-12)秒;ns为纳秒,10^(-9)秒)
每一个过程都会产生jitter,第一步录制就有jitter(这个很小),CD转盘输出也有jitter,到DAC也有jitter。。。。。最后播放也有jitter。包括自己刻录盘也jitter,jitter无处不在。所以刻录盘和原版CD的区别是有的,就是刻录机产生的jitter,而0101001这样的二进制数字当然没有变化。jitter的实质就是在不准确的时间输出了正确的数(这是俺的理解,嘻嘻)。
对于44100hz,16bit的音乐文件,DAC一秒钟要转换44100串16位数字,然后输出,苦也。至于一些196Khz,32bit的音乐,却不是要了很多MP3的DAC的命?要知道很多mp3解码DAC都是一个主控里面的,就那点电压和空间。所以很多时候一些码率高的无损放不了(当然,不能播放不一定是这个问题),DAC表示鸭梨很大!下面介绍音频文件。本来那一串串的数字,叫PCM,或者叫.wav文件,是的,就是CD抓轨的东西(还有一种wav是dts的,不予讨论)。wav是老子,儿子分两种,一种是有损格式mp3,wma,aac之类的,还有一种无损,如flac,ape之类的。
Mp3流行的背景,是人们发现wav太肥了,一首歌要50MB+。大家经历过128MB的mp3的时代,那个时候闪存贵啊,128MB和256MB价格差很多!于是大家就用mp3格式来存储。mp3是根据一种算法(MPEG-3),把wav简化,比如去掉20Hz以下和20000Hz以上的频率(一般人耳听不到)和心理上忽略的,最后把体积减小到十二分之一,音质却没有劣化太多,wma貌似加上了版权之类的。
无损之类的就是很多人发现mp3的音质不满足他们要求,于是通过算法把wav压缩,就像zip压缩一样,但没有一个字节的损失。所以播放无损不用怀疑音质和原始wav有任何一点点区别!当然耗电。在这里,无损格式推荐flac,由于只涉及整数运算,而且支持硬解码之类,解码简单,ape则涉及浮点运算。很多人发现一些无损无法播放的一个原因就是压缩率太高(使用footbar2000转化无损格式的话可以看到&最大压缩&和&最快解码&)。Flac官网的形容就是&为音频文件优化的zip压缩&,播放前解压缩,因为DAC只认识那一串串的PCM。具体流程参考被压缩成zip的word文件,你双击那个word文件,于是先有一个提示框解压缩,然后打开word。而且,对于无损播放前的转换,再垃圾的mp3都能不出一点错误地转换为线性PCM,没有一点错误!这就是强大的数字世界。你解压缩zip文件,如果出错而又不能修复,就会提示错误,道理一样。无损和wav之间可以无限次地转换而不出一个字节的错误,就像你可以把一个文件无数次地压缩解压而不会改变文件一样。
Wav是一个容器,不代表无损,很多人遇到所谓的&假无损&,就是wav已经劣化为了mp3,大量细节已经丢失。mp3此时仍然可以转化为wav(下面介绍这个过程),无损,由于编码原因,体积成倍增加,但是音质已经劣化,这就是&假无损&。
对于上述mp3转wav过程,在直接播放有损音频时都要遇到。一个mp3播放器在播放mp3文件时流程如下:从内存读取文件,解码芯片根据算法,对其进行近似,润色,修补,最后输出线性PCM(wav)。你可能会问:俺直接播放无损不就行了?对,就是这样,如果直接播放无损,这一步就没有,所谓的&飞芯&的音频解码没有用!另外有人发现一些老式或低端播放器不支持wav格式,这是因为他们的缓存太小,厂家为了提高效率,省电,不支持wav。
最后还是回到我们的mp3播放器。
主控是整个播放器的核心,指挥整个运作。他要负责控制音频解码芯片解码,输出PCM,指挥DAC输出模拟信号,还有负责最后的运算放大,润色,根据算法体现各种EQ,而且他还要插手电源管理,所以主控是大脑。
DAC是核心(反正这种小型播放器Jitter都是一个级别),DAC直接决定Lo的质量,决定Po到放大电路信号的纯度,他要保证及时准确地输出纯净的模拟信号。反正,DAC应该决定所谓的&素质&。DAC的供电也至关重要,DAC供电不足是无法达到理论的水平的,而QA350则采用了所谓的各部分独立供电。
至于Po的放大电路,这里决定听感,一部分调音,一部分EQ都在这里完成。
还有一个很重要的地方是电路设计,我拆开过国产平板,真是惨不忍睹,一塌糊涂。mp3的电路设计很大程度上也决定了他的素质和续航(电源管理),电路走向,电容的质量都至关重要,这也是sony,创新机子能够如此牛逼的一个原因,看看njb里面密密麻麻的电容,再看看国产的,啧啧,用料就不是一个级别啊。
最后介绍一下随身播放器调音和EQ。我认为调音和EQ几乎没有的就是所谓的录音笔,这是高素质的代表,完全靠强大的电路和元件把回放做到了极致。
调音过程不仅仅是模拟放大电路的功劳,DSP处理过程中就已经开始参与调音了。
EQ分为两种,通俗来讲就是硬件EQ和软件EQ,在随身里,前者往往是被植入到DAC芯片中的,欧胜的CODEC,比如WM等,都有这个功能的。软件EQ就非常常见了,什么BBE,SRS之类的算是比较高级的,简单的自定义EQ也是软EQ,这些EQ通过DSP运算,对音频数字信号进行简单或者复杂的处理来实现调音。
Po口一定可以实现EQ,而Lo口则不一定(新款一般都有),T51和艾利和的H120等,EQ改变,LO输出的声音也会改变。而老款的sony HD5在这方便做了优化,在采用LO输出的时候,EQ被强制使用了“正常”而且不能更改。
总之在播放器中的各个环节都遵循木桶原理,任何一方面偷工减料都将直接影响到最终声音的输出。尽情佩服那些设计出好声播放器的设计者吧,好的声音一定需要技术的沉淀与积累!
感谢mpio版主斧正,感觉烧友需要多多科普。。。。有人在纠结ape,wav之类的问题
隔壁也有一篇文章与此相关,本人没有借鉴,大家不妨也看看:erji.net/read.php?tid=727634
这个必须得支持!
TA的每日心情无聊 14:18签到天数: 2 天[LV.1]初来乍到
学到不少知识,多谢楼主!希望论坛这种帖子能多一点,而不是各种吐槽
TA的每日心情开心 13:52签到天数: 4 天[LV.2]偶尔看看I
很感谢楼主的科普,问一个问题,楼主的说法,回放中jitter的最初来源是在DAC前的播放器中,也就是说ipc加上顶级的数字输出底座,也不能赶上顶级的CD机,这是由ipc决定的,可以如此理解吧
TA的每日心情开心 08:26签到天数: 4 天[LV.2]偶尔看看I
雾和雨 发表于
很感谢楼主的科普,问一个问题,楼主的说法,回放中jitter的最初来源是在DAC前的播放器中,也就是说ipc加上 ...
是的,其实我没有整理完,每一个过程都会产生jitter,第一步录制就有jitter(这个很小),CD转盘输出也有jitter,到DAC也有jitter。。。。。最后播放也有jitter。包括自己刻录盘也有jitter,jitter无处不在
头像被屏蔽
该用户从未签到
提示: 作者被禁止或删除 内容自动屏蔽
TA的每日心情衰 17:08签到天数: 7 天[LV.3]偶尔看看II
个人感觉解码在电路上基本决定了声音的特点
TA的每日心情开心 08:26签到天数: 4 天[LV.2]偶尔看看I
擦,不要沉
TA的每日心情衰 13:01签到天数: 6 天[LV.2]偶尔看看I
感谢课普,偶机子没有Lo升级难
TA的每日心情慵懒 17:59签到天数: 6 天[LV.2]偶尔看看I
MP3的全名不是MPEG-3哦 是MPEG Audio Layer3
TA的每日心情开心 08:26签到天数: 4 天[LV.2]偶尔看看I
Y-L-F 发表于
MP3的全名不是MPEG-3哦 是MPEG Audio Layer3
默认的嘛,就像mp3是音频格式,但大家默认说mp3就是mp3播放器了。
您老的头像异常风骚,晚辈佩服
TA的每日心情慵懒 21:16签到天数: 1 天[LV.1]初来乍到
留个脚印,认真学习
TA的每日心情慵懒 12:30签到天数: 11 天[LV.3]偶尔看看II
CD机直接播碟片出来的JITTER应该要比电脑播放文件时候产生的JITTER高
当然电脑抓轨的时候就损失一点,所以要用EAC这种软件,能反复纠错
最后希望楼主同时能普及一下时钟的知识
TA的每日心情怒 19:35签到天数: 1 天[LV.1]初来乍到
感谢科普!!!
TA的每日心情无聊 13:28签到天数: 1 天[LV.1]初来乍到
关于调音,其实很多随身的机子在解码的时候就已经开始了,而不仅仅在最后的放大电路,貌似前文也提到了相关“润色”,各种EQ(不包括某些内置于DAC芯片中的硬件EQ)就是很好的例子,当然,不排除某些厂家的EQ关闭时没在音频软处理上动过手脚。
关于素质,DAC的好坏确实决定了素质的很大一部分,但不是单一变量,其他的还有比如供电、晶振的选择等等,放大电路的好坏也在很大程度上决定了素质的优劣,总之在播放器中的各个环节都遵循木桶原理,任何一方面偷工减料都将直接影响到最终声音的输出。
最后支持LZ的科普帖,也希望广大坛友多使用谷哥度娘来学习相关知识。
该用户从未签到
Lo就是没有经过调音无误。
TA的每日心情开心 08:26签到天数: 4 天[LV.2]偶尔看看I
本帖最后由 geogechan 于
12:40 编辑
<font color="#1260953 发表于
关于调音,其实很多随身的机子在解码的时候就已经开始了,而不仅仅在最后的放大电路,貌似前文也提到了相关 ...
有点搞不清楚啊,Lo口按说没有经过放大电路啊,而EQ是内置DAC的吗?感觉有问题。
还有解码,这个我认为播放无损,wav是不用解码的,或者我对解码理解片面
TA的每日心情开心 08:26签到天数: 4 天[LV.2]偶尔看看I
whyou 发表于
Lo就是没有经过调音无误。
确定?那么大家YY的 随身神器的调音对LO没影响啊
该用户从未签到
geogechan 发表于
确定?那么大家YY的 随身神器的调音对LO没影响啊
Line out=DAC直接输出,所以没有任何调音,调音都是放大电路部分的特性了。
如果需要接耳放,这个接口是必须有的(当然有钱烧或者想当小白鼠的话随便)。
TA的每日心情开心 08:26签到天数: 4 天[LV.2]偶尔看看I
TA的每日心情开心 08:26签到天数: 4 天[LV.2]偶尔看看I
不要沉!耳机区鸭梨大啊
客观 包容 敏锐 专业
iMP3.net 随身数码影音
意见反馈:
推广合作:139
莫凡配件:135
All Rights Reserved.in , tags: , , , ,
蛋疼写了段代码播放东方系列wave格式的背景音乐。随便拿个工具打开thbgm.dat就会发现前四个byte都是ZWAV,这应该是神主自己创造的魔数了。然后后面就全都是正常人理解不能的二进制数据了。其实这些都是pcm格式的音频,可以理解为就是wave格式砍掉了包含音频参数等信息的头。thbgm.dat里音频是16bit, 44.1kHz的立体声。游戏中播放时,每首bgm的播放第一遍都由开始位置播到结束位置,此后就重复播放不含前奏的循环部分。如果要提取wave格式音频只要根据每个bgm的开始位置,前奏长度,循环长度,就可以导出数据并补上头信息写入.wav文件。不过这里的方法不提取音频而是通过api设置音频参数,直接播放pcm格式音频。至于优点,除了省点硬盘外想不到第二个了,所以说了是蛋疼了么……
PS: *nix里everything is file的哲学真是美啊。
ZWAV Player Demo(Windows)
测试环境: Win7 + VS2010
#include &stdio.h&
#include &Windows.h&
#pragma comment(lib, &winmm.lib&)
char buf[1 && 20];
int main(int argc, char* argv[]) {
WAVEFORMATEX
wfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nChannels = 2;
wfx.nSamplesPerSec = 44100L;
wfx.nAvgBytesPerSec = 176400L;
wfx.nBlockAlign = 4;
wfx.wBitsPerSample = 16;
wfx.cbSize = 0;
wait = CreateEvent(NULL, 0, 0, NULL);
waveOutOpen(&hwo, WAVE_MAPPER, &wfx, (DWORD_PTR)wait, 0L, CALLBACK_EVENT);
thbgm = fopen(argv[1], &rb&);
fread(buf, sizeof(char), 4, thbgm);
fputs(buf, stderr);
while (cnt = fread(buf, sizeof(char), sizeof(buf), thbgm)) {
wh.lpData =
wh.dwBufferLength =
wh.dwFlags = 0L;
wh.dwLoops = 1L;
waveOutPrepareHeader(hwo, &wh, sizeof(WAVEHDR));
waveOutWrite(hwo, &wh, sizeof(WAVEHDR));
WaitForSingleObject(wait, INFINITE);
fprintf(stderr, &=&);
fflush(stderr);
waveOutClose(hwo);
fclose(thbgm);
waveOutOpen(LPHWAVEOUT phwo, UINT_PTR uDeviceID, LPWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwCallbackInstance, DWORD fdwOpen)
waveOutOpen用于打开用于播放的输出设备。
WAVEFORMATEX的参数说明如下:
wFormatTag
WAVE_FORMAT_PCM
wave的格式是pcm格式
声道,这里是立体声,即2
nSamplesPerSec
采样率可选的有8.0k, 11.025k, 22.05k和44.1k,这里是44100
nAvgBytesPerSec
nAvgBytesPerSec = nSamplesPerSec * nBlockAlign
nBlockAlign
nBlockAlign = nChannels * wBitsPerSample
wBitsPerSample
采样位数可选的有8和16,这里是16,也就是两个byte
对于pcm格式,这个参数不需要
waveOutPrepareHeader(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)
waveOutPrepareHeader用于准备waveOutWrite所需的WAVEHDR。调用前需要设置好WAVEHDR的lpData, dwBufferLength, 和dwFlags。
waveOutWrite(HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)
waveOutWrite将根据WAVEHDR的信息把数据发到输出设备。waveOutWrite是立即放回的,而播放在后台进行,所以这里需要WaitForSingleObject。不过这样两次waveOutWrite中间将出现明显的停顿,可以通过双缓冲解决。
waveOutClose(HWAVEOUT hwo)
ZWAV Player Demo(Linux)
测试环境: ubuntu8.10 amd64
#include &stdio.h&
#include &stdlib.h&
#include &unistd.h&
#include &fcntl.h&
#include &sys/ioctl.h&
#include &linux/soundcard.h&
#define BUFSIZE (1024 * 1024)
char buf[BUFSIZE];
int main(int argc, char* argv[]) {
int ioctl_
fd = open(&/dev/null&, O_WRONLY);
ioctl_val = AFMT_S16_LE;
ioctl(fd, SNDCTL_DSP_SETFMT, &ioctl_val);
ioctl_val = 1;
ioctl(fd, SNDCTL_DSP_STEREO, &ioctl_val);
ioctl_val = 44100;
ioctl(fd, SNDCTL_DSP_SPEED, &ioctl_val);
thbgm = fopen(argv[1], &rb&);
fread(buf, sizeof(char), 4, thbgm);
fputs(buf, stderr);
while (cnt = fread(buf, sizeof(char), BUFSIZE, thbgm)) {
for (off = 0; off & off += write(fd, buf + off, cnt - off)) {
fprintf(stderr, &=&);
fflush(stderr);
close(fd);
fclose(thbgm);
open(const char *pathname, int flags)
以O_WRONLY方式打开/dev/dsp。
ioctl(int d, int request, &#8230;)
ioctl用于实现对设备的控制,通过ioctl可以对/dev/dsp设置音频的参数。这里需要设置三个参数就够了。
SNDCTL_DSP_SETFMT
AFMT_S16_LE
数据格式为signed int16 little endian
SNDCTL_DSP_STEREO
立体声(stereo)
SNDCTL_DSP_SPEED
采样率为44.1kHz
SNDCTL_DSP_SETFMT有AFMT_U8, AFMT_S8, AFMT_S16_LE, AFMT_S16_BE, AFMT_U16_LE, AFMT_U16_BE等多种参数可选。
write(int fd, const void *buf, size_t count)
写文件,注意未必能一次全部写入,返回写入的字节数。
close(int fd)
This entry was posted on Friday, January 29th, 2010
at 8:12 pm and is filed under . You can follow any responses to this entry through the
feed. You can , or
from your own site.
Leave a Reply

我要回帖

更多关于 pcm1704解码器 的文章

 

随机推荐