Chrome 17无法播放像素格式为yuvj420p的mp4文件,但在Safari、IE等浏览器中可以播放。

7

这个文件是从尼康D3s摄像机录制的(mov格式),用ffmpeg转换成了mp4格式。其它文件(avi、flv、mp4等)都能正常使用。

请查看这个文件:http://shootitlive.s3.amazonaws.com/output.mp4(在不同的主机上提供服务时,Chrome浏览器无法正常工作,但Safari和Firefox使用Flash时一直有效)

/usr/local/bin/ffmpeg -i nonworking.MOV -acodec libfaac -ab 128k \-vcodec libx264 -preset slow -crf 30 -threads 0 -s 768x576 \-aspect 1.33333333333 -ar 48000 output.mp4

没有发现任何问题,但也不太清楚要注意什么:

ffmpeg -v 5 -i filename -f null - 2>error.log`

有什么想法吗?

Chrome 17已经算是“老旧”的版本了。Chrome自动更新功能会使老旧版本的Chrome变得越来越少。 - Christian Kuetbach
3个回答

18

我认为你的问题是像素格式。

你的Chrome错误报告中可以看出,工作正常的视频(working.mp4)具有pix_fmt=yuv420p。不工作的视频(qt_output.mp4)具有pix_fmt=yuvj420p。在我的测试中,将存在问题的视频转换为yuv格式可以使其播放。将正常工作的视频转换为yuvj会导致无法播放。

我不确定为什么我的像素格式分析与Chrome错误报告上的Alek不同,但这对我来说就是区别所在。

尝试将-pix_fmt yuv420p添加到您的ffmpeg命令中。


1
在从jpeg帧创建视频时(例如ffmpeg -i frames%5d.jpg out.mp4 => ffmpeg -i frames%5d.jpg -pix_fmt yuv420p out.mp4),也需要进行此修复。 - roufamatic
3
“-pix_fmt”标志在我经过一夜的挣扎后帮了我个大忙。感谢这篇文章。如果您正在尝试播放编码为MP4格式的文件,但例如Google Chrome浏览器无法播放,那么这仍然是一个问题,即使在2013年也是如此。 - user1971474
@user1971474 已经过去快一年了,我也遇到了这个问题。 - user1934286
那些 goo.gl 的链接似乎已经失效了。 - brasofilo
2017年:Android MediaPlayer类无法播放yuvj420p。感谢修复! - Nika Kasradze

3
请阅读chromium bug #117368,其中一位开发者解释了yuvj420p不久将不再受支持的原因:
事实上,chromium不支持yuvj420p。通常情况下,我们不支持使用范围有限的视频格式(或编解码器),因为维护代码质量、修复错误、进行安全审查等工作所需付出的努力与用户受益比例失衡,相对于我们可以花费时间和精力处理的所有其它事情来说。因此,此问题已被标记为“按设计运作中”,如果该格式变得更普遍流行,我们可能会重新考虑包含对其的支持。如果还有其他问题,请重新打开该问题。

3
@marca 是提交了那份错误报告的人。StackOverflow 的圆满闭环。 - blahdiblah

-1

这里无法做任何事情,这是一个浏览器问题,您正在链接到一个原始文件。 您真的需要在HTML文档中使用HTML5 / FLASH / JS或其他视频播放器。

这将在所有支持HTML5的浏览器中工作:

<!DOCTYPE html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <video height="250" width="320">
        <source src="http://shootitlive.s3.amazonaws.com/output.mp4" type="video/mp4" />
    </video>
</body>

问题出在mp4文件和Chrome浏览器上。请在Chrome浏览器中查看http://goo.gl/ZdYZK(加载mp4的index.html),然后从任何其他支持html5/mp4的浏览器中查看,您会发现视频文件在所有其他浏览器中都可以播放,但在Chrome中无法播放。 - marca
我的安卓Web Kit浏览器也无法加载它;) 我仍然建议嵌入它。 - bbedward
但它是嵌入式的 - goo.gl/ZdYZK(加载mp4的index.html) - marca
能否展示一下它的页面源代码?我无法看到它,因为它正在将我重定向到mp4。由于您正在使用ffmpeg,您可能需要将moov原子移到文件的前面。在flow player.org上引用了一个可以完成此操作的air应用程序。 - bbedward
我们正在使用qt-faststart来移动moov原子。我们每天转码许多视频,这些视频在我们的html5播放器(mp4)或不支持mp4/html5的浏览器中都能正常播放。但是这个视频在Chrome中失败了。我已经更新了带有控件的html5视频嵌入 - http://goo.gl/Yct2k 有什么想法吗? - marca
显示剩余4条评论

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