분할 된 파일
먼저 주어진 대역폭을 대상으로하는 여러 개의 세그먼트 파일을 만듭니다. 이러한 출력을 통해 Zencoder는 매니페스트 파일과 세그먼트 화 된 비디오 파일을 생성하여 플레이어가 비디오를 재생할 때 각 파일을 개별적으로 다운로드 할 수 있습니다.
{
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"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": "ts"
}
그만큼m3u8
위의 출력으로 생성 된 파일은 분할 된 파일입니다. 이 출력과 아래 설명 된 다른 출력을 요청하면 서로 다른 대역폭을 대상으로하는 여러 개의 세그먼트 파일이 생성됩니다.
이 출력은 "segmented"유형, "ts"형식을 가지며 기본값은 "h264"비디오 코덱입니다. 세그먼트 화 된 각 출력에는 기본 출력으로 생성 된 M3U8 형식의 매니페스트 파일이 있으며 세그먼트는 출력의 파일 이름과 같이 이름이 지정됩니다. 분할 된 파일은 매니페스트와 함께 업로드되며 확장자 앞에 "-00001"접미사가 붙습니다. 이러한 출력은 클라이언트에서 .m3u8 파일을 참조하고 매니페스트와 동일한 위치에서 세그먼트 파일을 사용할 수 있는지 확인하여 표준 스트리밍에있는 그대로 사용할 수 있습니다. 재생 목록에서 여러 .m3u8 파일을 참조하여 적응 형 스트리밍을 지원할 수도 있습니다.
재생 목록
적응 형 비트 레이트 재생 목록을 직접 만들거나 Zencoder가 작업의 일부로 수행하도록 할 수 있습니다. 재생 목록을 만들려면 "재생 목록"유형을 사용하여 작업에 다른 출력을 추가하고 경로 (재생 목록 파일의 위치에 상대적인)와 스트림 소스를 지정합니다. 해당 출력의 레이블. 대역폭, 해상도 및 코덱도 지정할 수 있지만 기본적으로 소스에서 유추됩니다. 스트림 정보는 다른 출력과 마찬가지로 재생 목록으로 형식화되고 업로드됩니다.
이 재생 목록 파일은 위에서 생성 된 분할 된 출력을 참조하여 각 출력이 재생되어야하는 대역폭을 지정합니다. HLS를 지원하는 장치로이 파일을로드하면 사용 가능한 대역폭 변경에 따라 스트림을 조정할 수 있습니다.
스트림의 첫 번째 항목은 사용자가 파일을 열 때 사용되며 가장 적합한 스트림을 결정하기위한 테스트의 일부로 사용됩니다. 다른 항목의 순서는 관련이 없습니다.
HLS 출력 (비디오 포함) max_hls_protocol_version 4 이상은 이제 '키 프레임 매니페스트'라고도하는 I-Frame 재생 목록을 생성합니다. 기본적으로 파일 이름은 기본 매니페스트 파일과 동일하지만 "-iframe-index"가 추가됩니다. 예를 들어 파일 이름이 "master.m3u8"인 매니페스트의 경우 키 프레임 매니페스트의 이름은 "master-iframe-index.m3u8"이됩니다. 다음을 사용하여 재정의 할 수 있습니다. keyframe_manifest_filename . HLS 재생 목록 출력이 키 프레임 매니페스트가있는 "소스"스트림을 지정하면 해당 키 프레임 매니페스트가 자동으로 재생 목록에 EXT-XI-FRAMES-ONLY 스트림으로 포함됩니다.
{
"base_url": "s3://my-bucket/",
"filename": "playlist.m3u8",
"public": 1,
"streams": [
{
"bandwidth": 440,
"path": "file-440k.m3u8"
},
{
"bandwidth": 640,
"path": "file-640k.m3u8"
},
{
"bandwidth": 240,
"path": "file-240k.m3u8"
},
{
"bandwidth": 150,
"path": "file-150k.m3u8"
},
{
"bandwidth": 64,
"path": "file-64k.m3u8"
}
],
"type": "playlist"
}
전체 그림
재생 목록에서 서로 다른 비트 전송률의 여러 출력을 지정하고 참조 할 수 있습니다. 이 설정은 Google의 가이드 라인과 일치합니다. iOS 인코딩 가이드 .
{
"input": "s3://zencodertesting/test.mov",
"output": [
{
"label": "hls-64",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"filename": "file-64k.m3u8",
"format": "aac",
"public": 1,
"type": "segmented"
},
{
"label": "hls-240",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 300,
"decoder_buffer_size": 800,
"filename": "file-240k.m3u8",
"max_frame_rate": 15,
"public": 1,
"type": "segmented",
"video_bitrate": 200,
"width": 400,
"format": "ts"
},
{
"label": "hls-440",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 600,
"decoder_buffer_size": 1600,
"filename": "file-440k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 400,
"width": 400,
"format": "ts"
},
{
"label": "hls-640",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 900,
"decoder_buffer_size": 2400,
"filename": "file-640k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 600,
"width": 480,
"format": "ts"
},
{
"label": "hls-1040",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 1500,
"decoder_buffer_size": 4000,
"filename": "file-1040k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 1000,
"width": 640,
"format": "ts"
},
{
"label": "hls-1540",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 2250,
"decoder_buffer_size": 6000,
"filename": "file-1540k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 1500,
"width": 960,
"format": "ts"
},
{
"label": "hls-2040",
"audio_bitrate": 56,
"audio_sample_rate": 22050,
"base_url": "s3://my-bucket/",
"decoder_bitrate_cap": 3000,
"decoder_buffer_size": 8000,
"filename": "file-2040k.m3u8",
"public": 1,
"type": "segmented",
"video_bitrate": 2000,
"width": 1024,
"format": "ts"
},
{
"base_url": "s3://my-bucket/",
"filename": "playlist.m3u8",
"public": 1,
"streams": [
{
"source": "hls-2040",
"path": "file-2040k.m3u8"
},
{
"source": "hls-1540",
"path": "file-1540k.m3u8"
},
{
"source": "hls-1040",
"path": "file-1040k.m3u8"
},
{
"source": "hls-640",
"path": "file-640k.m3u8"
},
{
"source": "hls-440",
"path": "file-440k.m3u8"
},
{
"source": "hls-240",
"path": "file-240k.m3u8"
},
{
"source": "hls-64",
"path": "file-64k.m3u8"
}
],
"type": "playlist"
}
]
}
참고 사항
- 재생 목록 생성은 현재 작업에있는 다른 출력의 정보를 사용하지 않지만 올바른 형식의 적응 형 비트 레이트 재생 목록을 쉽게 생성하고 다른 파일과 함께 업로드하는 방법 일뿐입니다.
- iOS 장치에서 생성 된 적응 비트 전송률 재생 목록을 재생하지만 VLC는 상대 URL 처리 오류로 인해 발생하지 않습니다. 매니페스트 파일의 디렉토리가 아닌 재생 목록 파일과 동일한 디렉토리에서 세그먼트 파일을 찾습니다.
- 디코더 _ 비트 레이트 _ 캡파일의 목표 비트 전송률의 1.5 배로 설정됩니다. 디코더 _ 버퍼 _ 크기파일의 대상 비트 전송률의 3.5x에서 5x로 설정됩니다. 이러한 설정은 파일 전체에서 일관된 비트 전송률을 유지하는 데 도움이 되므로 세그먼트화된 세그먼트의 크기와 비트 전송률이 너무 많이 변하지 않습니다.
- 분할 된 출력이 임시 저장소에 업로드되면 ZIP 아카이브 .