【发布时间】:2013-05-12 10:41:38
【问题描述】:
在我有趣的项目中,我正在从 youtube 下载视频文件,并写入本地磁盘上的文件。同时我也想玩。目的是将文件缓存在本地磁盘上,这样当我想再看视频时,应用程序可以在本地播放,从而节省带宽。
我正在使用Python 3.3.1、PyQt4/Phonon 和LibVLC。到目前为止,我能够做到以下几点:
给定一个 youtube watch url,我可以下载视频文件并然后使用 PyQt4/Phonon 和 LibVLC 独立播放。它不是流媒体。
由于 LibVLC 支持流媒体,我可以通过流媒体播放给定的 url。
第二个非常接近我想要做的,但是由于它没有将文件保存在磁盘上,所以下次我无法在本地播放相同的视频。
我正在寻找一些关于如何从这里开始的指南。特别是,如何从仍在写入的不完整文件中播放视频。
我完全可以使用任何 API(可以完成这项工作),只要它是:
- Python 3.3.1(最好)
- C
- C++。
如果我当前的方法不正确或使问题比实际更困难,我也在寻找替代方法。
【问题讨论】:
-
你可能想看看 ffmpeg。它将允许您显示和写入文件。但我不确定如何在 PyOt4 上渲染它。有一个著名的教程dranger.com/ffmpeg 可以开始使用。输入文件可以改为url,而不是从文件中读取。
-
ffmpeg 是一个相当宽泛的术语,更具体地说,您需要查看libav 及其libavcodec(用于解码解复用流)和libavformat(用于解复用流)组件. libav 的 download page、win64 nightlies download page、documentation 和 examples。
-
我已经设法用 GStreamer 做了类似的事情。它有一个tee 元素,可用于将管道拆分为多个输出通道。
-
@StackedCrooked:你能详细说明一下吗?
-
@Nawaz 很抱歉,但解释起来并不简单。您应该阅读 GStreamer 手册的前 10 章以获得基本概念。 (别担心,这只需要 30 分钟左右。)
标签: c++ python c video-streaming libvlc