如何在网页浏览器中播放MKV视频?

45

我正在尝试使用MPEG4视频编解码器和AC3音频编解码器制作一个MKV视频,使其可以在Mozilla或Chrome上在线播放。我已经尝试了多种方法,包括本地HTML5,它可以回放视频但没有音频,并且据我所读,AC3是一种专有的编解码器,因此不包括在受支持的编解码器中。代码如下:

<video width='1024' height='768' controls autoplay> 
    <source src="path_to_src" type='video/x-matroska'>
</video>

然后我尝试使用VLC Web插件(因为我知道VLC可以正确播放这些文件),但是我还没有成功地播放任何文件,使用这种方法的示例似乎没有很多一致性。以下是我迄今为止尝试使用VLC插件的内容:

<embed type="application/x-vlc-plugin" version="VideoLAN.VLCPlugin.2" 
width="1024" height="768" id="vlc" autoplay="yes" target="path_to_file"></embed>

VLC的页面上说要添加以下内容:

<object classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"
 codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab">

但是,这个代码库似乎不再存在了,在上面添加那个classid对文件的播放没有任何影响。无论是哪种方法都导致VLC播放器框被制作出来,但是没有任何东西被播放,而开发者控制台也没有显示任何错误。

所以我的问题是,有没有人知道一个解决AC3音频在本地HTML5播放器中播放的变通方法,或者VLC Web插件的正确语法是什么?还是有其他的播放器可以推荐吗?任何帮助都将不胜感激!


1
mkv不是HTML5视频支持的格式。您需要转码/转封装为浏览器支持的格式(或格式)。 - Offbeatmammal
我发现使用FFmpeg将视频转换为.swf格式并用于流媒体传输更加容易。 - Step by Step
6个回答

33

HTML5不支持.mkv/Matroska文件,但你可以使用以下代码...

<video>
    <source src="video.mkv" type="video/mp4">
</video>

但这取决于浏览器是否能播放。这种方法已知适用于Chrome浏览器。


5
在 Firefox 测试时,这并没有起作用。我只是将 MKV 文件转换为 WebM 格式。 - rhigdon
3
在 Android 和 LG 电视上使用您的 HTML,从个人电脑提供视频存储来观看电影非常流畅 :) - e-info128
很不幸,对我来说它无法工作!Chrome只会显示一个没有任何播放控件的黑色视频。 - gignu
好的,要添加播放控件,您必须手动将它们添加到视频标签中!像这样:<video controls></video>。但是,现在还没有音频。有人知道如何添加音频吗? - gignu
它在我的 Chrome 浏览器版本中运行良好:Version 94.0.4606.81 (Official Build) (x86_64)。以下是视频标签:<video controls> <source src="video_file_path.mkv" type="video/mp4"> 您的浏览器不支持 video 标签。 </video> - hgsongra

16

您可以使用以下代码,在Chrome浏览器上可以正常工作。

 function failed(e) {
   // video playback failed - show a message saying why
   switch (e.target.error.code) {
     case e.target.error.MEDIA_ERR_ABORTED:
       alert('You aborted the video playback.');
       break;
     case e.target.error.MEDIA_ERR_NETWORK:
       alert('A network error caused the video download to fail part-way.');
       break;
     case e.target.error.MEDIA_ERR_DECODE:
       alert('The video playback was aborted due to a corruption problem or because the video used features your browser did not support.');
       break;
     case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED:
       alert('The video could not be loaded, either because the server or network failed or because the format is not supported.');
       break;
     default:
       alert('An unknown error occurred.');
       break;
   }
 }
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
 <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
 <meta name="author" content="Amin Developer!" />

 <title>Untitled 1</title>
</head>
<body>

<p><video src="http://jell.yfish.us/media/Jellyfish-3-Mbps.mkv" type='video/x-matroska; codecs="theora, vorbis"' autoplay controls onerror="failed(event)" ></video></p>
<p><a href="YOU mkv FILE LINK GOES HERE TO DOWNLOAD">Download the video file</a>.</p>

</body>
</html>


1
这个可以工作,但是我没有声音。我需要同时指定音频编解码器吗? - Mini Fridge
2
由于许可限制,使用AC3音频编解码器编码的声音轨无法在Chrome中播放,因此基本上这种方法不适用于.mkv文件的播放。 - edtech

11

如果您要使用MKV格式的视频扩展,请使用video标签而不是source标签。

例如:

  <!-- mkv -->
  <video width="320" height="240" controls src="assets/animation.mkv"></video>
<!-- mp4 -->
  <video width="320" height="240" controls>
    <source src="assets/animation.mp4" type="video/mp4" />
  </video>

My answer may be incomprehensible to you, so if you do not understand, click on this


2
谢谢,这真的有效。 - iatharva
1
我最初以为它可以工作,但后来我注意到没有声音。也许有一种方法可以启用音频吗? - gignu
1
无法在Firefox 93.0 x64上工作。 - Kearney

5

对于我来说,HTML5和VLC Web插件不可用,但是我能够通过以下设置使其工作:

DivX Web Player(仅限NPAPI浏览器

AC3音频解码器

这是HTML代码:

<embed id="divxplayer" type="video/divx" width="1024" height="768" 
src ="path_to_file" autoPlay=\"true\" 
pluginspage=\"http://go.divx.com/plugin/download/\"></embed>
The DivX播放器似乎比本地HTML5支持更多的视频和音频选项,迄今为止我对它印象非常深刻。

1
该死,有没有不用插件的方法可以做到这一点? - Navin
2
很遗憾,直到Chrome/Firefox等浏览器开始原生支持MKV视频,我至少找不到其他方法。 - Alex Meyer

4
<video controls width=800 autoplay>
    <source src="file path here">
</video>

这将仅使用Google Chrome浏览器来显示视频(.mkv)。


2
我已经尝试了.mkv格式,但在Chrome中无法获得音频。你确定它适用于Chrome吗? - Armen Sanoyan
1
同样的问题,不起作用。 - Optimist Rohit

1

这里有一个 JavaScript 项目,位于 https://github.com/ilian/mkv-web

现代的网络浏览器只支持基于 Matroska 的 WebM 容器格式,但仅限于免版税编解码器。即使 MKV 文件包含浏览器能够解码的编解码器编码的媒体,大多数浏览器也无法播放此类容器中的媒体。该项目通过使用编译为 WebAssembly 的 ffmpeg(感谢 ffmpeg.wasm 项目)和 Web Workers 将底层媒体流复制到大多数浏览器支持的容器(例如 mp4、webm)中,而无需第三方扩展或程序。通过将重新混合的块从 Web Worker 发送到主线程,并使用 Media Source Extensions 将其附加到 HTML5 视频元素上来实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接