У меня есть следующий URL-адрес от YouTube:
https://r4---sn-gwpa-a3vl.googlevideo.com/videoplayback?itag=140&ei=W12aWtqEKY6d1gLtxrCIDQ&requiressl=yes&keepalive=yes&fvip=4&ipbits=0&pl=36&key=cms1&mime=audio%2Fmp4&lmt=1514440019010993&expire=1520087483&c=WEB&source=youtube&clen=1849657&ip=2a02%3Ac207%3A2016%3A2180%3A%3A1&gir=yes&signature=02253C6FF1B66649D5830E55415CE3ED216A3D24.6489003335D2F1ECCE7DD85F767A12A78FF20935&sparams=clen,dur,ei,expire,gir,id,initcwndbps,ip,ipbits,ipbypass,itag,keepalive,lmt,mime,mip,mm,mn,ms,mv,pl,requiressl,source&id=o-AOjAGDxOAog_lYGvNSG5lhiJhh-tcLbQ9Onr7w9eY3CB&dur=116.401&ratebypass=yes&redirect_counter=1&rm=sn-4g5e6r7z&req_id=5a55cbbe03daa3ee&cms_redirect=yes&ipbypass=yes&mip=2405:204:a509:abdb:8c40:a522:92dd:334a&mm=31&mn=sn-gwpa-a3vl&ms=au&mt=1520065776&mv=m
Я могу открыть это прямо в своем браузере и сохранить как файл m4a, а затем воспроизвести через Windows Media Player.
Но если я пытаюсь скачать его через php, используя заголовки и т.д., файл все еще загружается, но я получаю ошибку при попытке воспроизвести его на Windows Media Player.
Ошибка:
Проигрыватель Windows Media не может воспроизвести файл. Проигрыватель может не поддерживать тип файла или может не поддерживать кодек, который использовался для сжатия файла.
Как я могу получить размер файла в байтах, и это заголовок, который я использую сейчас:
header('Content-Description: File Transfer');
header('accept-ranges: bytes');
header('Content-length: ' . $size);
header("Content-Range: 0-".($size-1)."/".$size);
header("Content-Type: audio/mp4");
header("Connection: keep-alive");
header('Content-Type: application/force-download');
header('Content-Transfer-Encoding: chunked');
header('Content-disposition: attachment; filename="'.$title.'.m4a"');
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); // URL of youtube video in M4A
exit;
Просто внося некоторые изменения, этот код работает с mp3-файлом на моем сервере без каких-либо проблем, но мне нужно загрузить удаленный файл m4a / mp4 [Audio only] с моего сервера.
Замечания: Когда я проверил оба файла, непосредственно загруженные & скачать через php.
Я обнаружил одно отличие в свойстве файлов, которое заключается в том, что Файл, загруженный через мой php-код, не содержит деталей, связанных с битрейтом / длиной.
А с другой стороны, прямой загруженный файл через браузер также содержит значение скорости передачи данных 0 кбит / с и длину.
Может быть, я что-то упустил, но не знаю что?
Кто-нибудь может мне помочь?
Ваш код верен, но будет работать только с аудио-> аудиофайлами.
Но, как вы сказали, что вы хотите загрузить звуковую дорожку из видеофайлов mp4, возможно, есть несколько патчей для них, но это не будет оптимальным вариантом.
Я хотел бы предложить вам использовать «FFMPEG» для тех же целей, что и в случае, когда мы имеем дело с преобразованием видео в аудио, мы должны сохранять информацию о кодеках (частоту дискретизации, битрейт) и т. Д.
FFMPEG будет оптимальным решением для таких операций.
Спасибо 🙂
Других решений пока нет …