chrome网页视频抓取( 谷歌浏览器仅支持H264编码,但是视频流的编码可能不一样)

优采云 发布时间: 2021-12-14 20:25

  chrome网页视频抓取(

谷歌浏览器仅支持H264编码,但是视频流的编码可能不一样)

  某些 MP4 视频无法在 Google Chrome 中播放

  本质上,html 使用标签来播放视频,我相信大多数浏览器都支持。

  但是我今天遇到了一个问题。我在APP上拍了两个视频,一个可以播放,另一个失败。

  排除服务器和文件存储服务器的问题。怀疑是前端代码写错了。疑似网速受限,视频被截断。

  没想到,原来是mp4视频流格式问题,谷歌浏览器不支持。

  mp4都是mp4,但这只是让操作系统识别哪些应用程序可以播放。实际内容取决于视频流的格式或编码,但视频流的编码可能不同。

  据说谷歌浏览器只支持H264编码,因为支持视频编码需要专利费,所以只支持这个。

  原因

  由于之前的文章文章已经基本查清了服务器的原因,这次还是发现视频播放失败,所以重点放在了前端和网络上。

  通过控制台发现视频数据已经取到了,但是仍然显示“播放失败”。

  怀疑:

  第一点是从日志来看,没有看到错误日志;

  第二点是从前端控制台检查,发现传输完成;

  三、 第四(PS:因为前端人手不足所以做了原来的改动)因为经验有限,请前端*敏*感*词*姐帮忙查一下。

  找方向

  但是前台*敏*感*词*很忙,不能坐等死。决定继续考虑。

  怀疑是视频问题,直接通过url下载视频。下载到本地就可以正常播放了,说明视频本身是完整的。

  所以我写了一个tag-only html,写了视频源,分别用edge和google打开。

  

Sorry, your browser doesn't support embedded videos.

  原来edge可以正常播放,google却不能。那只能是视频本身的问题。

  找到方向后,启动google(这个google不是别的google)。发现经常有这样的问题,结论是谷歌只支持h264。

  视频格式和编码

  相关介绍见文章:Chrome使用视频无法正常播放MP4视频的解决方法-Yellow_ice-博客园()

  验证猜想

  既然怀疑是视频编码问题,需要验证一下。如何查看视频的编码?我不能直接看到它。

  这里需要用到ffmpeg软件。

  从官网下载解压后,将“安装目录/bin”写入系统变量Path。

  ffmpeg -i 0b9a8a522ae84fa69e15068cbf044c1e.mp4

  无法播放的视频输出 hevc(别名 H265):

  

  可以播放的输出是h264:

  

  验证解决方案

  用这个软件把hevc转成264扔到OBS服务器上,确认能不能正常播放。

  结论自然是可以的。

  综上所述

  结论是视频拍摄完成后APP端存储的编码有误。因为这次拍摄的是第二个视频,所以和上一个不同。一个是h264可以播放,一个是hevc不能播放。

  请在前端更改视频编码,应该没问题。

  无底线

  如果无法解析,否则OBS服务器会自动转码。

  然后服务器需要在拉取视频后进行转码。

  目前google了一下,发现有两种说法:

  其实这两种方法本质上是一样的。前者需要您自己在服务器或本地计算机上安装软件。后者不如前者灵活,但可以直接使用。

  因为本质是调用ffmpeg,所以视频流必须保存在服务器上,代表的是File文件。

  因此,原创文件和转换后的文件需要经过内存、服务器,然后才能删除,占用内存和时间。

  所以尽量统一编码格式。

  该工具包是:GitHub-a-schild/jave2:JAVE(Java 音频视频编码器)库是 ffmpeg 项目上的 Java 包装器

  参考链接

  Chrome无法正常使用视频播放MP4视频-Yellow_ice-博客园()

  GitHub-a-schild/jave2: JAVE(Java 音频视频编码器)库是 ffmpeg 项目上的 Java 包装器

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线