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

问题描述:

我在这个问题上有一年多的时间。我想你们可能会有答案。使用Python管理多平台视频流的最佳方式是什么?

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

而且,我需要这条巨蟒多应用平台(OSX,GNU,Windows)中

我可以有很多的解决方案:

  • 将相机连接到流和读取与流python应用程序。 (RTP + VLC可以诀窍)
  • 使用声子读取相机
  • 创建一个抽象类来定义不同读取器,并在OS的函数中使用Quicktime,Win32或GStreamer。

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

+0

看看http://pymedia.org/ –

我也定期研究过这个问题,看起来底层任务的复杂性太高了,无法为您的主题问题提供一个简单的快捷方式抽象库。不过,我会建议使用pyopencv来完成特定的任务。它有一个网络摄像头输入/捕获类,它跨平台工作,并有一个合理的用户基础,在Python中,张贴示例。最新的是2.3.1,并且是最近的。你可以得到它的Windows版本,为您编制,在令人难以置信的有用的网站(不是我的,只是说):

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

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

+1

好的我接缝,使用OpenCV是一个很好的决定,即使在第二次流操作。 http://linuxconfig.org/introduction-to-computer-vision-with-opencv-on-linux – Natim

+0

伟大的链接,感谢分享它 – Profane

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

  • 编解码器是专有
  • 操作系统的不支持常见的编解码器
  • ffmpeg的和类似的项目都需要您的许可释放你的源代码,如果包括它们以某种方式
  • 许多存在的视频播放播放器都是手动重写以处理每一帧,缓冲,流式传输,音频同步等。

所以,你可以用HTML去,或者您也可以通过跨平台的问题有以下编码libaries苦:

  • Python中的mplayer
  • Python的VLC
  • Python的OpenCV的
  • Python pyaudio
  • Python pyside/pyqt phonon或qtmultimedia

一旦你得到它的工作一个开发机器上,期望它打破当它涉及到安装在最终用户的机器上(通过分发:pyinstaller/appdmg /公寓/巧克力味/ Inno Setup的)

在OSX, brew仍然有很多问题,但macports运行得更好(我仍然不得不做很多修补)

Linux是迄今为止最简单的。

Windows处于两者之间的,以尽可能难度

我很渴望听到的iOS /安卓/ Windows的RT /点燃如何

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