Arbeiten Sie mit Cloud-Speicher-Anbietern in PHP FFmpeg Streaming
Integration mit S3, Google Cloud, Azure und benutzerdefinierten Anbietern
Sie können eine Datei aus einer Cloud (oder anderen Ressourcen) öffnen und gepackte Dateien in einer Cloud (Clouds) speichern. Diese Optionen sind nur für VOD gültig (es unterstützt kein Live-Streaming).
Objektspeicher über eine Webdienst-Schnittstelle
RESTful Online-Dateispeicher-Webdienst
Microsofts Cloud-Speicherlösung für moderne Datenspeicherung
Implementieren Sie CloudInterface für Ihren benutzerdefinierten Anbieter
Amazon S3 oder Amazon Simple Storage Service ist ein Dienst von Amazon Web Services (AWS), der Objektspeicher über eine Webdienst-Schnittstelle bereitstellt. Amazon S3 verwendet dieselbe skalierbare Speicherinfrastruktur, die Amazon.com für den Betrieb seines globalen E-Commerce-Netzwerks nutzt. Amazon S3 kann zum Speichern von Objekten jeder Art verwendet werden, was Anwendungen wie Speicher für Internetanwendungen, Sicherung und Wiederherstellung, Notfallwiederherstellung, Datenarchive, Data Lakes für Analysen und Hybrid-Cloud-Speicher ermöglicht. AWS startete Amazon S3 am 14. März 2006 in den USA, dann im November 2007 in Europa. Mehr erfahren
Zuerst müssen Sie das AWS SDK über Composer installieren:
composer require aws/aws-sdk-php
Nach der Installation des Pakets können Sie den folgenden Code verwenden, um eine Datei aus der Cloud zu öffnen und gepackte Dateien darin zu speichern.
// siehe https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html, um Sicherheitsanmeldeinformationen zu erhalten
$config = [
'version' => 'latest',
'region' => 'us-west-1', // die Region Ihres Cloud-Servers
'credentials' => [
'key' => 'access-key-id', // der Schlüssel, um Sie auf dem Server zu autorisieren
'secret' => 'secret-access-key', // das Geheimnis, um auf die Cloud zuzugreifen
]
];
$s3 = new Streaming\Clouds\S3($config);
$from_s3 = [
'cloud' => $s3,
'options' => [
'Bucket' => 'bucket-name', // Name Ihres Buckets
'Key' => 'videos/video.mp4' // Ihr Dateiname in der Cloud
]
];
$to_s3 = [
'cloud' => $s3,
'options' => [
'dest' => 's3://bucket-name/flder/subfolder', // Name Ihres Buckets und Pfad zum Inhaltsordner
'filename' => 'hls.m3u8' // Name Ihrer Datei in der Cloud
]
];
$ffmpeg = Streaming\FFMpeg::create();
$video = $ffmpeg->openFromCloud($from_s3);
// Sie können auch die open-Methode verwenden, um eine Datei von einem lokalen Pfad zu öffnen
// $video = $ffmpeg->open('/var/media/video.mp4');
$video->hls()
->x264()
->autoGenerateRepresentations()
->save(null, $to_s3); // Ein Pfad kann ebenfalls übergeben werden (z. B. save('/var/media/hls.m3u8', $to_s3))
Google Cloud Storage ist ein RESTful Online-Dateispeicher-Webdienst zum Speichern und Zugreifen auf Daten in der Google Cloud Platform-Infrastruktur. Der Dienst kombiniert die Leistung und Skalierbarkeit von Googles Cloud mit erweiterten Sicherheits- und Freigabefunktionen. Es handelt sich um eine Infrastructure as a Service (IaaS), vergleichbar mit dem Amazon S3 Online-Speicherdienst. Im Gegensatz zu Google Drive und gemäß unterschiedlichen Dienstspezifikationen scheint Google Cloud Storage für Unternehmen besser geeignet zu sein. Mehr erfahren
Zuerst müssen Sie Google Cloud Storage über Composer installieren:
composer require google/cloud-storage
Nach der Installation des Pakets können Sie den folgenden Code verwenden, um eine Datei aus der Cloud zu öffnen und gepackte Dateien darin zu speichern.
// Erstellen Sie hier einen Dienstkontoschlüssel: https://console.cloud.google.com/apis/credentials/serviceaccountkey
$gcs = new \Streaming\Clouds\GoogleCloudStorage(['keyFilePath' => '/path/to/credentials.json']);
// Alternativ können Sie sich durch Setzen der Umgebungsvariable authentifizieren. Siehe https://cloud.google.com/docs/authentication/production#auth-cloud-implicit-php
$from_gcs = [
'cloud' => $gcs,
'options' => [
'bucket' => 'bucket-name', // Name des Buckets
'object_name' => 'video.mp4' // Ihr Dateiname in der Cloud
]
];
$to_gcs = [
'cloud' => $gcs,
'options' => [
'bucket' => 'bucket_name', // Name Ihres Buckets
'filename' => 'folder/subfolder/hls.m3u8' // ein Pfad, um Dateien in Ihrer Cloud zu speichern
]
];
$ffmpeg = Streaming\FFMpeg::create();
$video = $ffmpeg->openFromCloud($from_gcs);
// Sie können auch die open-Methode verwenden, um eine Datei von einem lokalen Pfad zu öffnen
// $video = $ffmpeg->open('/var/media/video.mp4');
$video->hls()
->x264()
->autoGenerateRepresentations()
->save(null, $to_gcs); // Ein Pfad kann ebenfalls übergeben werden (z. B. save('/var/media/hls.m3u8', $to_gcs))
Azure Storage ist Microsofts Cloud-Speicherlösung für moderne Datenspeicherszenarien. Azure Storage bietet einen massiv skalierbaren Objektspeicher für Datenobjekte, einen Dateisystemdienst für die Cloud, einen Nachrichtenspeicher für zuverlässige Nachrichtenübermittlung und einen NoSQL-Speicher. Mehr erfahren
Zuerst müssen Sie Microsoft Azure Storage über Composer installieren:
composer require microsoft/azure-storage-blob
Nach der Installation des Pakets können Sie den folgenden Code verwenden, um eine Datei aus der Cloud zu öffnen und gepackte Dateien darin zu speichern.
$mas = new Streaming\Clouds\MicrosoftAzure('DefaultEndpointsProtocol=https;AccountName=>>>yourAccount<<<;AccountKey=>>>yourKey<<<');
$from_mas = [
'cloud' => $mas,
'options' => [
'container' => 'container-name', // Name des Containers
'blob' => 'video.mp4' // Ihr Dateiname in der Cloud
]
];
$to_mas = [
'cloud' => $mas,
'options' => ['container' => 'container-name'] // Name des Containers
];
$ffmpeg = Streaming\FFMpeg::create();
$video = $ffmpeg->openFromCloud($from_mas);
// Sie können auch die open-Methode verwenden, um eine Datei von einem lokalen Pfad zu öffnen
// $video = $ffmpeg->open('/var/media/video.mp4');
$video->hls()
->x264()
->autoGenerateRepresentations()
->save(null, $to_mas); // Ein Pfad kann ebenfalls übergeben werden (z. B. save('/var/media/hls.m3u8', $to_mas))
Sie können eine benutzerdefinierte Cloud erstellen, die die \Streaming\Clouds\CloudInterface
implementiert:
class CustomCloud implements \Streaming\Clouds\CloudInterface
{
/**
* Upload a entire directory to a cloud
* @param string $dir
* @param array $options
*/
public function uploadDirectory(string $dir, array $options): void
{
// TODO: uploadDirectory()-Methode implementieren.
}
/**
* Download a file from a cloud
* @param string $save_to
* @param array $options
*/
public function download(string $save_to, array $options): void
{
// TODO: download()-Methode implementieren.
}
}
Nachdem Sie Ihre eigene Cloud-Klasse erstellt haben, können Sie den folgenden Code verwenden, um eine Datei aus Ihrer benutzerdefinierten Cloud zu öffnen und gepackte Dateien darin zu speichern.
$custom = new CustomCloud();
$from_custom = [
'cloud' => $custom,
'options' => [...] //dieses Array wird an die `download`-Methode in der `CustomCloud`-Klasse übergeben.
];
$to_custom = [
'cloud' => $custom,
'options' => [...] //dieses Array wird an die `upload`-Methode in der `CustomCloud`-Klasse übergeben.
];
$ffmpeg = Streaming\FFMpeg::create();
$video = $ffmpeg->openFromCloud($from_custom);
// Sie können auch die open-Methode verwenden, um eine Datei von einem lokalen Pfad zu öffnen
// $video = $ffmpeg->open('/var/media/video.mp4');
$video->hls()
->x264()
->autoGenerateRepresentations()
->save(null, $to_custom); // Sie können auch einen lokalen Pfad übergeben, um eine Kopie der Dateien auf Ihrem Server zu speichern
Sie können Ihre Dateien in mehreren Clouds speichern:
$dash->save(null, [$to_s3, $to_gcs, $to_mas, $to_custom]);
Es kann auch ein Pfad übergeben werden, um eine Kopie der Dateien auf Ihrem lokalen Computer zu speichern.
$hls->save('/var/media/hls.m3u8', [$to_gsc, $to_custom]);