4

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

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

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

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

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

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

4

2 回答 2

2

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

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

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

于 2011-08-23T14:54:50.120 回答
0

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

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

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

  • Python 播放器
  • 蟒蛇vlc
  • Python opencv
  • Python pyaudio
  • 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?分享=1

于 2016-03-16T20:06:41.483 回答