如何从控制台播放 mpeg-dash 音频流?
How to play mpeg-dash audio streams from console?
有没有办法播放 mpeg-dash audio stream from console? This is an example stream.
能够强制特定的流质量也很好。
我试过 mpv
、cvlc
,但他们似乎无法解析播放列表和 assemble 块。
更新: VLC
支持破折号流
最新版本的 VLC 能够处理破折号流,因此终端调用将是:
cvlc https://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/dash/nonuk/dash_low/aks/bbc_world_service.mpd
Osmo4 (gpac)
osmo4
which is part of the gpac
项目可以播放 dash MPD 文件,但不幸的是,它不能在无头模式下用于纯音频流。
dash.js
这是需要浏览器的官方 dash.js 库。不知道能不能在nodejs下运行
这是播放改编自 dash.js readme 的 audio/video 破折号流的最小实现。
<!doctype html>
<html>
<head>
<title>Dash.js</title>
<style>
video {
width: 640px;
height: 360px;
}
</style>
</head>
<body>
<video id="videoPlayer" data-dashjs-player autoplay controls src="https://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/dash/nonuk/dash_low/aks/bbc_world_service.mpd">
</video>
<script src="//cdn.dashjs.org/latest/dash.all.min.js"></script>
</body>
</html>
Note: The file above will NOT work when opened from the local file system over a file:///
protocol. It requires a web server; any of the oneliners listed here would do.
使用Chrome/Chromium无头
从版本 59 开始,Google Chrome/Chromium 可以 运行 无头模式,这意味着它可以在无头系统上使用。由于 dash.js 没有 'official' 文本模式客户端,因此在终端中播放破折号音频的重量级方法是使用无头 chrome/chromium:
打开它
chromium-browser --headless --disable-gpu --repl https://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/dash/nonuk/dash_low/aks/bbc_world_service.mpd
偶尔 chrome/chromium 会在第一次调用时播放失败,--repl
选项似乎允许它最终开始播放。 repl 还允许您键入任意 javascript ,例如document.location.reload()
.
正如我在评论中提到的,现在可以使用 ffmpeg 的 ffplay
实用程序从命令行播放 DASH 内容。在早期版本的 ffmpeg 中,DASH 播放并不总是启用 - 有关详细信息,请参阅我的 related question 例如:
ffplay http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd
还可以使用 ffmpeg
处理 DASH 媒体 - 这样您就可以轻松地使用它来下载(或转换)DASH 内容,例如:
ffmpeg -i http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd exMPD_BIP_TC1.mp4
有没有办法播放 mpeg-dash audio stream from console? This is an example stream.
能够强制特定的流质量也很好。
我试过 mpv
、cvlc
,但他们似乎无法解析播放列表和 assemble 块。
更新: VLC
支持破折号流
最新版本的 VLC 能够处理破折号流,因此终端调用将是:
cvlc https://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/dash/nonuk/dash_low/aks/bbc_world_service.mpd
Osmo4 (gpac)
osmo4
which is part of the gpac
项目可以播放 dash MPD 文件,但不幸的是,它不能在无头模式下用于纯音频流。
dash.js
这是需要浏览器的官方 dash.js 库。不知道能不能在nodejs下运行
这是播放改编自 dash.js readme 的 audio/video 破折号流的最小实现。
<!doctype html>
<html>
<head>
<title>Dash.js</title>
<style>
video {
width: 640px;
height: 360px;
}
</style>
</head>
<body>
<video id="videoPlayer" data-dashjs-player autoplay controls src="https://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/dash/nonuk/dash_low/aks/bbc_world_service.mpd">
</video>
<script src="//cdn.dashjs.org/latest/dash.all.min.js"></script>
</body>
</html>
Note: The file above will NOT work when opened from the local file system over a
file:///
protocol. It requires a web server; any of the oneliners listed here would do.
使用Chrome/Chromium无头
从版本 59 开始,Google Chrome/Chromium 可以 运行 无头模式,这意味着它可以在无头系统上使用。由于 dash.js 没有 'official' 文本模式客户端,因此在终端中播放破折号音频的重量级方法是使用无头 chrome/chromium:
打开它chromium-browser --headless --disable-gpu --repl https://a.files.bbci.co.uk/media/live/manifesto/audio/simulcast/dash/nonuk/dash_low/aks/bbc_world_service.mpd
偶尔 chrome/chromium 会在第一次调用时播放失败,--repl
选项似乎允许它最终开始播放。 repl 还允许您键入任意 javascript ,例如document.location.reload()
.
正如我在评论中提到的,现在可以使用 ffmpeg 的 ffplay
实用程序从命令行播放 DASH 内容。在早期版本的 ffmpeg 中,DASH 播放并不总是启用 - 有关详细信息,请参阅我的 related question 例如:
ffplay http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd
还可以使用 ffmpeg
处理 DASH 媒体 - 这样您就可以轻松地使用它来下载(或转换)DASH 内容,例如:
ffmpeg -i http://dash.edgesuite.net/dash264/TestCases/1a/netflix/exMPD_BIP_TC1.mpd exMPD_BIP_TC1.mp4