Chrome Gapless WebM + FFMPEG

时间:2015-07-01 21:56:37

标签: javascript google-chrome audio ffmpeg mse

我尝试无缝播放使用ffmpeg生成的片段:

我使用ffmpeg来编码来自一个源的3个文件,其中480000个采样正好是480000,即5秒。

ffmpeg -i tone.wav -af atrim=start_sample=24000*0:end_sample=240000*1 -c:a opus 0.webm
ffmpeg -i tone.wav -af atrim=start_sample=24000*1:end_sample=240000*2 -c:a opus 1.webm
ffmpeg -i tone.wav -af atrim=start_sample=24000*2:end_sample=240000*3 -c:a opus 2.webm

当从文件中查看元数据(使用ffprobeffmpeg -loglevel debug)时,我得到以下内容,这似乎是我不一致的值:

Duration: 5.01,
Start 0.007
discard 648/900 samples
240312 samples decoded

如果我有几个这样的文件,我怎么能无缝地播放它们呢? 即在我尝试过的浏览器中:

sourceBuffer.timestampOffset = 5 * n - 648/48000; 
sourceBuffer.appendWindowStart = 5 * n; 
sourceBuffer.appendWindowEnd = 5 * (n+1);
sourceBuffer.appendBuffer(new Uint8Array(buffer[n]));

然而,存在可听见的差距。

我实际应该丢弃多少个样本? 0.007 * 48000,648或240312 - 240000?

Here is a html page which can be opened in Chrome to test

您需要一个简单的http服务器来运行它:

 << ls
 >> index.html 0.webm 1.webm 2.webm
 << npm install -g http-server
 << http-server --cors

0 个答案:

没有答案