在 DASH(基于 HTTP 的动态自适应流媒体)的背景下,MPD 文件究竟是什么?
它的格式是正式指定的吗?如果是这样,它在哪里可用?
它在查看加密媒体的上下文中扮演什么角色?
(具有关于文件各自字段是什么以及它们做什么的描述性评论的示例文件将不胜感激,最好以比正式规范更易于访问和简洁的方式)。
我无法弄清楚如何从mpc正确查询mpd.
例如:我知道如何列出所有专辑
mpc list album
Run Code Online (Sandbox Code Playgroud)
但是我希望得到更多的名字.
如何查询mpd的专辑名称,专辑路径,艺术家,曲目编号,长度等.优选地,在一个查询中,但是多个查询也是可以的.
我试着阅读mpc手册页和mpd的官方文档但是无法弄明白.
我想知道如何使用linux bash脚本接收mpd播放器的实际状态.我知道如何开始和停止播放器......
#!/bin/bash
mpc play
mpc volume +1
mpc stop
Run Code Online (Sandbox Code Playgroud)
...但我需要知道mpd是否正在播放一首歌.此外,当前的音量设置很有趣.
我尝试接收它mpcstatus=cat /var/tmp/mpd_status
或actvol=cat /var/tmp/mpd_volume
但文件不存在.我正在使用RaspberryPi上的Volumio/Debian.
我想在打开终端时启动一个进程 [mpd],并在打开第二个选项卡时检查它是否已经在运行,这样它就不会尝试再次运行它。这是我的 .bashrc 中的内容:
#start mpd automatically if not yet running.
if [[ -z "$(pgrep mpd)" ]]; then
mpd
fi
Run Code Online (Sandbox Code Playgroud)
我想是这样的,或者可能使用test -f
,但我不知道如何让它工作:
# MPD
if pgrep mpd > /dev/null
command mpd
end
Run Code Online (Sandbox Code Playgroud)
[这位于我的 config.fish 文件中]。
我试图用contextmanager隐藏一些try/except复杂性.这是一个简单的例子:
from contextlib import contextmanager
import mpd
mpdclient = mpd.MPDClient()
mpdclient.connect("localhost", 6600)
@contextmanager
def mpdcontext():
try:
yield
except mpd.ConnectionError:
mpdclient.connect("localhost", 6600)
with mpdcontext():
mpdclient.status()
with mpdcontext():
mpdclient.lsinfo()
Run Code Online (Sandbox Code Playgroud)
现在,正如我所理解的那样,在调用yield时执行with语句中的块.在我的情况下,如果这引发异常,我重新连接到mpd.重新连接后,我可以以某种方式再次执行with-block吗?
谢谢
我正在尝试创建一个网站来播放一些视频。对于每个视频,我将视频、音频和字幕提取到 3 个不同的文件夹中。碰巧一个视频有多个音轨和多个字幕。我做了很多研究,但我不知道如何将它们全部添加到清单中。现在,我使用这个命令:
ffmpeg -f webm_dash_manifest \
-i video1.mp4 -f webm_dash_manifest \
-i video2.mp4 -f webm_dash_manifest \
-i audio1.webm -f webm_dash_manifest \
-i audio2.webm -f webm_dash_manifest \
-i subtitles.vtt \
-c copy -map 0 -map 1 -map 2 -map 3 \
-f webm_dash_manifest -adaptation_sets "id=0,streams=v id=1,streams=a" manifest.mpd
Run Code Online (Sandbox Code Playgroud)
我的两个视频具有不同的分辨率和比特率,但效果很好。但我没有得到任何字幕,并且我的两个音轨被视为具有两种不同比特率的同一个音轨(就像视频一样)。我认为我应该有很多适应集,但我不知道如何创建它们。
我怎样才能以正确的方式创建清单?