本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

擷取媒體元資訊

更新時間:2025-02-17 19:32

通過視頻管理功能擷取媒體檔案元資訊,如解析度、碼率、幀率、編碼通訊協定等。用於媒體檢索、播放展示、智能管理等,提升媒體的營運與管理效率。

應用情境

篩選檢索

以某個媒體元資訊作為檢索條件,進行精確匹配、前(後)綴匹配、模糊比對等多種檢索方式,尋找期望的媒體檔案列表。

媒體管理

根據媒體元資訊,如解析度、碼率、幀率、編碼通訊協定等對媒體檔案進行分類管理,在此基礎上根據商務規則進行播放展示。

支援音視頻格式列表

分類

格式

分類

格式

音頻

AAC、MP3、AC3、OPUS等所有主流格式。

視頻

MP4、MPEG-TS、MKV、MOV、AVI、FLV、M3U8等所有主流格式。

前提條件

使用方法

調用DetectMediaMeta - 擷取媒體檔案元資訊介面擷取媒體元資訊。

如下以在名稱為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://help.aliyun.com/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:])
  • 本頁導讀 (1, M)
  • 應用情境
  • 篩選檢索
  • 媒體管理
  • 支援音視頻格式列表
  • 前提條件
  • 使用方法
  • 請求樣本
  • 返回樣本
  • 範例程式碼
文檔反饋
phone 聯絡我們

立即和Alibaba Cloud在線服務人員進行交談,獲取您想了解的產品信息以及最新折扣。

alicare alicarealicarealicare