使用Python管理多平台视频流的最佳方法是什么?

时间:2011-08-23 13:18:49

标签: python qt video gstreamer phonon

我脑子里有这个问题超过一年了。我猜你们可能有答案。

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

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

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

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

您的经验是什么,您会用它做什么?

2 个答案:

答案 0 :(得分:2)

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

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

既然你要求获得一些图书馆的经验,我会说:gstreamer在linux上为我工作但是在Windows上设置并且对我来说不起作用是一件非常痛苦的事。这是很久以前的事了,也许它现在工作得更好。 vlc.py是一个简单的库,用于测试和查看vlc是否适合您。它目前在64位Windows平台上不起作用;不知道为什么,但似乎很多人报告了类似的错误,所以这取决于你需要多少跨平台支持。

答案 1 :(得分:0)

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

  • 编解码器是专有的
  • 操作系统不支持通用编解码器
  • ffmpeg和类似项目的许可证要求您在以某种方式包含源代码时发布源代码
  • 现有的许多视频播放播放器都是手工重写,以处理每一帧,缓冲,流媒体,音频同步等。

所以你可以使用HTML,或者你可以通过以下编码库来解决跨平台问题:

  • Python mplayer
  • Python vlc
  • Python opencv
  • Python pyaudio
  • Python pyside / pyqt phonon或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