ApsaraVideo VOD は、オンライン編集機能を提供し、音声、動画、テキストを組み合わせて新しい動画を作成できます。本トピックの Python SDK のサンプルコードでは、オンライン編集プロジェクトの作成・管理方法と、動画生成ジョブの送信方法を説明します。
注意事項
本トピックに記載されているすべての API 呼び出しのサンプルコードは、AccessKey を使用してクライアントインスタンスを初期化しています。
これらの API オペレーションのリクエストパラメーターおよびレスポンスパラメーターの詳細については、Alibaba Cloud OpenAPI Explorer をご参照ください。API オペレーションページで右側の API Documentations タブを開いてください。
本トピックでは一部の API オペレーションについてサンプルコードを紹介しています。その他の API オペレーションの SDK サンプルコードを取得するには、Alibaba Cloud OpenAPI Explorer にアクセスしてください。Parameters タブで必要なパラメーターを指定して呼び出しを実行した後、SDK Sample Code タブで SDK バージョンと対象言語を選択すると、サンプルコードを確認・ダウンロードできます。
本トピックのサンプルコードは SDK V1.0 を使用しています。V2.0 のサンプルコードを取得する場合は、Alibaba Cloud OpenAPI Explorer で正しい SDK バージョンを選択してください。

クライアントの初期化
SDK を使用する前に、クライアントを初期化してください。「初期化」をご参照ください。
タイムラインに基づく動画生成ジョブの送信
ProduceEditingProjectVideo 操作を呼び出して、タイムラインに基づく動画生成ジョブを送信します。
この方法は、ほとんどの動画生成シナリオに適用されます。
OpenAPI Explorer:ProduceEditingProjectVideo。
サンプルコード:
タイムライン編集および混合ストリームのその他のサンプルについては、「ビデオ編集 - 使用例」をご参照ください。
from aliyunsdkvod.request.v20170321 import ProduceEditingProjectVideoRequest
def produce_editing_video(clt):
request = ProduceEditingProjectVideoRequest.ProduceEditingProjectVideoRequest()
# タイムラインを設定します。このサンプルでは、2 つの動画をマージする方法を示します。
videoTrackClips = []
videoTracks = []
timeline = {}
videoTrackClip1 = {'MediaId': '<videoId1>'}
videoTrackClips.append(videoTrackClip1)
videoTrackClip2 = {'MediaId': '<videoId2>'}
videoTrackClips.append(videoTrackClip2)
videoTrack = {'VideoTrackClips': videoTrackClips}
videoTracks.append(videoTrack)
timeline['VideoTracks'] = videoTracks
request.set_Timeline(json.dumps(timeline))
# メディアメタデータを設定します。
# CoverURL の例:http://example.aliyundoc.com/media/cover/mediaid****.jpg
mediaMetadata = {'Title': 'editing sample title', 'Description': 'editing sample description', 'Tags': 'Tag1,Tag2,Test',
'CoverURL': '<your Cover URL>'}
request.set_MediaMetadata(json.dumps(mediaMetadata))
# 生成設定を設定します。
produceConfig = {'TemplateGroupId': '<templateGroupId>'}
#request.set_ProduceConfig(json.dumps(produceConfig))
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
produce = produce_editing_video(clt)
print(produce['MediaId'])
print(json.dumps(produce, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
オンライン編集プロジェクトに基づく動画生成ジョブの送信
ProduceEditingProjectVideo 操作を呼び出して、オンライン編集プロジェクトに基づく動画生成ジョブを送信します。
オンライン編集プロジェクトを管理する必要がある場合に、この方法を使用してください。
OpenAPI Explorer:ProduceEditingProjectVideo。
サンプルコード:
from aliyunsdkvod.request.v20170321 import ProduceEditingProjectVideoRequest
def produce_editing_video_by_id(clt):
request = ProduceEditingProjectVideoRequest.ProduceEditingProjectVideoRequest()
# ProjectId を設定します。
request.set_ProjectId('<ProjectId>')
# メディアメタデータを設定します。
mediaMetadata = {'Title': 'editing sample title by ProjectId', 'Description': 'editing sample description by ProjectId',
'Tags': 'Tag1,Tag2,Test'}
request.set_MediaMetadata(json.dumps(mediaMetadata))
# 生成設定を設定します。
produceConfig = {'TemplateGroupId': '<templateGroupId>'}
#request.set_ProduceConfig(json.dumps(produceConfig))
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
produce = produce_editing_video_by_id(clt)
print(produce['MediaId'])
print(json.dumps(produce, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
オンライン編集プロジェクトの作成
AddEditingProject 操作を呼び出して、オンライン編集プロジェクトを作成します。
OpenAPI Explorer:AddEditingProject。
サンプルコード:
from aliyunsdkvod.request.v20170321 import AddEditingProjectRequest
def add_editing_project(clt):
request = AddEditingProjectRequest.AddEditingProjectRequest()
# タイムラインを設定します。このサンプルでは、2 つの動画をマージする方法を示します。
videoTrackClips = []
videoTracks = []
timeline = {}
videoTrackClip1 = {'MediaId': '<videoId1>'}
videoTrackClips.append(videoTrackClip1)
videoTrackClip2 = {'MediaId': '<videoId2>'}
videoTrackClips.append(videoTrackClip2)
videoTrack = {'VideoTrackClips': videoTrackClips}
videoTracks.append(videoTrack)
timeline['VideoTracks'] = videoTracks
request.set_Timeline(json.dumps(timeline))
# プロジェクトメタデータを設定します。
request.set_Title('editing project title')
request.set_Description('editing project description')
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
project = add_editing_project(clt)
print(project['Project'])
print(json.dumps(project, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
オンライン編集プロジェクトの変更
UpdateEditingProject 操作を呼び出して、オンライン編集プロジェクトを変更します。
OpenAPI Explorer:UpdateEditingProject。
サンプルコード:
from aliyunsdkvod.request.v20170321 import UpdateEditingProjectRequest
def update_editing_project(clt):
request = UpdateEditingProjectRequest.UpdateEditingProjectRequest()
# projectId を設定します。
request.set_ProjectId('<projectId>')
# タイムラインを設定します。このサンプルでは、2 つの動画をマージする方法を示します。
videoTrackClips = []
videoTracks = []
timeline = {}
videoTrackClip1 = {'MediaId': '<videoId1>'}
videoTrackClips.append(videoTrackClip1)
videoTrackClip2 = {'MediaId': '<videoId2>'}
videoTrackClips.append(videoTrackClip2)
videoTrack = {'VideoTrackClips': videoTrackClips}
videoTracks.append(videoTrack)
timeline['VideoTracks'] = videoTracks
request.set_Timeline(json.dumps(timeline))
# プロジェクトメタデータを設定します。
request.set_Title('new editing project title')
request.set_Description('new editing project description')
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
res = update_editing_project(clt)
print(json.dumps(res, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
オンライン編集プロジェクトの削除
DeleteEditingProject 操作を呼び出して、オンライン編集プロジェクトを削除します。
OpenAPI Explorer:DeleteEditingProject。
オンライン編集プロジェクトの詳細情報の照会
GetEditingProject 操作を呼び出して、オンライン編集プロジェクトの詳細情報を照会します。
OpenAPI Explorer: または GetEditingProject。
オンライン編集プロジェクトの照会
SearchEditingProject 操作を呼び出して、オンライン編集プロジェクトを検索します。
OpenAPI Explorer: または SearchEditingProject。
オンライン編集プロジェクトの素材設定
SetEditingProjectMaterials 操作を呼び出して、オンライン編集プロジェクトの素材を設定します。
OpenAPI Explorer:SetEditingProjectMaterials。
オンライン編集プロジェクト内の素材の照会
GetEditingProjectMaterials 操作を呼び出して、オンライン編集プロジェクト内の素材を照会します。
OpenAPI Explorer:GetEditingProjectMaterials。