【问题标题】:Detect if mp3 'file' is a mp3 stream in flash (Action Script 3, AS3)检测 mp3 'file' 是否是 flash 中的 mp3 流(动作脚本 3,AS3)
【发布时间】:2012-01-30 00:29:17
【问题描述】:

我已经制作了一个播放 mp3 的播放器,并且做得很好(在 flash AS3 中构建一个安全稳定的播放器并不是一件容易的事)。它还可以播放多个广播电台的广播 mp3 流。 mp3 流的“问题”是我不知道如何检测它是 flash 中的 mp3 流(在互联网和 adobe 站点上没有找到文档)。我也不知道缓冲这些流的最佳方法是什么。

无论如何,我已经做了一些复杂的检测方法,通过检查getBytesLoaded()sound.length 在(很长)一段时间内的变化来确定它是一个流。这需要“告诉”播放器在流/文件完成时不要等待,或者在文件损坏时跳过文件。这种检测方法的问题是连接速度慢或连接速度快(都有副作用)。

例如,当它是一个慢速连接时,检测方法会失败,因为它认为文件是一个流,当它是一个快速连接(或 Chrome - 比 Firefox 更快地预加载流)时,它认为文件是损坏并跳过播放并开始下一个文件。

这一切都不容易解释,但主要问题是:我能否在流的开头(打开它之后)看到/检测到它是一个 mp3 流,这样我就可以跳过我愚蠢的“猜测是-它是文件还是流测试?

对不起,我今天的英语不好,但我必须解决这个问题。有没有人知道一个稳定的解决方案?我已经尝试过标头查找,但不能依赖它(发现太多不同的服务器标头)。

【问题讨论】:

  • 为什么和什么 - 科迪·格雷编辑了我的文字

标签: flash stream mp3 detection


【解决方案1】:

抱歉,没有办法这样做,因为 MP3 文件和 MP3 流之间没有区别 - 它们是完全相同的数据。但是,如果您碰巧有一个文件描述符,或另一个程序向您的播放器发出特定响应以确认要发送的数据的大小是已知的,那么您可以将该响应视为一个文件。

【讨论】:

  • 好的,谢谢。 Flash AS3 在某些方面很棒,但也很糟糕,您必须编写分配代码才能完成简单的任务。无论如何,我通过给流一个具有 .astrm 扩展名(带有 mod 重写)的文件名并重定向到原始流来解决它。通过检查文件扩展名,播放器知道/假设它是一个流。不是一个理想的解决方案,但它现在可以工作。有人对此有更好的解决方案吗?
猜你喜欢
  • 2010-09-08
  • 2010-10-29
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多