录音/制作/创作 吉他 扩声技术 视频技术 作品展示 生活 信息 更多... | 音频应用专卖店

请问用sound forge导入MP3文件,前面会加一帧空白

( 5 )
 
[收藏]

5
#1 13-8-20 18:02

请问用sound forge导入MP3文件,前面会加一帧空白

偶然发现,用sound forge导入MP3文件的时候,会在前面加一帧的空白,这样整个音频位置都会往后挪一帧了,如果是用nuendo导出的MP3,再导入,前面就不会有空白,同样的MP3只要用soundforge打开就会有空白,这个怎么破啊?谢谢各位~~

531
#2 13-8-21 10:35
SF没办法解决这问题,从技术角度来说他们是对的,MP3有一些头文件之类的会引起这样的读取问题。<div>只能说SF做得很二,因为这问题其实很容易解决<br><embed id="xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd" type="application/thunder_download_plugin" height="0" width="0"></div>

531
#3 13-8-21 10:37
<br><embed id="xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd" type="application/thunder_download_plugin" height="0" width="0">话说,你为何不用WAV呢?NUENDO导出WAV,然后SF读取并且剪辑后导出MP3.<div>本质上是一样的。SF读入MP3的时候也是先转换成WAV的</div>

93
#4 14-12-5 21:38
这样的问题,一年后也被我给撞上了~~~~找了一天的解决方案~~还是没结果,求助文<a href="http://www.audiobar.net/viewthread.php?tid=457095&amp;highlight=mp3">http://www.audiobar.net/viewthread.php?tid=457095&amp;highlight=mp3</a>&nbsp;<a href="http://www.audiobar.net/space.php?uid=101912" target="_blank" id="userinfo3947304" class=" hover" style="color: rgb(0, 0, 0);">digimonk</a><div>老师说的,我还是有点疑惑的地方,WAV格式的导入SF里边确实没问题,但最终SF输出的是MP3,这段MP3不知自身是否会在前边自动加一帧空白,我把SF导出的mp3导入到CUBASE 里发现前边还是有一帧空白,不知是否方法不对?琢磨一天发现任何两款软件相互的导入导出mp3就存在空白时间的问题,同一款的就不会,不知是不是每个软件对mp3的算不所造成,假若一款手游的音频引擎(<span style="background-color: rgb(255, 237, 196); font-family: 微软雅黑, 'MS Sans Serif', sans-serif; font-size: 13px;">SimpleAudioEngine)</span>只读mp3,不知他是否会在前边播放的时候加空白时间,造成延迟~~~~</div>

2700
#5 14-12-16 20:47
Google了一下,lame的编码,他们的解释是这样的.<div>http://lame.sourceforge.net/tech-FAQ.txt</div><div>================================</div><div><span style="line-height: normal; white-space: pre-wrap;">2.  Why does LAME add silence to the beginning each song?</span><pre style="line-height: normal; word-wrap: break-word; white-space: pre-wrap;">

This is because of several factors:


DECODER DELAY AT START OF FILE:

All *decoders* I have tested introduce a delay of 528 samples.  That
is, after decoding an mp3 file, the output will have 528 samples of
0's appended to the front.  This is because the standard
MDCT/filterbank routines used by the ISO have a 528 sample delay.  It
would be possible to write a MDCT/filterbank routine with a 0 sample
delay (see description of Takehiro's MDCT/filterbank routine used in
LAME encoding below) but I dont know that anyone has done this.
Furthermore, because of the overlapped nature of MDCT frames, the
first half of the first granule (1 granule=576 samples) doesn't have a
previous frame to overlap with, resulting in attenuation of the first
N samples.  The value of N depends on the window type.  For
"STOP_TYPE" and "SHORT_TYPE", N=96, while for
"START_TYPE" and "NORMAL_TYPE", N=288.  The first frame produced by
LAME 3.56 and up will always be of STOP_TYPE or SHORT_TYPE.



ENCODER DELAY AT START OF FILE:

ISO based encoders (BladeEnc, 8hz-mp3, etc) use a MDCT/filterbank
routine similar to the one used in decoding, and thus also introduce
their own 528 sample delay.  A .wav file encoded &amp; decoded will have a
1056 sample delay (1056 samples will be appended to the beginning).

(actually, the observed delay is 1057 samples.  For even more
technical discussions about this, see the mp3encoder mailing list
archive)


The FhG encoder (at highest quality) introduces a 1160 sample delay,
for a total encoding/decoding delay of 1688 samples.  I haven't tested
Xing.

Starting with LAME 3.55, we have a new MDCT/filterbank routine written
by Takehiro Tominaga with a 48 sample delay.  With even more rewriting,
this could be reduced to 0.  And there is no reason an inverse routine
could not be used in a decoder.  However, there are a few problems
with using such a short delay:
   

1.)  The 96 samples of the first frame are attenuated by the MDCT
     window.  If the encoder delay is greater than 96, this window will
     have no effect since the first 96 samples are all padding.  With a
     48 sample encoder delay, the first 48 samples will be improperly
     attenuated. (.001 seconds worth of data at 44.1kHz).  

2.)  Filterbank contamination problems.  This it rather technical, see
     below.

3.)  In LAME, psycho-acoustics for the first 576 granule are not correct.  
     This could be fixed, but at the expense of adding more buffering
     and code complexity.

If points 1. 2. or 3. do not bother you, you can decrease the
the encoder delay by setting ENCDELAY in encoder.h.  The default
right now is 576.  

More technical details on very short ENCDELAY:
Here is an example:


                    granule 1         granule 2  
                    576 samples       576 samples
                | 192 | 192 | 192 | 192 | 192 | 192 |
data:           &lt;    all zeros'   &gt;&lt; real  data     &gt;
short block   &lt;---------&gt;
                    &lt;---------&gt;
                           &lt;---------&gt;
end block                       &lt;----------------------&gt;

output:                           | 192 | 192 | 192 |


granule 2 is the first granule that is encoded.  granule 1 is
the fictitious previous granule that doesn't really exist, except
that the output of the decoder for granule 2 is going to be combined with
the data in the buffer which would have held the decoded output of
granule 1.  I will assume the decoder initializes this buffer with
zeros.  

Lets ignore quantization.  The lapped MDCT followed
by the IMDCT is lossless.  That means that the IMDCT output
from granule 2  when added to the IMDCT output from granule 1
is identical to the input.  

In our case, the decoder just sets the granule 1 IMDCT output to all
0's because it never actually computes this and is just initializing a
buffer.  But the output of granule 2 IMDCT is computed correctly.

output = granule_1_output + granule_2_output

granule_1_output:  encoder uses all 0's, which is incorrect since
                   the MDCT (if it was performed) would have seen
                   some of the data in granule 2.  
                  
granule_2_output:  correct

Therefor, the output will be correct *except* where it uses data from
granule 1, but this can effect at most the first 96 samples.

However, the polyphase filterbank is another story:

The data (with first 96 samples corrupt) is then sent to the
inverse polyphase filterbank.  I dont know much about how this
albatross works, but I think it has an effective window length of
512.  So the bad data in the first 96 samples can corrupt
samples up to 96+512.&nbsp;</pre><pre style="line-height: normal; word-wrap: break-word; white-space: pre-wrap;">============================</pre><pre style="line-height: normal; word-wrap: break-word; white-space: pre-wrap;">希望对您有帮助.
</pre></div><div><br></div>

13
#6 14-12-25 16:00

回复 281368169 在 #4 的 pid=4339687 的贴子

你是对的,游戏里可以用程序代码解决无缝循环
您需要登录后才可以回帖 登录 | 注册

本版积分规则

搜索