我有一个使用多台服务器的站点——主服务器、数据库、图像、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?