我工作的应用程序的一个用户有一个问题,她上传的所有视频都不能在 HTML5 视频播放器中运行,iOS 的 Edge 和 Safari 除外(如果它可以在那里运行,我认为它可以运行)在其他浏览器中)
视频可以在我们的 react-native 应用中播放或下载后播放,但不能直接使用 S3 或 cloudfront 链接
由于来自其他用户的 vieos 工作正常,我假设它与加密和 S3 规范有关,有没有人遇到过这个问题并找到了解决方案?
答案 0 :(得分:2)
由于来自其他用户的视频工作正常,我假设它与加密和/或 S3 规范有关...
不,问题不在于加密或 S3 服务器问题。
您的 MP4 容器包含 HEVC 格式(又名 H.265)的视频,Chrome 或 Firefox 不支持。由于支持 AAC 音频,您应该仍然可以听到声音部分。
使用 React-Native 和其他(本机)视频播放器可以播放视频,因为它们依赖于运行播放器应用程序的操作系统来解码视频。如果浏览器品牌未购买 HEVC 许可,则该浏览器无法播放。
解决方案:
将此类视频重新编码为包含带有 AAC 音频的 H.264(...不是带有 AAC 的 H.265)的 MP4。
重新编码需要时间,但这是目前唯一的方法。用户在上传之前执行此操作,或者您自己的应用程序接受任何文件并在服务器端重新编码“不支持”的文件(例如: 使用 FFmpeg 或 GStreamer 工具)。