【问题标题】:What is the best way to manage multiplatform video stream using Python?使用 Python 管理多平台视频流的最佳方法是什么?
【发布时间】:2011-08-23 13:18:49
【问题描述】:

这个问题在我的脑海里已经有一年多了。我想你们可能已经有了答案。

在某些 Python GUI 应用程序中,我需要显示视频流。 我需要记录此流的某些部分以便稍后重读。

此外,我需要让这个 python 应用程序多平台(OSX、GNU、Windows)

我对许多解决方案持开放态度:

  • 将相机连接到流并使用 python 应用程序读取流。 (RTP + VLC 可以解决问题)
  • 使用 Phonon 读取相机
  • 创建一个抽象类来定义不同的阅读器,并在操作系统的功能中使用 Quicktime、Win32 或 GS​​treamer。

你的经验是什么,你会用什么来做到这一点?

【问题讨论】:

标签: python qt video gstreamer phonon


【解决方案1】:

我也定期对此进行了研究,似乎底层任务的复杂性太高,无法为您的主题问题提供一个简单的快捷抽象库。但是,我建议将 pyopencv 用于您阐明的特定任务。它有一个用于网络摄像头输入/捕获的类,可以跨平台工作,并且在 python 中具有合理的用户基础,发布示例。最新的是 2.3.1 并且是最近的。你可以在这个非常有用的网站(不是我的,只是说)上获得为你编译的 Windows 版本:

http://www.lfd.uci.edu/~gohlke/pythonlibs/

由于您要求使用一些库的经验,我想说:gstreamer 在 linux 上为我工作,但在 Windows 上设置是一个巨大的痛苦,对我不起作用。这是很久以前的事了,现在可能效果更好。 vlc.py 是一个简单的库,用于测试并查看 vlc 是否适合您。它目前不适用于 64 位 Windows 平台;不知道为什么,但似乎很多人报告了类似的错误,所以这取决于您需要多少跨平台支持。

【讨论】:

  • 好吧,我觉得使用 OpenCV 是一个不错的决定,即使是第二次进行流操作也是如此。 linuxconfig.org/…
【解决方案2】:

不幸的是,这并不容易。我已经编写了大部分在 3 个主要桌面操作系统上进行视频录制/播放的程序。除了 HTML 嵌入之外,跨平台的“开箱即用”方式的视频播放/录制状态仍未解决。这与以下事实有很大关系:

  • 编解码器是专有的
  • 操作系统不支持常见的编解码器
  • ffmpeg 和类似项目具有许可证,如果您以某些方式包含它们,则要求您发布源代码
  • 现有的许多视频播放播放器都是手动重写的,以处理每一帧、缓冲、流式传输、音频同步等。

因此您可以使用 HTML,或者您可能会遇到以下编码库的跨平台问题:

  • Python 播放器
  • Python vlc
  • Python opencv
  • Python 音频
  • Python pyside/pyqt 声子或 qtmultimedia

一旦你让它在一台开发机器上运行,预计它在最终用户机器上安装时会崩溃(通过:pyinstaller / appdmg / apt / Chocolatey / Inno Setup 分发)

在 OSX 上,brew 仍然有很多问题,但是 macports 效果更好(我仍然需要做很多补丁)

Linux 是迄今为止最简单的。

Windows 的难度介于两者之间

我很想知道 iOS / Android / Windows RT / Kindle 是怎样的

这个问题并不是唯一的,因为即使是 Netflix 也还没有一个跨平台的视频应用程序:https://www.quora.com/Is-Netflix-building-an-app-for-the-Mac-App-Store?share=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多