【问题标题】:Not able to render embedded subtitles with Video.JS for mp4 video无法使用 Video.JS 为 mp4 视频呈现嵌入式字幕
【发布时间】:2021-11-03 18:50:33
【问题描述】:

我无法在 video.js 中为嵌入了字幕流的 mp4 文件渲染字幕。

如果我正在运行FFProbe /filePath,我可以确认 mp4 视频有字幕。

我在前端使用 Angular,这就是我设置 videoJs 播放器的方式

    const videoJsConfig = {
          controls: true,
          autoplay: false,
          preload: 'auto',
          fluid: true,
          height: 600,
          width: 800,
    
          textTrackSettings: true
    
          // html5: {
          //   nativeTextTracks: false
          // }
        };
    
        this.player = videojs('preview-player', videoJsConfig);

对于前端我只是显示这个:

<section class="main-preview-player">
  <video id="preview-player" class="video-js" crossorigin="anonymous">
    <p class="vjs-no-js">
      To view this video please enable JavaScript, and consider upgrading to a web browser that
      <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
    </p>
    <track kind="subtitles" src="//subrip" srclang="en" label="English" default>
  </video>
  <div class="lds-ring" *ngIf="isVideoLoading"><div></div><div></div><div></div><div></div></div>
  <div class="watermark" *ngIf="auditId"></div>
</section>

对于加载部分,一些简单的事情,从用户的选择中抓取 mp4 文件 blob。

 const objectURL = URL.createObjectURL(file as Blob);
    const mediaSrc = this.domSanitizer.bypassSecurityTrustUrl(objectURL);

    console.log('mediaSrc', mediaSrc);

    this.player.src([
      { type: 'video/mp4', src: objectURL },
    ]);

添加 track 元素用于测试,因为 FFProbe 已向我显示了我认为也许我可以强制它的上层信息。

我已经阅读了他们的文档,但他们并没有提供太多关于他们认为是“原生字幕”或“模拟字幕”的信息,所以我试着摆弄它,希望它能起作用。

对于这种情况,我唯一的“修复”是在后端级别使用 FFMpeg,提取 .srt 文件,将其发送到 frondend,然后以编程方式将 srt 文件附加到视频标签本身(轨道元素),但必须有一个更人性化的选择

或者也许只是寻找更好的视频库。在线

【问题讨论】:

  • 一个问题:如何创建带有嵌入字幕的 MP4 文件? (例如,您是否使用 ffmpeg 工具以某种方式嵌入它们,或者提供给您的 mp4 文件是否已经嵌入了字幕流?)

标签: angular ffmpeg video.js video-subtitles


【解决方案1】:

嵌入式字幕轨道依赖于浏览器的原生支持,这并不十分普遍。 Safari 支持 MP4 中的 mov_text,仅此而已。

Safari 不会播放 ffmpeg 输出中的文件,因为它是 matroska (mkv) 容器。 Chrome 经常会播放重命名为 mp4 的 mkv),但不支持嵌入的字幕。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多