Highwinds SMIL-Leitfaden

Highwinds ist ein schnelles CDN, das eine breite Palette von Lösungen bietet, einschließlich adaptivem Streaming von Videos. Um die Verwendung der adaptiven Streaming-Integration von Highwinds zu erleichtern, haben wir eine Methode zur Erzeugung von SMIL-Dateien hinzugefügt.

Überblick

LÄCHELN Dateien sind XML-Dokumente in einem speziellen Format, die zur Beschreibung von Multimedia-Präsentationen verwendet werden. Highwinds verwendet eine Teilmenge von SMIL, um adaptives Streaming zu ermöglichen.

SMIL und Zencoder

Das folgende Beispiel zeigt eine Highwinds SMIL-Datei, die ein Video beschreibt, das mit mehreren Bitraten codiert wurde. Alle angegebenen Pfade ("src") beziehen sich auf den Ort, an dem das SMIL bereitgestellt wird, und alle Bitraten ("System-Bitrate") sind in Bits pro Sekunde (bps) angegeben.


<smil>
<head>
</head>
<body>
<switch>
<video src="mp4:rel/path/file-440k.mp4"
system-bitrate="440000" width="720" height="406" />
<video src="mp4:rel/path/file-640k.mp4"
system-bitrate="640000" width="854" height="480" />
<video src="mp4:rel/path/file-240k.mp4"
system-bitrate="240000" width="640" height="360" />
<video src="mp4:rel/path/file-150k.mp4"
system-bitrate="150000" width="320" height="180" />
<video src="mp4:rel/path/file-64k.mp4"
system-bitrate="64000"/>
</switch>
</body>
</smil>

Jeder <video> Das Tag im obigen Beispiel stellt einen separaten Stream dar, der dem Benutzer bereitgestellt werden kann. Das erste aufgelistete Video wird an den Benutzer gestreamt, bis die verfügbare Bandbreite bestimmt werden kann. Zu diesem Zeitpunkt wird der Benutzer auf den entsprechenden Stream umgeschaltet.

Das Erstellen einer Highwinds SMIL-Wiedergabeliste mit Zencoder ist einfach.


{
    "api_key": "asdf1234",
    "input": "s3://my-bucket/input/file.mov",
    "outputs": [
    {
        "type": "playlist",
        "format": "highwinds",
        "url": "s3://my-bucket/output/file.smil",
        "streams": [
        {
            "path": "rel/path/file-440k.mp4",
            "bandwidth": "440",
            "width": 720,
            "height": 406
        },
        {
            "path": "rel/path/file-640k.mp4",
            "bandwidth": "640",
            "width": 854,
            "height": 480
        },
        {
            "path": "rel/path/file-240k.mp4",
            "bandwidth": "240",
            "width": 640,
            "height": 360
        },
        {
            "path": "rel/path/file-150k.mp4",
            "bandwidth": "150",
            "width": 320,
            "height": 180
        },
        {
            "path": "rel/path/file-64k.mp4",
            "bandwidth": "64"
        }
        ]
    }
    ]
}

Wenn Sie dies tun, müssen Sie auch eine Ausgabe ohne Wiedergabeliste einfügen.

  • "Typ" sollte "Wiedergabeliste" sein
  • "Format" sollte "Highwinds" sein
  • "url" (oder "Dateiname") sollte die Erweiterung "smil" haben.
  • "Streams" sollten ein Array von JSON-Objekten sein, die jeweils die Schlüssel "Bandbreite" und "Pfad" haben.
    • "Pfad" sollte der relative Pfad zur mp4-Datei sein, da dieser von Ihrem Server bereitgestellt wird (beachten Sie, dass er nicht das führende "mp4:" enthält, das in der SMIL-Datei angezeigt wird).
    • "Bandbreite" sollte die Bitrate der Datei in KBit / s sein, die beim Erstellen der SMIL-Datei in Bit / s konvertiert wird
    • "width" ist optional und sollte die horizontale Auflösung der Datei angeben
    • "height" ist optional und sollte die vertikale Auflösung der Datei angeben

Die Videos, auf die in der Wiedergabeliste verwiesen wird, können separat von dem Job erstellt werden, der die Wiedergabeliste generiert, oder sie können als zusätzliche Ausgaben für denselben Job erstellt werden.

Das ganze Bild

In der Wiedergabeliste können mehrere Ausgänge mit unterschiedlichen Bitraten angegeben und referenziert werden.

{
    "api_key": "1234abcd",
    "input": "http://example.com/file.mp4",
    "output": [
    {
        "audio_bitrate": 56,
        "audio_sample_rate": 22050,
        "base_url": "s3://my-bucket/",
        "filename": "file-64k.mp4",
        "format": "aac",
        "public": 1
    },
    {
        "audio_bitrate": 56,
        "audio_sample_rate": 22050,
        "base_url": "s3://my-bucket/",
        "decoder_bitrate_cap": 165,
        "decoder_buffer_size": 440,
        "filename": "file-150k.mp4",
        "max_frame_rate": 10,
        "public": 1,
        "video_bitrate": 110,
        "width": 320
    },
    {
        "audio_bitrate": 56,
        "audio_sample_rate": 22050,
        "base_url": "s3://my-bucket/",
        "decoder_bitrate_cap": 300,
        "decoder_buffer_size": 800,
        "filename": "file-240k.mp4",
        "max_frame_rate": 15,
        "public": 1,
        "video_bitrate": 200,
        "width": 640
    },
    {
        "audio_bitrate": 56,
        "audio_sample_rate": 22050,
        "base_url": "s3://my-bucket/",
        "decoder_bitrate_cap": 600,
        "decoder_buffer_size": 1600,
        "filename": "file-440k.mp4",
        "max_frame_rate": 30,
        "public": 1,
        "video_bitrate": 400,
        "width": 720
    },
    {
        "audio_bitrate": 56,
        "audio_sample_rate": 22050,
        "base_url": "s3://my-bucket/",
        "decoder_bitrate_cap": 900,
        "decoder_buffer_size": 2400,
        "filename": "file-640k.mp4",
        "max_frame_rate": 30,
        "public": 1,
        "video_bitrate": 600,
        "width": 854
    },
    {
        "type": "playlist",
        "format": "highwinds",
        "url": "s3://my-bucket/file.smil",
        "streams": [
        {
            "path": "file-440k.mp4",
            "bandwidth": "440",
            "width": 720,
            "height": 406
        },
        {
            "path": "file-640k.mp4",
            "bandwidth": "640",
            "width": 854,
            "height": 480
        },
        {
            "path": "file-240k.mp4",
            "bandwidth": "240",
            "width": 640,
            "height": 360
        },
        {
            "path": "file-150k.mp4",
            "bandwidth": "150",
            "width": 320,
            "height": 180
        },
        {
            "path": "file-64k.mp4",
            "bandwidth": "64"
        }
        ]
    }
    ]
}

ANMERKUNGEN

  • Die Wiedergabelistengenerierung verwendet derzeit keine Informationen aus den anderen Ausgaben im Job, sondern ist lediglich eine Möglichkeit, auf einfache Weise eine korrekt formatierte Wiedergabeliste mit adaptiver Bitrate zu erstellen und zusammen mit den anderen Dateien hochladen zu lassen.
  • decoder_bitrate_cap ist auf das 1,5-fache der Zielbitrate der Datei eingestellt. decoder_buffer_size ist auf das 3,5-fache bis 5-fache der Zielbitrate der Datei eingestellt. Diese Einstellungen tragen dazu bei, eine konsistente Bitrate in der gesamten Datei beizubehalten, sodass die segmentierten Segmente in Größe und Bitrate nicht zu stark variieren.