如何在动态创建 mp4 文件时防止出现 416 和 206

如何在动态创建 mp4 文件时防止出现 416 和 206

我有一个使用多台服务器的站点——主服务器、数据库、图像、ffmpeg/视频文件。

主服务器使用 wordpress,它有一个前端表单,用户可以使用它创建帖子。他们可以选择选项组合并上传图片,使用我的 php ffmpeg 脚本创建 mp4 视频。

我正在使用 ajax 脚本动态地执行操作而无需重新加载页面。

success: function(data) {
            $("#video-preview")[0].pause();
            $("#video-preview")[0].load();
        },

为了在我的 php 页面上显示视频,我必须——

 <video id="video-preview" class="video-element" preload="metadata"><source src="video.mp4"></video>

我的主服务器的 php 脚本在视频服务器上执行 ffmpeg 命令。

$cmd = '/usr/local/bin/ffmpeg -threads 1 -i '.$musicpath .'/'.$music.'.mp3 -y '.$output.' 2>&1';

然后 ffmpeg 创建 mp4 文件并将其保存到视频服务器。

当 ajax 回调成功时,我主服务器上的页面会尝试从视频服务器加载 mp4 文件。

一半的时间里一切都运行正常。而另一半的时间里,我必须多次重新加载页面才能加载正确的文件。

当这种情况发生时,我得到的要么是-

GET https://myvideoserver.com/videoposts/772/9900/output-9900.mp4 416 (Requested Range Not Satisfiable)错误

和/或

GET https://myvideoserver.com/videoposts/772/9900/output-9900.mp4 net::ERR_CONNECTION_RESET 206 (Partial Content)错误。这很奇怪,因为当我检查创建的文件时,它们都没有问题。

我认为这与延迟有关,或者因为每当用户运行该文件/帖子的脚本时,mp4 文件都会不断被编辑和重新创建。这可能会导致在尝试使用 ajax 再次加载新文件时读取文件时出现一些延迟。

我不确定,但我已经搜索了 416 错误,并按照一些建议使用

Header set Accept-Ranges none
RequestHeader unset Range

在我的 htaccess 文件中,但它导致我的网站崩溃。

不断修改mp4文件然后动态加载时如何避免遇到416/206?

相关内容