问题标签 [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.
python - 使用 python-vlc 同时播放多个音频/视频文件
我正在开发一个 tkinter 应用程序,其中视频和声音根据某些事件排队和播放。
为此,我使用 python-vlc,但我还没有找到同时播放多个声音的方法(除了多线程)。视频还需要它们自己的窗口才能正常工作。
以下代码来自一个纯粹用于测试的模块。
即使创建一个新的媒体播放器也不起作用。每个文件的单独线程是解决方案还是我忽略了 python-vlc 中的某些功能?
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
python - 在 python PyQt5 中添加 Qframes 和 Matplotlib
我正在尝试使用 Python PyQt5 运行一个程序,在该程序中我获取 2 个摄像头的 ip 并将它们实时流式传输到我的屏幕上,但是流就像给定图片中的一样(查看第一张图片),两个流都来了在前半部分,但我真正想要的是将它们分成两半(查看第二张图片以便更好地理解)水平布局的代码顶部布局,而不是仅在屏幕的第一半部分(我也是正在获取这些黑色边框,如果有人知道如何将其删除,我将无法删除它们,请告诉)
在视频流位于底部布局的顶部布局之后,我试图获取一个图表和一个空的小部件我可以编辑以备后用。
提前致谢
这是我的另一个具有 matplotlib 代码的文件夹:---
libvlc - 如何在 python-vlc 中获取比特率、采样率和每个样本的位数
我正在尝试使用 python-vlc 获取音频文件的每个样本的比特率、采样率实际比特。
我看到我们可以libvlc_media_tracks_get()
用来获取比特率,但我不知道如何获取其他的。
但即使这个方法可以获取所有 3 个信息,我仍然无法使该方法工作。它需要 2 个参数p_md
和tracks
. 我不明白是什么tracks
。它说它需要一个实例,LP_LP_MediaTrack
但我无法以某种方式找到这意味着什么。
python - 如何从 python-VLC 获取音频样本
我需要的
我正在开发带有样本分析器的音乐播放器。我的问题是我目前正在使用 pydub 从歌曲中获取样本,但是随着歌曲变得更长,两者变得越不同步。我已经使这两个字面上同步,pydub 恰好读出了它[我什至同时启动它们,这两个实际上逐渐与音频不同步,并且随着歌曲继续播放更多]。
基本上,是否有一个 python-vlc 相当于pydub.AudioSegment.get_array_of_samples()
?
您可以在此处查看 python-vlc 文档:https ://www.olivieraubert.net/vlc/python-ctypes/doc/
我试过的
python-vlc
sound.get_time()
以毫秒为单位返回最后更新时间。该命令的问题不在于它仅每半秒左右更新一次[我找到了解决方法],而是它没有返回准确的时间。我可以从它开始播放时开始使用time.monotonic()
. 随着时间的推移,get_time()
计时器的变化很大。我得到了 195ms、294ms 和 217ms 的差异。我尝试使用该模块使用外部计时器
threading
。看来这pydub.AudioSegment[index]
根本不同步。从
sound.get_time()
py-vlclen(sound)
中缩放到 pydub 中。这不能按预期工作。我不能告诉你为什么,但它仍然不同步。使用
sound.get_time()
随时间增加的平均偏移量。似乎pydub.AudioSegment[index]
没有正确排列。使用
aubio
. 它只读取 WAV 文件,对于实时分析仪,首先转换为 WAV 需要很长时间。
我发现的事情
- 我查看了每首歌曲的时长(以毫秒为单位),
len(sound)
对于 pydub 和sound.get_length()
python-vlc 通常相差 10 秒左右。
行不通的事情
- 使用 pydub 的
play()
命令。我不喜欢它,因为它非常有限。 - 使用 py-vlc 以外的其他东西来播放音频,VLC 具有许多无法复制的功能。
以前的建议
- 使用如何使用 ffmpeg 从视频中提取音频?
- 这不起作用,因为我不想从现有的视频文件中提取音频,我正在尝试获取类似的样本
pydub.AudioSegment.get_array_of_samples()
- 这不起作用,因为我不想从现有的视频文件中提取音频,我正在尝试获取类似的样本
我很好奇
- Audacity 有 python 模块吗?我一直在寻找并找不到它。如果可能的话,我还可以使用其他一些可以与 Audacity 交互的命令行工具[我知道内置的命令行实用程序根本没有做太多事情]
python - Python-vlc 错误:HTTP 连接失败
我正在尝试使用python-vlc
库播放在线视频。
首先,我使用了一个简单版本的播放器来测试它:
它可以毫无问题地从 URL 播放 while 视频!
现在我想使用带有pyqt5
GUI 的更复杂的版本(原始源代码在这里):
此代码不断返回一个access stream error: HTTP connection failure
.
python - 有没有办法让 python-vlc 窗口承认裁剪?
我想使用 播放视频python-vlc
。我已经完成了所有工作,并且视频播放没有任何技术问题。不过,这里有一个美学问题。我只想播放视频的一部分。如,我想在底部剪掉一点,在右边剪掉一点。我知道我可以通过调用来做到这一点MediaPlayer.video_set_crop_geometry()
,而且我已经成功地做到了。但是,实际打开的窗口是为整个视频调整的窗口,我想要的部分位于中间,周围有黑条。(如果我调用MediaPlayer.video_set_scale()
,那么裁剪出来的位与我不裁剪时的大小相同。如果我不调用video_set_scale()
,裁剪出的位会被拉伸,保持纵横比,直到它到达边缘窗口。无论如何,有黑条)。
我可以让窗口适应这个新的、更小的视频吗?最好是自动的,但是如果我必须传递我想要的大小,那也很好。
我曾尝试在不同调用之间调整顺序,但无济于事。显然python-vlc
有能力在某处调整它正在播放的窗口,因为它可以打开一个正确大小的窗口以播放常规视频,并且在调用后自动调整video_set_scale()
,但只适合原始视频,而不是裁剪的视频。
python - 我可以使用 python VLC 流式传输文件吗?
我想使用 python-vlc 通过网络流式传输文件。我怎样才能做到这一点 ?
我试过这个:
但是出现了一个窗口(我不希望出现一个窗口)并且流不起作用。
有人能帮我吗 ?谢谢 !
PS:我试图用 open cv 获得一个 rtsp 流,但这是错误的,并且使用 VLC,没问题。所以我想用opencv捕获VLC流,而不是rtsp流。
python - 如何在 python-vlc 中禁用多个实例?
我是 python vlc 的新手,所以我不确定我是否在问正确的问题。话虽如此,我想要做的是,例如,如果我在下面运行代码两次,初始实例将停止(即歌曲将自动停止播放)。
libvlc - 在 python-vlc 中-我如何“涂抹”播放速率以同步两个播放器?
我正在尝试同步播放两个 VLC 实例。为此,我使用了 UDP 数据包。从次要玩家,我向主要玩家发送一个包含当前位置的数据包,主要玩家以当前位置回答。然后我使用这些信息来估计延迟。到目前为止,这一切正常,UDP 会话的总运行时间可以忽略不计(在同一主机上运行,大约为 0.00017 秒,在有线 LAN 连接上稍微多一点)。
当我尝试使辅助流排列时,麻烦就开始了。如果差异很大,我只是设置位置。这最终不是很精确,因为玩家需要一些时间来寻找新的位置。
因此,如果差异相对较小,我尝试将播放速率设置为稍快或稍慢,直到它们在同一帧上(即“应该”帧等于“是”帧)。问题是播放器也有点挂
我尝试了更大的(1.2 / 0.9)值以及更小的(1.01 / 0.99),结果相似。
我也得到了很多:
和这个:
后者尤其是如果我对更新频率有点疯狂。
我想知道是否有任何其他/更好的方法来实现这一目标?我想知道是否可能涉及某种计算,我可以这样做以使新费率与内部时间参考更好地对齐?第二个错误(“没有参考时钟”)让我认为内部某些东西被重新初始化,因为它暂时不可用。
非常感谢您的帮助。