Lädt...

PHP Cloud-Speicher-Integration

Arbeiten Sie mit Cloud-Speicher-Anbietern in PHP FFmpeg Streaming

Cloud-Speicher

Integration mit S3, Google Cloud, Azure und benutzerdefinierten Anbietern

Übersicht

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).

Amazon S3

Objektspeicher über eine Webdienst-Schnittstelle

Google Cloud

RESTful Online-Dateispeicher-Webdienst

Azure Storage

Microsofts Cloud-Speicherlösung für moderne Datenspeicherung

Benutzerdefinierte Cloud

Implementieren Sie CloudInterface für Ihren benutzerdefinierten Anbieter

Amazon S3

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

Installation

Zuerst müssen Sie das AWS SDK über Composer installieren:

composer require aws/aws-sdk-php

Verwendung

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))
HINWEIS: Um Anmeldeinformationen zu erhalten, benötigen Sie ein AWS-Konto oder Sie können eines erstellen.
Lesen Sie das "AWS SDK for PHP" Dokument hier für weitere Informationen.

Google Cloud Storage

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

Installation

Zuerst müssen Sie Google Cloud Storage über Composer installieren:

composer require google/cloud-storage

Verwendung

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))
HINWEIS: Um Anmeldeinformationen zu erhalten, lesen Sie die Cloud Storage-Authentifizierung hier oder Sie können sie direkt erstellen (Wählen Sie die Option "Dienstkontoschlüssel").

Microsoft Azure Storage

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

Installation

Zuerst müssen Sie Microsoft Azure Storage über Composer installieren:

composer require microsoft/azure-storage-blob

Verwendung

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))
HINWEIS: Informationen zur Authentifizierung des Dienstes finden Sie hier.

Benutzerdefinierte Cloud

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.
    }
}

Verwendung

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

Speichern in mehreren Clouds

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]);