20 个解决方案
#1
文件格式没用过
#2
搜搜MP3文件格式,分析其具体的格式就可以得到
没做过,给你个思路
没做过,给你个思路
#3
http://sourceforge.net/projects/mp3bookhelper
sf有开源项目
不过我用delphi2006开不了
sf有开源项目
不过我用delphi2006开不了
#4
看看这个mp3文件结构,应该会有帮助
http://www.tomore.com/367/25618.html
http://www.tomore.com/367/25618.html
#5
上面说1帧是24ms,可能要增加帧数吧,呵呵,没有搞过~
#6
可以不增加帧数的,只是改掉MP3摘要信息就行了,但就是不知道摘要信息放在哪在
#7
好像是通过计算得到的,看看这个贴子,上面还有个VC的代码
http://www.hydrogenaudio.org/forums/lofiversion/index.php/t46563.html
http://www.hydrogenaudio.org/forums/lofiversion/index.php/t46563.html
#8
应该不会吧,但我感觉好像是有固定的信息格式一样
#9
有其他软件能够修改得吗?
#10
用google搜一下mp3的文件结果,然后修改
#11
找过了,没有找到相关的软件
#12
请好心人帮帮忙啊!
#13
在mp3的头信息下有一个TLEN项,里面是播放时间的ms值。
你把mp3按binary方式打开就可以看到。
好运。
你把mp3按binary方式打开就可以看到。
好运。
#14
分析结构,然后按偏移读数据就OK了吧,一般是都文件头信息好像都是这样做的
#15
关键就是结构里没有关于这一点的说明,而且MP3的头信息里,好像有的里面有ms值,但有的没有
#16
mark
#17
mp3的长度信息应该是计算出来的,不是写在文件头中的。
#18
我描述一下计算MP3播放时长的算法吧:
首先,判断该MP3是CBR还是VBR,依据是在第一帧里面是否找到"Xing"或"VBRI"字样,如果没找到就是CBR,如果找到就是VBR.
(1)CBR。 CBR的MP3既没有FILE HEADER,也没有VBR HEADER,所以无法简单地知道播放时长、总帧数等信息,那么我的计算方法是,先读出第一帧的bitrate,然后播放duration = (filesize - id3_size) / (bitrate/8) 也就是主要靠byterate来算,MP3文件长度里需要扣掉ID3 TAG的长度,会是在文件头或文件尾
(2)VBR。 VBR的话会有VBR HEADER,不论是Xing还是VBRI,一般都可以得到TotalFrameNumber数据,再加上帧头解出来的SamplesPerFrame,SampleRate, 那么Duration = TotalFrameNumber * SamplesPerFrame / SampleRate
所以,回过来回答楼主的问题,如果是CBR的MP3文件,你把最后一帧(歌曲末尾一般是静音)一直复制,直至文件长度套入公式可以达到你要求的时间为止。那么一首6:30的歌曲播完后就会一直静音到30分钟。显示上也是30分钟。如果是VBR的MP3文件,那么我猜测直接修改Xing header或VBRI header中的TotalFrameNum区域就可以改变播放时长了,但播放到文件末尾处可能会有错。
关于frame header和VBRI,XING header,请参考http://www.codeproject.com/audio/MPEGAudioInfo.asp
首先,判断该MP3是CBR还是VBR,依据是在第一帧里面是否找到"Xing"或"VBRI"字样,如果没找到就是CBR,如果找到就是VBR.
(1)CBR。 CBR的MP3既没有FILE HEADER,也没有VBR HEADER,所以无法简单地知道播放时长、总帧数等信息,那么我的计算方法是,先读出第一帧的bitrate,然后播放duration = (filesize - id3_size) / (bitrate/8) 也就是主要靠byterate来算,MP3文件长度里需要扣掉ID3 TAG的长度,会是在文件头或文件尾
(2)VBR。 VBR的话会有VBR HEADER,不论是Xing还是VBRI,一般都可以得到TotalFrameNumber数据,再加上帧头解出来的SamplesPerFrame,SampleRate, 那么Duration = TotalFrameNumber * SamplesPerFrame / SampleRate
所以,回过来回答楼主的问题,如果是CBR的MP3文件,你把最后一帧(歌曲末尾一般是静音)一直复制,直至文件长度套入公式可以达到你要求的时间为止。那么一首6:30的歌曲播完后就会一直静音到30分钟。显示上也是30分钟。如果是VBR的MP3文件,那么我猜测直接修改Xing header或VBRI header中的TotalFrameNum区域就可以改变播放时长了,但播放到文件末尾处可能会有错。
关于frame header和VBRI,XING header,请参考http://www.codeproject.com/audio/MPEGAudioInfo.asp
#19
我一气做过
很简单的
很简单的
#20
以前
#21
#1
文件格式没用过
#2
搜搜MP3文件格式,分析其具体的格式就可以得到
没做过,给你个思路
没做过,给你个思路
#3
http://sourceforge.net/projects/mp3bookhelper
sf有开源项目
不过我用delphi2006开不了
sf有开源项目
不过我用delphi2006开不了
#4
看看这个mp3文件结构,应该会有帮助
http://www.tomore.com/367/25618.html
http://www.tomore.com/367/25618.html
#5
上面说1帧是24ms,可能要增加帧数吧,呵呵,没有搞过~
#6
可以不增加帧数的,只是改掉MP3摘要信息就行了,但就是不知道摘要信息放在哪在
#7
好像是通过计算得到的,看看这个贴子,上面还有个VC的代码
http://www.hydrogenaudio.org/forums/lofiversion/index.php/t46563.html
http://www.hydrogenaudio.org/forums/lofiversion/index.php/t46563.html
#8
应该不会吧,但我感觉好像是有固定的信息格式一样
#9
有其他软件能够修改得吗?
#10
用google搜一下mp3的文件结果,然后修改
#11
找过了,没有找到相关的软件
#12
请好心人帮帮忙啊!
#13
在mp3的头信息下有一个TLEN项,里面是播放时间的ms值。
你把mp3按binary方式打开就可以看到。
好运。
你把mp3按binary方式打开就可以看到。
好运。
#14
分析结构,然后按偏移读数据就OK了吧,一般是都文件头信息好像都是这样做的
#15
关键就是结构里没有关于这一点的说明,而且MP3的头信息里,好像有的里面有ms值,但有的没有
#16
mark
#17
mp3的长度信息应该是计算出来的,不是写在文件头中的。
#18
我描述一下计算MP3播放时长的算法吧:
首先,判断该MP3是CBR还是VBR,依据是在第一帧里面是否找到"Xing"或"VBRI"字样,如果没找到就是CBR,如果找到就是VBR.
(1)CBR。 CBR的MP3既没有FILE HEADER,也没有VBR HEADER,所以无法简单地知道播放时长、总帧数等信息,那么我的计算方法是,先读出第一帧的bitrate,然后播放duration = (filesize - id3_size) / (bitrate/8) 也就是主要靠byterate来算,MP3文件长度里需要扣掉ID3 TAG的长度,会是在文件头或文件尾
(2)VBR。 VBR的话会有VBR HEADER,不论是Xing还是VBRI,一般都可以得到TotalFrameNumber数据,再加上帧头解出来的SamplesPerFrame,SampleRate, 那么Duration = TotalFrameNumber * SamplesPerFrame / SampleRate
所以,回过来回答楼主的问题,如果是CBR的MP3文件,你把最后一帧(歌曲末尾一般是静音)一直复制,直至文件长度套入公式可以达到你要求的时间为止。那么一首6:30的歌曲播完后就会一直静音到30分钟。显示上也是30分钟。如果是VBR的MP3文件,那么我猜测直接修改Xing header或VBRI header中的TotalFrameNum区域就可以改变播放时长了,但播放到文件末尾处可能会有错。
关于frame header和VBRI,XING header,请参考http://www.codeproject.com/audio/MPEGAudioInfo.asp
首先,判断该MP3是CBR还是VBR,依据是在第一帧里面是否找到"Xing"或"VBRI"字样,如果没找到就是CBR,如果找到就是VBR.
(1)CBR。 CBR的MP3既没有FILE HEADER,也没有VBR HEADER,所以无法简单地知道播放时长、总帧数等信息,那么我的计算方法是,先读出第一帧的bitrate,然后播放duration = (filesize - id3_size) / (bitrate/8) 也就是主要靠byterate来算,MP3文件长度里需要扣掉ID3 TAG的长度,会是在文件头或文件尾
(2)VBR。 VBR的话会有VBR HEADER,不论是Xing还是VBRI,一般都可以得到TotalFrameNumber数据,再加上帧头解出来的SamplesPerFrame,SampleRate, 那么Duration = TotalFrameNumber * SamplesPerFrame / SampleRate
所以,回过来回答楼主的问题,如果是CBR的MP3文件,你把最后一帧(歌曲末尾一般是静音)一直复制,直至文件长度套入公式可以达到你要求的时间为止。那么一首6:30的歌曲播完后就会一直静音到30分钟。显示上也是30分钟。如果是VBR的MP3文件,那么我猜测直接修改Xing header或VBRI header中的TotalFrameNum区域就可以改变播放时长了,但播放到文件末尾处可能会有错。
关于frame header和VBRI,XING header,请参考http://www.codeproject.com/audio/MPEGAudioInfo.asp
#19
我一气做过
很简单的
很简单的
#20
以前