M4V文件的Mimetype是video/mp4还是video/m4v?

48
我正在使用HTML5的video元素提供视频服务。我发现有关m4v视频适当的MIME类型存在冲突信息。大多数演示将type属性设置为标记中source标签的video/mp4。我读过一些文章,表示Web服务器Mimetype应为video/m4v,而其他文章则表示应为video/mp4。哪一个是正确的?
例如,这篇文章指出video/m4v的MIME类型:http://html5center.sourceforge.net/make-your-html5-video-play-on-mobile-devices 以及这篇文章指出video/mp4的类型:http://www.coolestguyplanettech.com/use-html-5-video-on-all-browsers/
4个回答

67
标准媒体类型是video/mp4。 标准的mp4容器格式通常用于AAC音频和H.264视频+ AAC音频。它们具有不同的媒体类型,audio/mp4video/mp4,但是通常您希望为音频和视频使用不同的应用程序,并且在某些系统上仅能将默认应用程序与文件扩展名相关联。因此,在mp4容器中使用扩展名.m4a.m4v以分别表示音频和视频(+音频)在某些圈子中变得流行。但是,这不影响媒体类型,该类型已经使用音频或视频前缀来区分它们。 然而,一个变化是Apple开始为其商店中的视频使用自己的媒体类型video/x-m4v,这些视频位于mp4容器中并使用.m4v扩展名。默认情况下,这被设置为在iTunes中打开视频。有时这是必要的,因为视频使用DRM、AC-3 Dolby Digital音频或其他在mp4容器中通常不支持但在iTunes中对于带有.m4v扩展名的文件支持。如果您依赖这样的功能,则可能希望使用此媒体类型而不是标准媒体类型。 没有x-的媒体类型在RFC中进行了标准化,并由IANA跟踪。没有名为video/m4v的媒体类型被标准化。非标准的媒体类型具有x-前缀。

5

我只在特殊项目中编写HTML5代码,但我曾经遇到一个问题,后来通过意外的方法解决了它。在我的视频块中,我以如下方式编写视频代码:

        <source src="Videos/myvideo.mp4" type="video/mp4">
        <source src="Videos/myvideo.webm" type="video/webm">

这是我的问题:如果我先放mp4行,Google Chrome会播放视频部分,但没有声音。如果我先放webm行,Google Chrome会正确播放视频和声音,但Apple Safari根本无法检测到视频。即使我在type=语句中添加了编解码器信息,也没有任何效果。
我正要妥协并尝试使用Flash,但我偶然发现了解决方法。在mp4行中,我将type="video/mp4"替换为type="video/m4v"。它完全解决了问题!注意:我没有更改视频文件扩展名从mp4到m4v--我只在type=语句中使用了m4v。
我找不到任何文档告诉我要这样做,我只是对.mp4和.m4v文件扩展名之间的区别感到兴趣,并开始玩耍。我使用Linux(Xubuntu)并使用Openshot视频编辑器创建了我的视频,同时作为webm和H.264 mp4文件。也许Openshot的内部工作导致这成为一个问题,但无论如何,这就是我解决这个问题的方法。我的mp4视频完美播放。我希望这可以帮助其他人--MinnesotaJon

2

8年后在Brave 版本1.22.70 Chromium: 89.0.4389.105 (官方构建) (64位)和Firefox 86.0.1 (64位)上进行实际测试,回答这个问题。

<video controls="" controlslist="" preload="metadata">
    <source type="video/m4v" src="https://example.com/v.m4v">
</video>

不起作用。

但是,video/x-m4vvideo/mp4都可以使用我正在测试的m4v文件。我想根据被接受的答案最好使用x-m4v


-1

实际上这完全取决于您使用的视频容器。大多数浏览器支持webm和/或mp4文件格式。提供这两个源文件的组合可以确保浏览器可以查看文件。如果您希望包括它,则还有.ogg格式。

对于m4v格式我不太确定,但听起来好像在网络上并不常用。无论如何,我建议将m4v作为video/m4v MimeType提供,将mp4作为video/mp4 MimeType提供。


容器是m4v,如果没有表述清楚,我很抱歉。视频编解码器是H.264,音频编解码器是mp4a。但我认为这不会影响MIME类型,我相信只有容器会产生影响。 - Aidan Ryan

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