【问题标题】:AS3 standalone video player does not play video filesAS3 独立视频播放器不播放视频文件
【发布时间】:2025-12-03 06:35:01
【问题描述】:

我陷入了一个问题,找不到解决方案。我的最后期限了。

我使用 Mac,并在 Flash CS6、AS3 (Flash Player 11.4) 中制作了交互式教育 DVD。我正在使用自动运行方法播放名为 (Main.exe) 的全屏 swf 文件。在这个项目中,我使用 XML 在外部播放不同的 swf 文件、mp3 音频和 mp4 视频文件。

  1. 现在,当我在 Flash CS6 中测试我的电影时,一切运行顺利。问题是,一旦我尝试播放独立版本的 swf 文件(Main.swf 或 Main.exe),mp4 视频就不会加载。我不确定问题出在哪里。如果有人能指导我解决这个奇怪的问题,将不胜感激。

  2. 我注意到即使在 Flash CS6 中进行测试时,某些 Mp4 视频文件也无法加载。其中一些加载,而另一些则不加载。虽然我通过 XML 正确获取路径和名称。在这种情况下发生了什么?文件损坏了吗??但是如果我使用一些媒体播放器,所有的视频文件都会播放。

P.S.:对于自动运行或 (.exe),我当然是在 Windows 平台上对其进行测试。 DVD 旨在在 Windows 平台上播放。

【问题讨论】:

  • 您应该使用 AIR 来部署桌面应用程序,而不是尝试使用平台 swf 播放器。它将为您提供对系统的更多访问权限,并具有从 Internet(或本地文件系统)加载文件的适当安全上下文。关于某些视频无法正常工作,正如您所说,损坏的视频编码可能是一个问题。
  • @shaunhusain 你能分享一些 AIR 开发的好资源吗?我过去一直使用独立(.exe)方法来取得成功。这是我第一次处理视频内容。
  • 抱歉,Majid 我不知道有任何关于 Flash CS6 和 AIR 的好的教程,虽然dummies.com/how-to/content/… 有一个简短的教程,但我在谷歌搜索时发现的第一个网站不要把傻瓜的事当成个人。我一直将 AIR 与 Flex/FlashBuilder 一起使用,而不是“常规”Flash IDE。

标签: actionscript-3 video mp4 flash-cs6 flvplayback


【解决方案1】:

首先,OS X 不会打开 .exe 文件,因为它们是 Windows 应用程序(Mac 使用 .app)。但是,.swf 确实适用于两个平台(如您所述),因为 Flash Player 在两个平台上都可用。

其次,仅仅因为视频可以在视频播放器中运行(例如VLC)并不意味着它们应该在 Flash 中运行。即使视频之间的扩展名相同(在本例中为.mp4),但这并不意味着它们都应该平等地播放。这是因为.mp4 只不过是encoded with a codec 视频的容器。如果 Flash Player 中没有编解码器,它将无法运行。

要清理您的内容,请考虑将您的视频重新编码为您可以使用的相同标准格式。如果你有 Flash,它带有Adobe Media Encoder,这应该可以完成工作。或者,尝试使用开源编码器,例如 Handbrake

对我来说,另一个问题听起来像是一个路径问题。您需要提供代码示例来演示您在做什么。

【讨论】:

  • 我在 Mac 上测试(独立 .swf 和 .app),在 Windows 平台上测试(独立 .swf 和 .exe)。一定会尝试通过 Adob​​e Media Encoder 进行编码。
  • 代码和文件结构相当复杂,不知道在这里发布什么。我有四个不同类别的课程作为按钮,每个类别都有其媒体内容。 - 我在根目录下使用主媒体播放器和 3 个媒体播放器(音频、视频和 swf 播放器) swf,所有媒体内容(如(swf、音频和视频))都位于各自类别文件夹下的各自文件夹中。 - 我已将所有类别文件夹合并到一个名为 media 的文件夹下,该文件夹位于根目录下。 - 我还在根目录上使用 XML 文件夹来保存媒体内容的所有路径。
  • 唯一的问题是 - 为什么 Flash 在编译和独立播放时表现不同?我显然错过了一些非常基本的东西,但不确定是什么。谢谢你的理解!!大家!!
  • 正如 Facundo 指出的那样,路径可以根据您的 swf 从何处加载而改变。如果您有一个加载子 swf 的父 SWF,则目录路径将相对于父 swf,而不是子 swf。要真正调试问题,您需要错误报告。您希望它加载的路径是什么,它说它无法加载的路径是什么?通常,您将使用相对路径(即“../videos/movie.mp4”)。如果您使用 MDM Zinc 之类的东西,则路径是绝对路径(即“file://C/project/videos/movie.mp4”),然后您可以使用像 mdm.Application.path 这样的指针。
【解决方案2】:

如果上述答案没有帮助,请检查此问题,也许它可以为您提供线索: AS3 - playing video within a loaded swf

【讨论】:

  • 我确信这不是路径问题,因为我在从 Flash 编译 swf 时能够成功加载大部分视频内容。只有当我播放 (.swf) 文件时才会加载独立视频。