If you don't already have your own video on demand (VOD) asset, you can use the Transcoder API to create a VOD manifest and segment files that can be used with the Video Stitcher API. This is completely optional.
The VOD manifest is used as the source URI in a VOD config. Both DASH and HLS formats are supported.
The following is an example job config you can use with the Transcoder API to create the VOD files. For more information, see Creating jobs with ad-hoc configurations. You will need to enable the Transcoder API in your Google Cloud project; see Before you begin for more information.
{
"config":{
"inputs":[
{
"key":"input0",
"uri":"gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO"
}
],
"output":{
"uri":"gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
},
"editList":[
{
"key":"atom0",
"inputs":[
"input0"
]
}
],
"elementaryStreams":[
{
"key":"video_hd",
"videoStream":{
"h264":{
"heightPixels":720,
"widthPixels":1280,
"pixelFormat":"yuv420p",
"bitrateBps":5000000,
"frameRate":25
}
}
},
{
"key":"video_sd",
"videoStream":{
"h264":{
"heightPixels":432,
"widthPixels":768,
"pixelFormat":"yuv420p",
"bitrateBps":1100000,
"frameRate":25
}
}
},
{
"key":"video_sd_low",
"videoStream":{
"h264":{
"heightPixels":360,
"widthPixels":640,
"pixelFormat":"yuv420p",
"bitrateBps":365000,
"frameRate":25
}
}
},
{
"key":"audio_stereo",
"audioStream":{
"codec":"aac",
"bitrateBps":64000,
"channelCount":2,
"channelLayout":[
"fl",
"fr"
],
"sampleRateHertz":48000
}
}
],
"muxStreams":[
{
"key":"hd",
"container":"mp4",
"elementaryStreams":[
"video_hd",
"audio_stereo"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"sd",
"container":"mp4",
"elementaryStreams":[
"video_sd",
"audio_stereo"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"sd_low",
"container":"mp4",
"elementaryStreams":[
"video_sd_low",
"audio_stereo"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"media_hd",
"container":"ts",
"elementaryStreams":[
"video_hd",
"audio_stereo"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"media_sd",
"container":"ts",
"elementaryStreams":[
"video_sd",
"audio_stereo"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"media_sd_low",
"container":"ts",
"elementaryStreams":[
"video_sd_low",
"audio_stereo"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"video_only_hd",
"container":"fmp4",
"elementaryStreams":[
"video_hd"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"video_only_sd",
"container":"fmp4",
"elementaryStreams":[
"video_sd"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"video_only_sd_low",
"container":"fmp4",
"elementaryStreams":[
"video_sd_low"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
},
{
"key":"audio_only",
"container":"fmp4",
"elementaryStreams":[
"audio_stereo"
],
"segmentSettings":{
"segmentDuration":"6s",
"individualSegments":true
}
}
],
"manifests":[
{
"type":"HLS",
"fileName":"manifest.m3u8",
"muxStreams":[
"media_hd",
"media_sd",
"media_sd_low"
]
},
{
"type":"DASH",
"fileName":"manifest.mpd",
"muxStreams":[
"video_only_hd",
"video_only_sd",
"video_only_sd_low",
"audio_only"
]
}
]
}
}