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



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

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

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

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

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

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

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

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

既然你问我使用几个库的经验,我想说:gstreamer在linux上对我有用,但在windows上安装起来非常痛苦,不适合我。这是相当长的一段时间以前,也许它现在工作得更好。py是一个简单的库,用于测试VLC是否适合您。目前它还不能在64位windows平台上运行;不确定原因,但似乎许多人都报告了类似的错误,所以这取决于您需要多少跨平台支持。

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

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

所以你可以使用HTML,或者你可以忍受以下编码库的跨平台问题:

    Python媒体播放器
  • 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

相关内容

  • 没有找到相关文章

最新更新