我们正在创建一个基于Web浏览器的音乐流媒体服务,该服务可以传输包含单独的同步音轨的文件.文件基本上是mp4s,但有一些额外的框.
流式传输将遵循MPEG-DASH标准,并且希望不重新发明轮子(例如,有dash.js).
更新160525 - 添加更多背景:
MPEG-DASH是项目的一项要求,无论是其功能(适应性,简易服务器设置等),还是因为我正在研究的项目只使用MPEG标准.
流本身是静态文件的按需播放,即没有直播.播放将有两种模式; 一个只播放曲目的静态模式,以及一个用户可以改变音量,平移等的交互模式.现在,静态播放很好.
现在,流式同步多轨音频似乎并不是最常见的事情,我遇到了几个问题:
MPEG-DASH似乎高度关注视频流.
是否有任何关于纯音频流的文档或指南,我无法找到?
AFAIK,<video>和<audio>元素一次只支持一个音轨.它们提供了大量的魔术通道MediaSource.addSourceBuffer(),可以对输入缓冲区进行即时解码.
解决这个问题的两种可能方法是:
<audio>元素并手动同步它们AudioNode为每个轨道创建s并手动同步它们.这意味着我们必须处理解码有没有其他或更好的方法来流式传输多个同步音轨?
dash.js参考播放器遵循DASH-AVC/264指南,根据我的理解,该指南解决了视频流,并将同时播放的音频轨道的数量限制为一个.
它还使用HTML5 <video>元素,这导致上面的问题.
它,然而,含有巨大数额的DASH相关的功能,如自适应流,MPD清单解析等等等等.
dash.js是多轨音乐流媒体的最佳选择,还是最终成为黑客?
如果我误解了任何事情,我非常乐意回答问题或纠正错误!
javascript audio-streaming html5-audio mpeg-dash web-audio-api
是否有可能,给定一个像https://dash.akamaized.net/akamai/bbb_30fps/bbb_30fps.mpd这样的 mpd 文件,轻松下载存储在服务器上的所有 Dash 文件(假设我们知道它是服务器上的静态内容) . 也就是说,我应该能够运行一个 HTTP 服务器来为我下载的内容提供服务,并将 Dash 播放器指向它以播放相同的视频。
youtube-dl 似乎没有给我 Dash 包。我可以使用 curl 来像浏览器一样执行 XHR 请求,但我希望有一种更简单的方法。
我们正在开发一款应用程序,可以实时监控您的后院。每个客户端都有一个连接到互联网的摄像头,流式传输到我们的公共 node.js 服务器。
我正在尝试使用 node-media-server 发布一个 MPEG-DASH(或 HLS)流,以便我们的应用程序客户端在世界各地的不同网络、带宽和分辨率上可用。
我们的目标是尽可能接近“实时”生活,以便您可以立即监控后院发生的事情。
已经完成的技术流程是:
我们服务器上的 ffmpeg 进程处理传入的相机流(每个相机的单独子进程)并通过本地机器上的 RTSP 发布流以供节点媒体服务器用作“输入”(我们还保存分段文件,生成缩略图等)。负责的 ffmpeg 命令是:
-c:v libx264 -preset ultrafast -tune zerolatency -b:v 900k -f flv rtmp://127.0.0.1:1935/live/office
node-media-server 正在使用我发现的“实时流媒体”的默认配置运行
private NMS_CONFIG = {
server: {
secret: 'thisisnotmyrealsecret',
},
rtmp_server: {
rtmp: {
port: 1935,
chunk_size: 60000,
gop_cache: false,
ping: 60,
ping_timeout: 30,
},
http: {
port: 8888,
mediaroot: './server/media',
allow_origin: '*',
},
trans: {
ffmpeg: '/usr/bin/ffmpeg',
tasks: [
{
app: 'live',
hls: true,
hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]',
dash: true, …Run Code Online (Sandbox Code Playgroud)我正在使用以下命令为html5流创建一个支离破碎的mp4:
-i rtsp://172.20.28.52:554/h264 -vcodec copy -an -f mp4 -reset_timestamps 1 -movflags empty_moov+default_base_moof+frag_keyframe -loglevel quiet -
Run Code Online (Sandbox Code Playgroud)
一切都运行良好,期待我试图解决的延迟问题.如果我每次从stdout进入数据时都会记录,并且到达时间戳,我得到这个输出:
16/06/2015 15:40:45.239数据大小= 24
16/06/2015 15:40:45.240得到的数据大小= 7197
16/06/2015 15:40:45.241得到数据大小= 32768
2015年6月16日15:40:45.241数据大小= 4941
2015年6月16日15:40:45.241数据大小= 12606
2015年6月16日15:40:45.241数据大小= 6345
16/06/2015 15:40:45.241得到数据大小= 6339
2015年6月16日15:40:45.242得到数据大小= 6336
2015年6月16日15:40:45.242得到数据大小= 6361
2015年6月16日15:40:45.242获得数据大小= 6337
16/06/2015 15:40:45.242得到数据大小= 6331
2015年6月16日15:40:45.242得到数据大小= 6359
16/06/2015 15:40:45.243得到的数据大小= 6346
16/06/2015 15:40:45.243得到的数据大小= 6336
2015年6月16日15:40:45.243数据大小= 6338
2015年6月16日15:40:45.243得到数据大小= 6357
2015年6月16日15:40:45.243得到数据大小= 6357
16/06/2015 15:40:45.243得到的数据大小= 6322
16/06/2015 15:40:45.243得到数据大小= 6359
2015年6月16日15:40:45.244数据大小= 6349
16/06/2015 …
我有一个Movie.Manifest.mpd文件,由5个.webm视频流(由不同大小和bps组成)和1个音频文件组成.我问的问题是:它可以通过"简单"的HTML5视频标签播放吗?
我试过这个并不起作用:
<video controls>
<source src = "Movie_Manifest.mpd"/>
</video>
Run Code Online (Sandbox Code Playgroud)
它有效,但它选择质量最低的视频流,输出是滞后的.我希望它有自适应比特流.您可能会想,"您认为您的带宽是那么慢吗?" 是的,我的带宽很慢,但不是那么慢.此外,当我自己运行低质量的webm文件时,它运行顺畅.
重申一下:
1)我可以使用"简单"HTML5视频标签进行自适应比特流传输吗?
要么
2)我是否必须使用开源媒体播放器(视频标签将通过javascript访问)?
谢谢,快乐流媒体
是否可以使用 DRM 下载 MPEG Dash 内容?
如何使用 MPD 文件解密?
我尝试下载所有 M4S 片段(音频和视频),但是当我加入片段时,视频无法正常工作。
该站点使用 Widevine 平台进行 DRM。
我也尝试过youtube-dl和dash-proxy,但还是没有成功。
我在谷歌上搜索,但没有成功。
我正在尝试为视频流编写一个基于 Java 脚本的 MPEG-DASH 实现。我参考了以下文件
这些图书馆正在使用 MSE(媒体源扩展)
我的理解
MPEG-DASH是流媒体视频的国际标准。但目前在 iOS 设备中并不天真地支持。在其他浏览器和设备中,它需要支持 MPEG-DASH 的 java 脚本库或视频播放器。(例如:Dash.Js、Shaka 播放器等)
另一种流媒体技术是HLS。它是由 Apple 创建的自适应流媒体通信协议。Safari 浏览器可以在网页、iPhone 和 iPod touch 设备中播放 HLS 流。
在这里我们可以看到 MPEG-DASH(由于 MSE)目前在 iOS 设备中并不天真地支持。
现在我的疑惑
Facebook其他流媒体服务如何播放他们的视频?仅适用于 HLS 吗?任何建议/解释都会更有帮助。
在 DASH(基于 HTTP 的动态自适应流媒体)的背景下,MPD 文件究竟是什么?
它的格式是正式指定的吗?如果是这样,它在哪里可用?
它在查看加密媒体的上下文中扮演什么角色?
(具有关于文件各自字段是什么以及它们做什么的描述性评论的示例文件将不胜感激,最好以比正式规范更易于访问和简洁的方式)。
YouTube是否使用MPEG-DASH传送视频?
我看到,如果我在youtube-dl中对某些视频使用-F选项,则不会出现“ DASH视频”,例如https://www.youtube.com/watch?v=Us-TVg40ExM。那么,YouTube是否保持与服务器的连接并通过HTTP请求的“范围”字段请求视频的“片段”?还是正在下载DASH标准化的固定时间段?
我再也无法获得MPD,如:如何获取youtube视频的.mpd文件
谢谢!
将 HEVC 视频复用到分段 MP4 以使用 MPEG-DASH/HLS 进行流式传输时,如何选择要使用的正确编解码器标签(hvc1或)?hev1
我认为根据标签的不同,复用略有不同ISO/IEC FDIS 14496-15:
当示例条目名称为“hvc1”时,对于所有类型参数集的数组,array_completeness 的默认强制值为 1,对于所有其他数组,默认强制值为 0。当样本条目名称为“hev1”时,所有数组的 array_completeness 默认值为 0。
除了这个还有别的吗?
为什么有两个标签,在这两个标签之间选择的标准是什么?
旁注:出于某种原因, Apple 更喜欢hvc1根据其HLS 创作规范。
mpeg-dash ×10
javascript ×3
ffmpeg ×2
video ×2
dash.js ×1
drm ×1
fmp4 ×1
hevc ×1
html ×1
html5 ×1
html5-audio ×1
ios ×1
media-source ×1
mp4 ×1
mpd ×1
node.js ×1
shell ×1
streaming ×1
transcoding ×1
widevine ×1
youtube ×1
youtube-dl ×1