本页面介绍了如何从您转码的视频生成包含帧的精灵表。这些缩小的帧(也称为缩略图)有助于整理和预览内容。要生成精灵表,请在 JobConfig
模板中使用 spriteSheets
数组。
您可以通过以下两种方式生成精灵表:
生成一定数量的缩略图
以下配置会生成一张 10x10 的子图(包含大图片)和一个 10x10 子图片(包含小图片),每张子图片都有 100 个缩略图。请注意,雪碧图在作业配置中需要至少一个 VideoStream
。
您可以将此配置添加到作业模板中,也可以将其添加到临时作业配置中。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:IAM 设置中列出的 Google Cloud 项目 ID。
- LOCATION:运行作业的位置。请使用其中一个受支持的区域:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_BUCKET_NAME:您创建的 Cloud Storage 存储桶的名称。
- STORAGE_INPUT_VIDEO:您要对其进行转码的 Cloud Storage 存储桶中的视频的名称,例如
my-vid.mp4
。此字段应考虑您在存储桶中创建的任何文件夹(例如input/my-vid.mp4
)。 - STORAGE_OUTPUT_FOLDER:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
请求 JSON 正文:
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "spriteSheets": [ { "filePrefix": "small-sprite-sheet", "spriteHeightPixels": 32, "spriteWidthPixels": 64, "columnCount": 10, "rowCount": 10, "totalCount": 100 }, { "filePrefix": "large-sprite-sheet", "spriteHeightPixels": 72, "spriteWidthPixels": 128, "columnCount": 10, "rowCount": 10, "totalCount": 100 } ] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud CLI
- 创建一个定义作业字段的
request.json
文件。 对gcloud
命令进行以下替换:- STORAGE_BUCKET_NAME:您创建的 Cloud Storage 存储桶的名称。
- STORAGE_INPUT_VIDEO:您要对其进行转码的 Cloud Storage 存储桶中的视频的名称,例如
my-vid.mp4
。此字段应考虑您在存储桶中创建的任何文件夹(例如input/my-vid.mp4
)。 - LOCATION:运行作业的位置。请使用以下列表中的某个位置:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_OUTPUT_FOLDER:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "spriteSheets": [ { "filePrefix": "small-sprite-sheet", "spriteHeightPixels": 32, "spriteWidthPixels": 64, "columnCount": 10, "rowCount": 10, "totalCount": 100 }, { "filePrefix": "large-sprite-sheet", "spriteHeightPixels": 72, "spriteWidthPixels": 128, "columnCount": 10, "rowCount": 10, "totalCount": 100 } ] } }
- 运行以下命令:
gcloud transcoder jobs create --location=LOCATION --file="request.json"
您应该会看到如下所示的响应:{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 C# 设置说明进行操作。 如需了解详情,请参阅 Transcoder API C# API 参考文档。
Go
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Go 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Go API 参考文档。
Java
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Java 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Java API 参考文档。
Node.js
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Node.js API 参考文档。
PHP
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 PHP 设置说明进行操作。 如需了解详情,请参阅 Transcoder API PHP API 参考文档。
Python
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Python 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Python API 参考文档。
Ruby
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Ruby API 参考文档。
对示例视频使用此配置,以便生成以下精灵表:
图 1.小图片精灵表(100 张缩略图)
图 2.大图片精灵表(100 张缩略图)
定期生成缩略图
以下配置生成一个小图片精灵表和一个大图片精灵表。每个精灵表单包含从输入视频每 7 秒生成的缩略图。请注意,雪碧图在作业配置中需要至少一个 VideoStream
。
您可以将此配置添加到作业模板中,也可以将其添加到临时作业配置中。
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:IAM 设置中列出的 Google Cloud 项目 ID。
- LOCATION:运行作业的位置。请使用其中一个受支持的区域:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_BUCKET_NAME:您创建的 Cloud Storage 存储桶的名称。
- STORAGE_INPUT_VIDEO:您要对其进行转码的 Cloud Storage 存储桶中的视频的名称,例如
my-vid.mp4
。此字段应考虑您在存储桶中创建的任何文件夹(例如input/my-vid.mp4
)。 - STORAGE_OUTPUT_FOLDER:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
请求 JSON 正文:
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "spriteSheets": [ { "filePrefix": "small-sprite-sheet", "spriteHeightPixels": 32, "spriteWidthPixels": 64, "interval": "7s" }, { "filePrefix": "large-sprite-sheet", "spriteHeightPixels": 72, "spriteWidthPixels": 128, "interval": "7s" } ] } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud CLI
- 创建一个定义作业字段的
request.json
文件。 对gcloud
命令进行以下替换:- STORAGE_BUCKET_NAME:您创建的 Cloud Storage 存储桶的名称。
- STORAGE_INPUT_VIDEO:您要对其进行转码的 Cloud Storage 存储桶中的视频的名称,例如
my-vid.mp4
。此字段应考虑您在存储桶中创建的任何文件夹(例如input/my-vid.mp4
)。 - LOCATION:运行作业的位置。请使用以下列表中的某个位置:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_OUTPUT_FOLDER:您要在其中保存已编码视频输出的 Cloud Storage 文件夹名称。
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" }, "spriteSheets": [ { "filePrefix": "small-sprite-sheet", "spriteHeightPixels": 32, "spriteWidthPixels": 64, "interval": "7s" }, { "filePrefix": "large-sprite-sheet", "spriteHeightPixels": 72, "spriteWidthPixels": 128, "interval": "7s" } ] } }
- 运行以下命令:
gcloud transcoder jobs create --location=LOCATION --file="request.json"
您应该会看到如下所示的响应:{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 C# 设置说明进行操作。 如需了解详情,请参阅 Transcoder API C# API 参考文档。
Go
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Go 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Go API 参考文档。
Java
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Java 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Java API 参考文档。
Node.js
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Node.js 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Node.js API 参考文档。
PHP
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 PHP 设置说明进行操作。 如需了解详情,请参阅 Transcoder API PHP API 参考文档。
Python
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Python 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Python API 参考文档。
Ruby
在尝试此示例之前,请按照使用客户端库的 Transcoder API 快速入门中的 Ruby 设置说明进行操作。 如需了解详情,请参阅 Transcoder API Ruby API 参考文档。
对示例视频使用此配置,以便生成以下精灵表:
图 3.小图片精灵表(每 7 秒钟生成 1 张缩略图)
图 4.大图片精灵表(每 7 秒钟生成 1 张缩略图)
示例视频中生成 8 张缩略图,时长为 60 秒。