当前位置: 首页 > 知识库问答 >
问题:

MPEG-DASH和碎片mp4

蔺德曜
2023-03-14

我对碎片化mp4的理解是它是一个文件,但内部它是以片段的形式构建的。有人能向我解释一下如何在DASH的. mpd文件中处理这些片段吗?我看到的. mpd文件似乎使用单独的url处理不同的段,但我想碎片化mp4必须通过字节偏移量来处理同一个url。那么浏览器如何知道什么时间对应于什么字节范围?

共有3个答案

郭思淼
2023-03-14

服务器有一个清单,可以通过扫描文件中的moof box来创建。一个moof mdat=一个片段。请求片段时,会在清单中查找文件偏移量,并返回正确的框。

岳良策
2023-03-14

这个mpd文件有一个段列表,其字节范围如上所示。要访问这些段,需要解析每一行的mediarange属性,并使用类似于XHR的setRequestHeader来请求它,以指定字节范围。使用这种方法,不需要服务器组件。以下是我一直在使用的一些代码:

  var xhr = new XMLHttpRequest();

  // Range is in format of 1234-34567
  // url is the .mp4 file path 
  if (range || url) { // make sure we've got content in our params
    xhr.open('GET', url);
    xhr.setRequestHeader("Range", "bytes=" + range); 
    xhr.send();
    xhr.responseType = 'arraybuffer';
    try {
      // watch the ready state
      xhr.addEventListener("readystatechange", function () {
        if (xhr.readyState == 4) { //wait for video to load
          // add response to buffer
          try {   
            // videoSource is a sourceBuffer on your mediaSource object.             
            videoSource.appendBuffer(new Uint8Array(xhr.response));
            videoSource.onreadystatechange = function () {
              if (videoSource.readyState == videoSource.done) {
                videoElement.play();
              }
            };
          } catch (e) {
            //  fail quietly  
          }
        }
      }, false);
包德业
2023-03-14

以下是MPEG DASH主配置文件的mpd示例。本mpd描述的mp4文件是一个片段化的mp4。如你所见:

<SegmentURL media="bunny_15s_200kbit/bunny_200kbit_dashNonSeg.mp4" mediaRange="868-347185"/>
<SegmentURL media="bunny_15s_200kbit/bunny_200kbit_dashNonSeg.mp4" mediaRange="347186-664464"/>

 类似资料:
  • 我正在尝试使用shaka packager实现Mpeg DASH流媒体。要生成每个持续时间为5秒的分段,-segment_duration param帮助我实现这一点。 https://google.github.io/shaka-packager/html/documentation.html#chunking-选项 我可以从下面的链接中看到一段片段视频是如何呈现的 什么是碎片化mp4(fMP4

  • 我正在尝试实施Android应用程序来播放受小程序保护的视频。我在Exoplayer上构建我的应用程序,但我对有问题。 我有这个异常。我发现这个异常被抛出在这行代码中: 方法的所有参数都设置正确,但调用此方法失败,并引发上述异常。 你知道我该怎么解决吗?谢谢你的帮助。

  • 我正在写关于流媒体直播的论文。我使用了ffmpeg、带有rtmp模块和dash的ngix服务器。来自Dash industry的js。我通过ffmpeg启动流到服务器,并通过dash播放,播放器运行良好,但存在一些问题。 仅当mpd dash play list仍有chunk t=0时,玩家才能玩,所以每当用户请求玩家和*。mpd已更新,但块t=0玩家不运行。 我上传我的*。mpd文件发送到Das

  • 我一直在尝试学习MP4Box和Dash,我正在取得一些进展,但我似乎无法让我的视频正常工作。我按照将播放器添加到一个简单的html页面的说明进行了操作,并用它测试了Dash测试页面中的已知MPD,并且播放器的一切都很完美,所以我缩小了MPD文件的范围。 我通过Dash验证器运行了我的MPD文件,但它失败了。我得到以下错误: 我正在使用MP4Box来分割mp4,所以这可能是一个错误的命令。我用的是这

  • 需要调试段划线文件的帮助吗 输入是带有这些细节的MP4。这是从摄像机录制的,摄像机的输出是mkv,我们通过adobe编辑音频后转换为MP4 大小:7.51 GB帧率:25帧/秒 数据速率:25326kbps 总比特率:25525kbps 使用此命令将其转换为另一个mp4 输出视频已被删除 fps:25 数据速率:761kbps 比特率:761kbps 然后,通过MP4Box创建了分段破折号 生成的

  • 我正在创建一个可以播放静态mpeg DASH文件的应用程序。我一直在使用MP4Box来创建短跑。mp4和。mpd文件。MPD文件包含一个字节范围偏移量列表,这些偏移量位于单个字节中。mp4文件。这很好,但我见过范围是单个文件的实现。 我想知道哪种是创建DASH文件的“行业首选”方式?是在文件中包含一个带有偏移量的. mp4文件,还是为每个段创建单独的. mp4文件? 如果是单个文件,那么每个文件在