擷取媒體元資訊
更新時間:
Copy as MD
通過視頻管理功能擷取媒體檔案元資訊,如解析度、碼率、幀率、編碼通訊協定等。用於媒體檢索、播放展示、智能管理等,提升媒體的營運與管理效率。
應用情境
篩選檢索
以某個媒體元資訊作為檢索條件,進行精確匹配、前(後)綴匹配、模糊比對等多種檢索方式,尋找期望的媒體檔案列表。
媒體管理
根據媒體元資訊,如解析度、碼率、幀率、編碼通訊協定等對媒體檔案進行分類管理,在此基礎上根據商務規則進行播放展示。
支援音視頻格式列表
|
分類 |
格式 |
|
音頻 |
AAC、MP3、AC3、OPUS等所有主流格式。 |
|
視頻 |
MP4、MPEG-TS、MKV、MOV、AVI、FLV、M3U8等所有主流格式。 |
前提條件
已建立並擷取AccessKey。具體操作,請參見建立AccessKey。
已開通OSS服務、建立儲存空間並上傳檔案到儲存空間。具體操作,請參見上傳檔案。
已開通Intelligent Media Management服務。具體操作,請參見開通產品。
已通過Intelligent Media Management控制台建立專案。具體操作,請參見建立專案。
說明您也可以調用API介面建立專案。具體操作,請參見建立專案。
您可以調用ListProjects - 列出所有專案資訊的列表介面列出指定地區下已建立的所有專案資訊。
使用方法
調用擷取媒體檔案元資訊介面擷取媒體元資訊。
如下以在名稱為test-project的IMM專案中,擷取OSS路徑為oss://test-bucket/test-object.mp4的媒體元資訊為例。
請求樣本
{
"ProjectName": "test-project",
"SourceURI": "oss://test-bucket/test-object.mp4"
}
返回樣本
{
"ProduceTime": "2022-04-24T02:39:57Z",
"VideoStreams": [
{
"CodecTag": "0x31637661",
"FrameRate": "60/1",
"ColorSpace": "bt709",
"FrameCount": 220,
"Duration": 3.665678,
"ColorRange": "tv",
"CodecName": "h264",
"Bitrate": 19908892,
"BitDepth": 8,
"Profile": "High",
"CodecTagString": "avc1",
"HasBFrames": 1,
"AverageFrameRate": "19800000/329911",
"ColorPrimaries": "bt709",
"Language": "en",
"CodecLongName": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"Height": 1080,
"PixelFormat": "yuv420p",
"Level": 42,
"Width": 1920,
"TimeBase": "1/90000",
"ColorTransfer": "bt709"
}
],
"RequestId": "09A12708-A41D-0356-AB0E-0F2BCE*****",
"Size": 10432415,
"VideoWidth": 1920,
"FormatLongName": "QuickTime / MOV",
"Duration": 3.7141,
"Bitrate": 22470940,
"AudioStreams": [
{
"CodecTag": "0x6134706d",
"ChannelLayout": "stereo",
"FrameCount": 173,
"StartTime": 0.0235,
"Index": 1,
"Duration": 3.690667,
"CodecName": "aac",
"Bitrate": 320087,
"SampleFormat": "fltp",
"Channels": 2,
"CodecTagString": "mp4a",
"SampleRate": 48000,
"Language": "en",
"CodecLongName": "AAC (Advanced Audio Coding)",
"TimeBase": "1/48000"
}
],
"Addresses": [
{
"Language": "zh-Hans",
"Township": "望京街道",
"AddressLine": "北京市朝陽區望京街道東田運動健身遊泳俱樂部寶星華庭公寓",
"Country": "中國",
"City": "",
"District": "朝陽區",
"Province": "北京市"
}
],
"StreamCount": 2,
"VideoHeight": 1080,
"FormatName": "mov,mp4,m4a,3gp,3g2,mj2",
"LatLong": "+39.998800,+116.480900"
}
範例程式碼
以Python SDK為例,擷取媒體元資訊的完整範例程式碼如下。
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
from typing import List
from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> imm20200930Client:
"""
使用AK&SK初始化帳號Client
@return: Client
@throws Exception
"""
# 工程代碼泄露可能會導致 AccessKey 泄露,並威脅帳號下所有資源的安全性。以下程式碼範例僅供參考。
# 建議使用更安全的 STS 方式,更多鑒權訪問方式請參見:https://www.alibabacloud.com/help/document_detail/378659.html。
config = open_api_models.Config(
# 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_ID。,
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必填,請確保代碼運行環境設定了環境變數 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# Endpoint 請參考 https://api.aliyun.com/product/imm
config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
return imm20200930Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
detect_media_meta_request = imm_20200930_models.DetectMediaMetaRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.mp4'
)
runtime = util_models.RuntimeOptions()
try:
# 複製代碼運行請自行列印 API 的傳回值
client.detect_media_meta_with_options(detect_media_meta_request, runtime)
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
# 診斷地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client()
detect_media_meta_request = imm_20200930_models.DetectMediaMetaRequest(
project_name='test-project',
source_uri='oss://test-bucket/test-object.mp4'
)
runtime = util_models.RuntimeOptions()
try:
# 複製代碼運行請自行列印 API 的傳回值
await client.detect_media_meta_with_options_async(detect_media_meta_request, runtime)
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
# 診斷地址
print(error.data.get("Recommend"))
UtilClient.assert_as_string(error.message)
if __name__ == '__main__':
Sample.main(sys.argv[1:])
该文章对您有帮助吗?