簡體   English   中英

從PHP腳本獲取音頻文件時,更改JavaScript音頻對象的當前時間

[英]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屬性。

http://www.w3schools.com/tags/av_event_canplay.asp

發布此問題后不久,我找到了解決問題的方法。 為了使腳本正常工作,您將需要添加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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM