[英]Changing The Current Time of a JavaScript Audio Object, When Getting the audio file from a PHP script
我已經構建了一個PHP腳本,可以在public_html目錄之外發送* .MP3文件形式,它可以正常工作並發送文件。 問題是我有一個JavaScript腳本,該腳本應該更改音頻文件的當前時間( audioFile.currentTime = 25
;)。 當我這樣做時(從public_html目錄中獲取文件),它的工作原理是:
// JavaScript:
var audioFile = new Audio("https://www.website.com/files/audioFile.mp3");
audioFile.play();
audioFile.currentTime = 15;
但是,當我嘗試從以下PHP腳本獲取文件時,它將發送文件OK。 但是,我無法使用JavaScript更改“ currentTime”
<?php
// This PHP file is public www.website.com/getAudioFile.php/
$fileLocation = "../audioFiles/audioFile.mp3";
if (file_exists($fileLocation))
{
header('Content-type: audio/mpeg');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
readfile($file);
}
?>
這是我嘗試更改音頻文件currentTime的JavaScript:
<script>
var audioFile = new Audio("www.website.com/getAudioFile.php");
audioFile.play();
audioFile.currentTime = 15;
</script>
每次我使用object.currentTime = 15
,音頻文件都會從頭開始播放。
如果有人知道我應該發送什么標題或我應該做的其他事情,請讓我知道如何解決我的問題。
也許您應該綁定Audio組件的canplay事件,並在此回調中設置currentTime屬性。
發布此問題后不久,我找到了解決問題的方法。 為了使腳本正常工作,您將需要添加header('Accept-Ranges: bytes');
像這樣:
<?php
// This PHP file is public www.website.com/getAudioFile.php/
$fileLocation = "../audioFiles/audioFile.mp3";
if (file_exists($fileLocation))
{
header('Content-type: audio/mpeg');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header('Content-Length: ' . filesize($file));
readfile($file);
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.