Lädt...

Cloud-Speicher-Integration

Arbeiten Sie mit Cloud-Speicher-Anbietern in Python FFmpeg Video 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

Erweitern Sie die Clouds-Klasse 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 die Amazon S3-Abhängigkeit über pip installieren:

pip install boto3

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.

from ffmpeg_streaming import S3, CloudManager

logging.basicConfig(filename='streaming.log', level=logging.NOTSET, format='[%(asctime)s] %(levelname)s: %(message)s')

# siehe https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html, um Sicherheitsanmeldeinformationen zu erhalten
s3 = S3(aws_access_key_id='YOUR_KEY_ID', aws_secret_access_key='YOUR_KEY_SECRET', region_name='YOUR_REGION')

save_to_s3 = CloudManager().add(s3, bucket_name="bucket_name", folder="folder/subfolder")
# Ein Dateiname kann auch an die CloudManager-Klasse übergeben werden, um den Dateinamen zu ändern (z. B. CloudManager(filename="hls.m3u8"))

video = ffmpeg_streaming.input(s3, bucket_name="bucket_name", key="video.mp4")
# Sie können auch eine Datei von einem lokalen Pfad öffnen
                                # video = ffmpeg_streaming.input("/var/media/video.mp4")

hls = video.hls(Formats.h264())
hls.auto_generate_representations()

hls.output(clouds=save_to_s3)
# Sie können auch einen lokalen Pfad übergeben, um eine Kopie der Dateien auf Ihrem Server zu speichern
HINWEIS: Um Anmeldeinformationen zu erhalten, benötigen Sie ein AWS-Konto oder Sie können eines erstellen.
Lesen Sie das "AWS SDK for Python" 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 die Google Cloud Storage-Abhängigkeit über pip installieren:

pip install 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.

from ffmpeg_streaming import GCS, CloudManager, Formats

logging.basicConfig(filename='streaming.log', level=logging.NOTSET, format='[%(asctime)s] %(levelname)s: %(message)s')

# Erstellen Sie hier einen Dienstkontoschlüssel: https://console.cloud.google.com/apis/credentials/serviceaccountkey
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/var/keys/[YOUR-CREDENTIALS].json"
# wenn Sie unter Windows arbeiten, sollte der Pfad wie folgt aussehen: "C:\Benutzer\Benutzername\Desktop\[IHRE-ANMELDEINFORMATIONEN].json"
gcs = GCS()

save_to_gcs = CloudManager().add(gcs, bucket_name="bucket_name", folder="folder/subfolder")
# Ein Dateiname kann auch an die CloudManager-Klasse übergeben werden, um den Dateinamen zu ändern (z. B. CloudManager(filename="hls.m3u8"))

video = ffmpeg_streaming.input(gcs, bucket_name="bucket_name", object_name="video.mp4")
# Sie können auch eine Datei von einem lokalen Pfad öffnen
                                # video = ffmpeg_streaming.input("/var/media/video.mp4")

hls = video.hls(Formats.h264())
hls.auto_generate_representations()

hls.output(clouds=save_to_gcs)
# Sie können auch einen lokalen Pfad übergeben, um eine Kopie der Dateien auf Ihrem Server zu speichern
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 die Microsoft Azure Storage-Abhängigkeit über pip installieren:

pip install 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.

from ffmpeg_streaming import MAS, CloudManager

logging.basicConfig(filename='streaming.log', level=logging.NOTSET, format='[%(asctime)s] %(levelname)s: %(message)s')

# siehe https://docs.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage, um Anmeldeinformationen zu erhalten
mas = MAS(account_name='account_name', account_key='account_key')

save_to_mas = CloudManager().add(mas, container="container-name")
# Ein Dateiname kann auch an die CloudManager-Klasse übergeben werden, um den Dateinamen zu ändern (z. B. CloudManager(filename="hls.m3u8"))

video = ffmpeg_streaming.input(mas, container="container-name", blob="video.mp4")
# Sie können auch eine Datei von einem lokalen Pfad öffnen
                                # video = ffmpeg_streaming.input("/var/media/video.mp4")

hls = video.hls(Formats.h264())
hls.auto_generate_representations()

hls.output(clouds=save_to_mas)
# Sie können auch einen lokalen Pfad übergeben, um eine Kopie der Dateien auf Ihrem Server zu speichern
HINWEIS: Informationen zur Authentifizierung des Dienstes finden Sie hier.

Benutzerdefinierte Cloud

Sie können Ihre Datei in eine benutzerdefinierte Cloud hochladen. Sie können eine benutzerdefinierte Cloud erstellen, die die "Clouds"-Klasse erweitert:

from ffmpeg_streaming import Clouds

class CustomCloud(Clouds):

    def upload_directory(self, directory, **options):
        # @TODO: ein Verzeichnis in eine Cloud hochladen
        pass

    def download(self, filename=None, **options):
        # @TODO: eine Datei in einen lokalen Pfad herunterladen
        pass

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 = CustomCloud()

save_to_custom = CloudManager().add(custom, options="value")

video = ffmpeg_streaming.input(custom, option1="value1", option2="value2")
# Sie können auch eine Datei von einem lokalen Pfad öffnen
                                # video = ffmpeg_streaming.input("/var/media/video.mp4")

hls = video.hls(Formats.h264())
hls.auto_generate_representations()

hls.output(clouds=save_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:

save_to_multiple_clouds = (
    CloudManager()
        .add(s3, bucket_name="bucket-name")
        .add(gcs, bucket_name="bucket-name")
        .add(mas, container="container-name")
        .add(custom, options="value")
)

hls.output(clouds=save_to_multiple_clouds)

Es kann auch ein Pfad übergeben werden, um eine Kopie der Dateien auf Ihrem lokalen Computer zu speichern.

hls.output('/var/media/hls.m3u8', clouds=save_to_multiple_clouds)