问题标签 [python-vlc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1574 浏览

python - 使用 python-vlc 同时播放多个音频/视频文件

我正在开发一个 tkinter 应用程序,其中视频和声音根据某些事件排队和播放。

为此,我使用 python-vlc,但我还没有找到同时播放多个声音的方法(除了多线程)。视频还需要它们自己的窗口才能正常工作。

以下代码来自一个纯粹用于测试的模块。

即使创建一个新的媒体播放器也不起作用。每个文件的单独线程是解决方案还是我忽略了 python-vlc 中的某些功能?

0 投票
1 回答
96 浏览

python - MPRIS 与 Python 或 VLC-Python 的集成

有人知道与 MPRIS 交互并向其写入元数据的简单模块吗?我正在尝试让音乐播放器与操作系统一起使用,并且我正在使用 VLC [ python-vlc] 作为它的后端。如果您能帮我找到任何可以让我轻松编写元数据的模块,谢谢。

我尝试过的模块:

  • playerdo- 只读取元数据
  • playerctl- 只读取元数据
  • modipy-mpris- 不工作
  • mpris-server- 经常中断,通常设置起来很痛苦
  • vidify- 不是我想要的

VLC 文档:https ://www.olivieraubert.net/vlc/python-ctypes/doc/index.html

注意:这不是我的播放器的样子,这是 KDE 的 Applet,让我可以看到正在播放的内容。我确定 windows 有类似的东西,但最重要的是我需要能够使用键盘或蓝牙设备上的播放/暂停按钮从操作系统的任何位置播放和暂停音乐

输出示例:KDE Plasma Applet

0 投票
1 回答
143 浏览

python - 在 python PyQt5 中添加 Qframes 和 Matplotlib

我正在尝试使用 Python PyQt5 运行一个程序,在该程序中我获取 2 个摄像头的 ip 并将它们实时流式传输到我的屏幕上,但是流就像给定图片中的一样(查看第一张图片),两个流都来了在前半部分,但我真正想要的是将它们分成两半(查看第二张图片以便更好地理解)水平布局的代码顶部布局,而不是仅在屏幕的第一半部分(我也是正在获取这些黑色边框,如果有人知道如何将其删除,我将无法删除它们,请告诉
在视频流位于底部布局的顶部布局之后,我试图获取一个图表和一个空的小部件我可以编辑以备后用。

提前致谢

单击此处查看我得到的输出 点击这里查看我想要的输出(我真正想要得到的)

这是我的另一个具有 matplotlib 代码的文件夹:---

0 投票
1 回答
544 浏览

libvlc - 如何在 python-vlc 中获取比特率、采样率和每个样本的位数

我正在尝试使用 python-vlc 获取音频文件的每个样本的比特率、采样率实际比特。

我看到我们可以libvlc_media_tracks_get()用来获取比特率,但我不知道如何获取其他的。

但即使这个方法可以获取所有 3 个信息,我仍然无法使该方法工作。它需要 2 个参数p_mdtracks. 我不明白是什么tracks。它说它需要一个实例,LP_LP_MediaTrack但我无法以某种方式找到这意味着什么。

0 投票
1 回答
366 浏览

python - 如何从 python-VLC 获取音频样本

我需要的

我正在开发带有样本分析器的音乐播放器。我的问题是我目前正在使用 pydub 从歌曲中获取样本,但是随着歌曲变得更长,两者变得越不同步。我已经使这两个字面上同步,pydub 恰好读出了它[我什至同时启动它们,这两个实际上逐渐与音频不同步,并且随着歌曲继续播放更多]。

基本上,是否有一个 python-vlc 相当于pydub.AudioSegment.get_array_of_samples()

您可以在此处查看 python-vlc 文档:https ://www.olivieraubert.net/vlc/python-ctypes/doc/

我试过的

  1. python-vlcsound.get_time()以毫秒为单位返回最后更新时间。该命令的问题不在于它仅每半秒左右更新一次[我找到了解决方法],而是它没有返回准确的时间。我可以从它开始播放时开始使用time.monotonic(). 随着时间的推移,get_time()计时器的变化很大。我得到了 195ms、294ms 和 217ms 的差异。

  2. 我尝试使用该模块使用外部计时器threading。看来这pydub.AudioSegment[index]根本不同步。

  3. sound.get_time()py-vlclen(sound)中缩放到 pydub 中。这不能按预期工作。我不能告诉你为什么,但它仍然不同步。

  4. 使用sound.get_time()随时间增加的平均偏移量。似乎pydub.AudioSegment[index]没有正确排列。

  5. 使用aubio. 它只读取 WAV 文件,对于实时分析仪,首先转换为 WAV 需要很长时间。

我发现的事情

  • 我查看了每首歌曲的时长(以毫秒为单位),len(sound)对于 pydub 和sound.get_length()python-vlc 通常相差 10 秒左右。

行不通的事情

  • 使用 pydub 的play()命令。我不喜欢它,因为它非常有限。
  • 使用 py-vlc 以外的其他东西来播放音频,VLC 具有许多无法复制的功能。

以前的建议

我很好奇

  • Audacity 有 python 模块吗?我一直在寻找并找不到它。如果可能的话,我还可以使用其他一些可以与 Audacity 交互的命令行工具[我知道内置的命令行实用程序根本没有做太多事情]
0 投票
1 回答
431 浏览

python - Python-vlc 错误:HTTP 连接失败

我正在尝试使用python-vlc库播放在线视频。

首先,我使用了一个简单版本的播放器来测试它:

它可以毫无问题地从 URL 播放 while 视频!

现在我想使用带有pyqt5GUI 的更复杂的版本(原始源代码在这里):

此代码不断返回一个access stream error: HTTP connection failure.

0 投票
1 回答
293 浏览

python - 有没有办法让 python-vlc 窗口承认裁剪?

我想使用 播放视频python-vlc。我已经完成了所有工作,并且视频播放没有任何技术问题。不过,这里有一个美学问题。我只想播放视频的一部分。如,我想在底部剪掉一点,在右边剪掉一点。我知道我可以通过调用来做到这一点MediaPlayer.video_set_crop_geometry(),而且我已经成功地做到了。但是,实际打开的窗口是为整个视频调整的窗口,我想要的部分位于中间,周围有黑条。(如果我调用MediaPlayer.video_set_scale(),那么裁剪出来的位与我不裁剪时的大小相同。如果我不调用video_set_scale(),裁剪出的位会被拉伸,保持纵横比,直到它到达边缘窗口。无论如何,有黑条)。

我可以让窗口适应这个新的、更小的视频吗?最好是自动的,但是如果我必须传递我想要的大小,那也很好。

我曾尝试在不同调用之间调整顺序,但无济于事。显然python-vlc有能力在某处调整它正在播放的窗口,因为它可以打开一个正确大小的窗口以播放常规视频,并且在调用后自动调整video_set_scale(),但只适合原始视频,而不是裁剪的视频。

0 投票
1 回答
588 浏览

python - 我可以使用 python VLC 流式传输文件吗?

我想使用 python-vlc 通过网络流式传输文件。我怎样才能做到这一点 ?

我试过这个:

但是出现了一个窗口(我不希望出现一个窗口)并且流不起作用。

有人能帮我吗 ?谢谢 !

PS:我试图用 open cv 获得一个 rtsp 流,但这是错误的,并且使用 VLC,没问题。所以我想用opencv捕获VLC流,而不是rtsp流。

0 投票
0 回答
87 浏览

python - 如何在 python-vlc 中禁用多个实例?

我是 python vlc 的新手,所以我不确定我是否在问正确的问题。话虽如此,我想要做的是,例如,如果我在下面运行代码两次,初始实例将停止(即歌曲将自动停止播放)。

0 投票
1 回答
170 浏览

libvlc - 在 python-vlc 中-我如何“涂抹”播放速率以同步两个播放器?

我正在尝试同步播放两个 VLC 实例。为此,我使用了 UDP 数据包。从次要玩家,我向主要玩家发送一个包含当前位置的数据包,主要玩家以当前位置回答。然后我使用这些信息来估计延迟。到目前为止,这一切正常,UDP 会话的总运行时间可以忽略不计(在同一主机上运行,​​大约为 0.00017 秒,在有线 LAN 连接上稍微多一点)。

当我尝试使辅助流排列时,麻烦就开始了。如果差异很大,我只是设置位置。这最终不是很精确,因为玩家需要一些时间来寻找新的位置。

因此,如果差异相对较小,我尝试将播放速率设置为稍快或稍慢,直到它们在同一帧上(即“应该”帧等于“是”帧)。问题是播放器也有点挂

我尝试了更大的(1.2 / 0.9)值以及更小的(1.01 / 0.99),结果相似。

我也得到了很多:

和这个:

后者尤其是如果我对更新频率有点疯狂。

我想知道是否有任何其他/更好的方法来实现这一目标?我想知道是否可能涉及某种计算,我可以这样做以使新费率与内部时间参考更好地对齐?第二个错误(“没有参考时钟”)让我认为内部某些东西被重新初始化,因为它暂时不可用。

非常感谢您的帮助。