找回密码
 立即注册
查看: 1890|回复: 7

请教以下,音乐播放例程中,这2句这样写,有点不懂。

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-04-25 07:43:18

8

主题

25

回帖

210

积分

中级会员

积分
210
发表于 2025-1-20 19:45:51 | 显示全部楼层 |阅读模式
        play_lenth = ((u16)MusicPoint[41] << 8)        + MusicPoint[40];   //       怎么算出来整个数组数量。为什么这样写。
        MusicPoint += 44;   //这句怎么理解?


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-04 22:11:37
已绑定手机

36

主题

287

回帖

824

积分

高级会员

积分
824
发表于 2025-1-21 03:46:51 来自手机 | 显示全部楼层
可以参考WAV文件的结构解析,44是从那里面来的来的。
Load Music函数里有这么两句话 :
MusicPoint=Music;
MusicPoint+=44;
这两句,放在一起看MusicPoint就可以知道MusicPoint是Music[44],正好就是第一个有效PCM数据。WAV数据块就是从Music[44]开始的。后面中断里的字节偏移,也就是基于MusicPoint的
WAV里对这个44要高度敏感
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-04 22:11:37
已绑定手机

36

主题

287

回帖

824

积分

高级会员

积分
824
发表于 2025-1-21 04:18:57 来自手机 | 显示全部楼层
至于那个playlenth的计算同理。
Music[40]~Music[43]四个字节小端序表示数据块大小。
因为Music[42]和Music[43]都是00h,所以就只算了40与41
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-04 22:11:37
已绑定手机

36

主题

287

回帖

824

积分

高级会员

积分
824
发表于 2025-1-21 04:22:44 来自手机 | 显示全部楼层
Music数组里存的是完整的wav文件数据。
就是能直接播放的wav歌曲,把二进制数据取模了而已。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-04-25 07:43:18

8

主题

25

回帖

210

积分

中级会员

积分
210
发表于 2025-1-23 11:06:01 | 显示全部楼层
wnag*** 发表于 2025-1-20 20:21
play_lenth = ((u16)MusicPoint[41]

40我懂,一行字节数是40,41是怎么算出来的,这有点不理解。
另外,为什么不直接算出来字节数,给play_lenth赋值?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2025-1-23 11:32:42 | 显示全部楼层
截图202501231131504183.jpg 应该和这个有关
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-04-25 07:43:18

8

主题

25

回帖

210

积分

中级会员

积分
210
发表于 2025-1-23 15:24:23 | 显示全部楼层
so*** 发表于 2025-1-23 11:32
应该和这个有关

明白了,这是转换后在hex代码中,有这个数量数据,我用WAVTOC软件转换出来的数据,就没有这个数量数据。不同软件转换不一样。谢谢您!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2025-2-3 15:04:56 | 显示全部楼层
cpu*** 发表于 2025-1-23 15:24
明白了,这是转换后在hex代码中,有这个数量数据,我用WAVTOC软件转换出来的数据,就没有这个数量数据。 ...

如果是某些带创作人信息,专辑信息,歌曲名称等拓展标签头的wav,这样直接加44是读不准的,应该以data标签及其后面四字节指示的大小确定音频数据的开始和结束(文件末尾可能有歌词)
下面的图片就是一个例子
屏幕截图 2025-02-03 150302.png
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:35 , Processed in 0.124643 second(s), 97 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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