【问题标题】:Multimedia framework for video playback in a GUI application?在 GUI 应用程序中播放视频的多媒体框架?
【发布时间】:2009-05-28 18:32:11
【问题描述】:

前段时间我开始了一个项目,我需要做以下事情:

  • 播放视频:
    • 任何常见格式(avi、mpeg、xvid 等)
    • 能够以编程方式暂停和重新定位流。
    • 能够设置播放速度(非强制性,但可取)
  • 让我在播放组件上绘制自定义图形(与视频保持同步)。
  • 允许以光栅图像的形式访问当前帧(这不是强制性的,但可取)。

而且易于使用(例如,面向视觉组件,我不想过多处理多媒体流内部)。

因为我已经有一些用 Java 编写的相关代码,所以我尝试了我找到的所有 Java 库(JMF、FMJ、JVLC、Jffmpeg、gstreamer-java),但没有人满足我所有的硬性要求(例如,那些这让我在框架上绘图不能暂停或倒带,那些功能齐全的已经过时了,等等),所以我搁置了这个项目。

现在我正准备卷土重来,我不介意用其他语言重写代码(等于或高于 Java 的级别,但请不要使用 C 或 C++,我已经变得太懒了: -p) 具有良好的 GUI 框架或富客户端平台也是免费提供的。多平台是一个好点,因为我喜欢在 Linux 中进行开发和测试,但我想接触更多的受众,所以必须能够以 Windows 为目标。

那么你会推荐我什么语言和框架呢?

【问题讨论】:

    标签: user-interface video playback multimedia


    【解决方案1】:

    Qt's Phonon。 Qt 也可用于 Java,如 Qt Jambi

    【讨论】:

      【解决方案2】:

      如果您不完全害怕只使用 Windows,WPF 应该响应您的几乎所有(如果不是全部)需求。

      您可以将它与 C# 和所有 .net 语言一起使用。

      【讨论】:

        【解决方案3】:

        我会使用 OpenCV 库。 您需要的所有功能:格式支持、任何帧获取、帧修改等。 看看这个installation guide 和一些示例。

        【讨论】:

          【解决方案4】:

          您可能会考虑的另一个框架是 mlt 框架:http://mltframework.org/

          它的设计很棒,用 C 语言编写,并使用 SWIG 进行语言绑定(java、perl、php、python、ruby、tcl)。我知道人们已经在大多数主要平台上运行它。

          要了解它的功能,请查看令人敬畏的 NLE kdenlive,它是最活跃的用户。

          【讨论】:

            【解决方案5】:

            你说你试过 gstreamer-java。也许它的绑定不是那么好?我很确定 Gstreamer 可以满足您的所有要求。也许您应该改为查看 Python 绑定。 Python 是 Gstreamer 开发人员的一等公民,因此绑定应该始终是完整且最新的。

            Python 还有多个可用的跨平台 GUI 框架。我个人喜欢使用 libglade 的 GTK,因为使用 glade 构建 GUI 非常容易,而且它是 XML 文件(GTK 也可以在 Windows 上运行,所以没有问题)。如果您更喜欢其他东西,那么还有 Qt、wxWidgets 和 Tk,它们都可以在 Linux 和 Windows 上运行(我假设 MacOSX 也是如此)。

            【讨论】:

            • 我认为 gstreamer-java 不允许重新定位流(或者可能将其暂停并暂停)...我这里没有来源,但我会检查一下周末提供有关每个框架失败的更多细节。
            • 我在 python 和 gstreamer 中编写了一个点唱机守护程序,并实现了暂停。所以至少用 Python API 是可以做到的!
            【解决方案6】:

            嵌入式网络浏览器可以满足您提出的要求:

            • 视频播放(使用 mplayer 或 vlc 插件)
            • 控制播放的高级语言 (javascript)
            • 覆盖/GUI(HTML + CSS + PNG/SVG)

            要光栅化当前帧会更难,您可能需要一些自定义 ffmpeg 将帧转储到磁盘,然后将其作为

            读回

            【讨论】:

              猜你喜欢
              • 2012-09-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-07-01
              • 1970-01-01
              • 1970-01-01
              • 2014-09-27
              相关资源
              最近更新 更多