Я задаю этот вопрос, потому что я нашел это невозможным, насколько мои знания стоят. Однако я считаю, что здесь на stackoverflow посещает много гениальных людей, так что, возможно, кто-то может дать хороший совет / трюк.
Моя проблема в том, что я загружаю аудио / mp4-файл YouTube, размещенный на сервере googlevideo.com.
Мой PHP-код для этой цели:
$ mp3path — это URL видео
header('Content-Description: File Transfer');
if(strpos($mp3path, "https://") === false) {
header('Content-length: ' . size($mp3path)); //size is custom function
}
header("Content-Type: audio/MP4A-LATM, audio/MP4A, audio/m4a, audio/mp4, audio/mp4a, audio/mp4-audio, audio/mpeg");
header('Content-Type: application/force-download');
header("Accept-Ranges: bytes");
header('Content-Transfer-Encoding: binary');
header('Content-disposition: attachment; filename="'.$title.'.mp3"');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header("Cache-Control: private", false);
header('Pragma: no-cache');
readfile($mp3path);
exit;
Я могу скачать этот аудиофайл, но немногие mp3-плееры не могут его воспроизвести, когда я провел некоторые исследования с использованием mp3val [mp3val.sourceforge.net]. Я обнаружил, что этот файл не содержит частоту дискретизации, битрейт или некоторые другие необходимые кодеки внутри файла.
Ошибка от mp3val: неизвестный формат файла
Я знаю один из возможных способов сделать это, это ffmpeg, но я ищу менее трудоемкий вариант, потому что сначала ffmpeg скачивает весь файл, а затем конвертирует его в mp3 и сохраняет на сервере. Это занимает много времени.
Я ищу простое решение, в котором я не хочу сохранять весь файл на моем сервере. Я хочу вызвать этот файл с удаленного сервера и хочу добавить частоту дискретизации, битрейт в файл, а затем просто как-то с php, я хочу начать загрузку в браузере.
Все, что я хочу сказать, мне нужно более быстрое решение. Я видел конвертер 2 yt в mp3, они делают то же самое, давая мгновенную загрузку. я не знаю как?
Пожалуйста, если вы считаете это глупым вопросом или невозможным, не сообщайте в stackoverflow. Я пытаюсь понять это, поэтому я задаю этот вопрос здесь. Я надеюсь, вы поймете мое любопытство.
Спасибо,
Задача ещё не решена.
Других решений пока нет …