Как загрузить mp3 в JW Player используя Stack Overflow

Я пытаюсь загрузить mp3 в JW Player 5, используя php, чтобы получить реальный файл. Это код JavaScript для игрока:

jwplayer('mediaplayer').setup({
'flashplayer': 'player.swf',
'id': 'playerID',
'type': 'mp3',
'width': '600',
'height': '49',
'file': '/get_mp3/<?php echo $filename; ?>',
});

файл Атрибут имеет URL к функции PHP (я использую CakePHP, часть после последней / переменная, которую получает функция).

Это функция PHP:

function get_mp3($filename) {

$file_path = '/path/to/files/' .$filename. '.mp3';

header("pragma : no-cache");
header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type: audio/mpeg3");
header("Content-Disposition: inline; filename=" .$filename. ".mp3");
header("Content-Location: " .$filename. ".mp3");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file_path));
readfile($file_path);
}

Если я вызываю эту функцию через веб-браузер (например, mydomain.com/get_mp3/test_file) он предлагает загрузить нужный файл, который, кажется, показывает, что код PHP работает.

Тем не менее, когда я использую его на JW PLayer файл Атрибут не загружает ничего или показывает какую-либо ошибку.

Я пытался адаптировать то, что показано в этот ТАК вопрос, но я не мог заставить это работать, я не знаю, потому что это для видео по-другому или потому что это менструация JW PLayer 6, а у меня 5.

РЕДАКТИРОВАТЬ: проверить, если это проблема с CakePHP

Итак, проверьте, заключается ли проблема в том, что CakePHP по какой-то причине не работает с JW Player. Я поместил следующий PHP-код во внешний PHP-файл:

$filename= 'my_filename';

$file = $_SERVER['DOCUMENT_ROOT']. '/path/to/files/' .$filename. '.mp3';

header("pragma : no-cache");
header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type: audio/x-mp3");
header("Content-Disposition: inline; filename=" .$filename. ".mp3");
header("Content-Location: " .$filename. ".mp3");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile($file);

Итак, теперь file строка в объявлении JW Player выглядит следующим образом:

'file': '/get_mp3.php',

С этим все еще не работает. Если я получу доступ к get_mp3.php На странице непосредственно мне предлагается загрузить файл, поэтому снова выглядит, как работает код PHP …

РЕДАКТИРОВАТЬ 2

Итак, я нашел виновника проблемы: путь к аудиофайлу. Если я помещаю файл в корневую папку веб-сайта, и я использую переменную пути к файлу, как $file_path = $filename. '.mp3'; это работает отлично.

Проблема в том, что аудиофайлы находятся в другой папке на том же сервере, и я не могу их переместить … Как я могу изменить скрипт PHP, чтобы найти файлы по их текущему пути? Я уже пробовал с $file = '/path/to/files/' .$filename. '.mp3'; а также $file = $_SERVER['DOCUMENT_ROOT']. '/path/to/files/' .$filename. '.mp3'; но это не работает …

1

Решение

Измените тип вашего контента на («Content-Type: audio / x-mp3»);

1

Другие решения

Вот и получается, что моя проблема была в пути к файлу в скрипте PHP. Я использовал $_SERVER['DOCUMENT_ROOT'] и просто / для путей, и это не работало, но потом я понял, что перемещение файла в ту же папку, что и скрипт, будет работать. В моем случае мне все еще нужно было найти способ доступа к этим файлам из другой папки и использовать относительный путь сделал трюк. Что-то вроде:

$filename= 'my_filename';

$file = '../../../path/to/files/' .$filename. '.mp3';

header("pragma : no-cache");
header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type: audio/x-mp3");
header("Content-Disposition: inline; filename=" .$filename. ".mp3");
header("Content-Location: " .$filename. ".mp3");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile($file);
1

Так как вы используете JW5.

Под:

'file': '/get_mp3/<?php echo $filename; ?>',

Добавлять:

'provider': 'sound',
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector