HLS mit fragmentiertem MP4

Bitte beziehen Sie sich auf HLS-Streaming und Wiedergabelisten für weitere Details zu ts-Ausgängen und Wiedergabelisten. Verwenden Sie, um fragmentierte MP4-Dateien mit HLS-Ausgaben auszuwählen "format": "m4f" und "streaming_delivery_format": "hls". Wir empfehlen dringend "byte_range_segmenting": true, das Medium als eine einzelne fragmentierte MP4-Datei zu formatieren, anstatt separate Segmentdateien zu haben.
{
  "skip_audio": true,
  "base_url": "s3://my-bucket/",
  "decoder_bitrate_cap": 900,
  "decoder_buffer_size": 2400,
  "filename": "file-640k.m3u8",
  "max_frame_rate": 30,
  "public": 1,
  "type": "segmented",
  "video_bitrate": 600,
  "width": 400,
  "format": "m4f",
  "streaming_delivery_format" : "hls",
  "byte_range_segmenting" : "true",
  "max_hls_protocol_version" : 7
}

Verschlüsselung

Zencoder unterstützt auch die Generierung von CBCS-verschlüsselten fragmentierten MP4-, HLS-Ausgängen mit notwendigen Headern für die Integration in Fairplay DRM. Geben Sie für jede Ausgabe an Verschlüsselung Optionen. Sobald Sie diese Schlüssel haben, lautet die Zencoder-API-Struktur für eine einzelne Wiedergabe:

{
  "input": "http://s3.amazonaws.com/zencodertesting/test.mov",
  "outputs": [
    {
      "skip_audio": true,
      "base_url": "s3://my-bucket/",
      "decoder_bitrate_cap": 900,
      "decoder_buffer_size": 2400,
      "filename": "file-640k.m3u8",
      "max_frame_rate": 30,
      "public": 1,
      "type": "segmented",
      "video_bitrate": 600,
      "width": 400,
      "format": "m4f",
      "streaming_delivery_format" : "hls",
      "max_hls_protocol_version" : 7,
      "byte_range_segmenting" : "true",
      "drm_method" : "fairplay",
      "encryption_method": "cbcs",
      "encryption_key_url":"http://example.com/encryption.key",
      "encryption_key": "a5f6a7d6ef5d6a7a02a23dd35dd56a63",
      "encryption_iv" : "6345216ef5d6a7a02a23dd35d456987"
    }
  ]
}

Hinweise

  • Es wird empfohlen, nur Audio- und nur Video-segmentierte Ausgaben zu machen und beim Generieren der Wiedergabeliste alternatives Audio zu verwenden.
  • In der Wiedergabelistenausgabe NICHT mischen ts und m4f Ausgänge (Verursacht Probleme mit der Audio-Video-Synchronisierung).
  • Untertitel mit fragmentierten mp4-HLS-Ausgängen werden im Zencoder noch nicht unterstützt.

Vollständiges Beispiel

In der Wiedergabeliste können mehrere Ausgänge mit unterschiedlichen Bitraten angegeben und referenziert werden. Diese Einstellungen entsprechen den Richtlinien in unserem iOS-Codierungsanleitung.

Audioausgänge

{
  "outputs": [
      {
            "public": true,
            "label": "Audio-64",
            "base_url": "s3://my-bucket/Audio/64k/",
            "filename": "audio_64k.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "audio_codec": "aac",
            "audio_bitrate": "64",
            "skip_video": true
        },
        {
            "public": true,
            "label": "Audio-128",
            "base_url": "s3://my-bucket/Audio/128k/",
            "filename": "audio_128k.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "audio_codec": "aac",
            "audio_bitrate": "128",
            "skip_video": true
        }
    ]
}

Videoausgänge

{
 "outputs": [
        {
            "public": true,
            "label": "Rendition1",
            "base_url": "s3://my-bucket/Rendition1",
            "filename": "Rendition1.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "416x234",
            "video_bitrate": "145",
            "skip_audio": true
        },
        {
            "public": true,
            "label": "Rendition2",
            "base_url": "s3://my-bucket/Rendition2",
            "filename": "Rendition2.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "480x270",
            "video_bitrate": "300",
            "skip_audio": true
        },
        {
            "public": true,
            "label": "Rendition3",
            "base_url": "s3://my-bucket/Rendition3",
            "filename": "Rendition3.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "640x360",
            "video_bitrate": "660",
            "skip_audio": true
        },
        {
            "public": true,
            "label": "Rendition4",
            "base_url": "s3://my-bucket/Rendition4",
            "filename": "Rendition4.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "768x432",
            "video_bitrate": "990",
            "skip_audio": true
        },
        {
            "public": true,
            "label": "Rendition5",
            "base_url": "s3://my-bucket/Rendition5",
            "filename": "Rendition5.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "960x540",
            "video_bitrate": "1700",
            "skip_audio": true
        },
        {
            "public": true,
            "label": "Rendition6",
            "base_url": "s3://my-bucket/Rendition6",
            "filename": "Rendition6.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "1280x720",
            "video_bitrate": "2400",
            "skip_audio": true
        },
        {
            "public": true,
            "label": "Rendition7",
            "base_url": "s3://my-bucket/Rendition7",
            "filename": "Rendition7.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "1920x1080",
            "video_bitrate": "4500",
            "skip_audio": true
        },
        {
            "public": true,
            "label": "Rendition8",
            "base_url": "s3://my-bucket/Rendition8",
            "filename": "Rendition8.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "2560x1440",
            "video_bitrate": "8100",
            "skip_audio": true
        },
        {
            "public": true,
            "label": "Rendition9",
            "base_url": "s3://my-bucket/Rendition9",
            "filename": "Rendition9.m3u8",
            "type": "segmented",
            "segment_seconds": 6,
            "byte_range_segmenting": true,
            "format": "m4f",
            "streaming_delivery_format": "hls",
            "generate_keyframe_manifest": "true",
            "fixed_keyframe_interval": "true",
            "keyframe_rate": 0.5,
            "video_codec": "hevc",
            "size": "3840x2160",
            "video_bitrate": "11600",
            "skip_audio": true
        }
    ]
}

Playlist-Ausgaben

{
    "outputs":[
       {
            "public": true,
            "label": "master-playlist",
            "base_url": "s3://my-bucket/",
            "filename": "master_playlist.m3u8",
            "hls_protocol_version": 7,
            "type": "playlist",
            "allow_skipped_sources": true,
            "alternate_audio": {
                "64k_audio": {
                    "path": "Audio/64k/audio_64k.m3u8",
                    "language": "en",
                    "default": true,
                    "source": "Audio-64"
                },
                "128k_audio": {
                    "path": "Audio/128k/audio_128k.m3u8",
                    "language": "en",
                    "source": "Audio-128"
                }
            },
            "streams": [
                {
                    "path": "Rendition1/Rendition1.m3u8",
                    "source": "Rendition1",
                    "audio": "64k_audio"
                },
                {
                    "path": "Rendition2/Rendition2.m3u8",
                    "source": "Rendition2",
                    "audio": "64k_audio"
                },
                {
                    "path": "Rendition3/Rendition3.m3u8",
                    "source": "Rendition3",
                    "audio": "128k_audio"
                },
                {
                    "path": "Rendition4/Rendition4.m3u8",
                    "source": "Rendition4",
                    "audio": "128k_audio"
                },
                {
                    "path": "Rendition5/Rendition5.m3u8",
                    "source": "Rendition5",
                    "audio": "128k_audio"
                },
                {
                    "path": "Rendition6/Rendition6.m3u8",
                    "source": "Rendition6",
                    "audio": "128k_audio"
                },
                {
                    "path": "Rendition7/Rendition7.m3u8",
                    "source": "Rendition7",
                    "audio": "128k_audio"
                },
                {
                    "path": "Rendition8/Rendition8.m3u8",
                    "source": "Rendition8",
                    "audio": "128k_audio"
                },
                {
                    "path": "Rendition9/Rendition9.m3u8",
                    "source": "Rendition9",
                    "audio": "128k_audio"
                }
            ]
        }
    ]
}