使用 PHP CURL 下载 MP4 文件

Downloading MP4 files with PHP CURL

我正在尝试将视频从我的一台服务器下载到另一台服务器。我使用 CURL 是因为 copy() 没有从视频中下载音频。但是,CURL 下载了损坏的文件(?)并且没有。这就是我现在下载 MP4 文件的方式:

$source = "https://link.com/video.mp4";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
$data = curl_exec ($ch);
$error = curl_error($ch);
curl_close ($ch);

$destination = "video/video.mp4";
$file = fopen($destination, "wb");
fwrite($file, $data);
fclose($file);

要正确下载MP4文件有什么特别之处吗?

array(26) { ["url"]=> string(60) "https://link.com/video.mp4" ["content_type"]=> NULL ["http_code"]=> int(0) ["header_size"]=> int(0) ["request_size"]=> int(0) ["filetime"]=> int(-1) ["ssl_verify_result"]=> int(1) ["redirect_count"]=> int(0) ["total_time"]=> float(0.135745) ["namelookup_time"]=> float(8.4E-5) ["connect_time"]=> float(0.056009) ["pretransfer_time"]=> float(0) ["size_upload"]=> float(0) ["size_download"]=> float(0) ["speed_download"]=> float(0) ["speed_upload"]=> float(0) ["download_content_length"]=> float(-1) ["upload_content_length"]=> float(-1) ["starttransfer_time"]=> float(0) ["redirect_time"]=> float(0) ["redirect_url"]=> string(0) "" ["primary_ip"]=> string(13) "AN-IP :D" ["certinfo"]=> array(0) { } ["primary_port"]=> int(443) ["local_ip"]=> string(11) "192.168.0.9" ["local_port"]=> int(57478) }

您必须以二进制模式打开文件以确保文件正确保存到磁盘。

$file = fopen($destination, "wb");

也使用 fwrite 而不是 fputs

fwrite($file, $data);

检查 video.mp4 是否从浏览器正确下载。也许它正在重定向?如果是这样,请添加此选项。

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

如果仍然无效,则转储此信息并post它。

var_dump(curl_getinfo($ch));