PHP流非常大的视频(>4 GB)问题

本教程将介绍PHP流非常大的视频(>4 GB)问题的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

PHP流非常大的视频(>4 GB)问题 教程 第1张

问题描述

我正在尝试使用8MB块播放长视频(4 GB+),但它不起作用。直到2 GB大小的视频看起来一切都很好,但是对于非常大的视频大小就有问题了。我是否需要在PHP、Apache端进行优化,或者需要在下面的脚本中进行任何更新以支持非常大的视频?

<?php
require 'awss3/vendor/autoload.php';
use AwsS3S3Client;use AwsExceptionAwsException;

$objectkey = '<VIDEO>.mp4'; 

$buffer = '';
$bucketname = '<BUCKETNAME>';
$key = '<KEY>';
$secret = '<SECRET_KEY>';
$region = '<REGION>';

$s3 = new S3Client([
 'region' => $region,
 'version' => 'latest',
 'credentials' => [
  'key' => $key,
  'secret' => $secret,
 ]
]);

$s3->registerStreamWrapper();


$context = stream_context_create(array(
 's3' => array(
  'seekable' => true
 )
));

// get the file's mime type to send the correct content type header
$path = "s3://$bucketname/$objectkey";

header('HTTP/1.0 200 OK');
header("Content-Type: video/mp4");
header('Accept-Ranges: bytes');

$options = array(
 "ssl" => array(
  "verify_peer" => false,
  "verify_peer_name" => false,
 ),
);

$context = stream_context_create($options);
$handle = fopen($path, 'rb', false, $context);

$chunkSize = 1024 * 1024 * 8;
$buffer = '';

ob_start();
while (!feof($handle)) {
 $buffer = fread($handle, $chunkSize);
 echo $buffer;
 ob_flush();
 flush();
}
fclose($handle);
exit;

php>推荐答案

不需要通过您的php应用程序代理此数据。

只需签署一个S3URL,并让您的客户端直接从S3加载数据即可。这样,您的服务器完全没有负载,也不会浪费带宽。

好了关于PHP流非常大的视频(&gt;4 GB)问题的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。