全部產品
Search
文件中心

Intelligent Media Services:素材與素材時間長度自動對齊

更新時間:Oct 30, 2024

本文檔介紹了如何在時間軸中配置軌道間素材對齊。

一、背景

使用常規時間軸進行剪輯時,如果想要多個軌道的音視頻素材同時播放、同時結束,一般需要手動指定各個素材的TimelineIn和TimelineOut,並且保證素材的時間長度一致。本文檔介紹一種更便捷的素材對齊,您無需指定素材在時間軸上的入出點,僅需配置對齊參數(詳見下文),就能實現不同軌道間音頻向視頻對齊、音頻向音頻對齊、視頻向音頻對齊、視頻向視頻對齊的效果。

二、詳細介紹

2.1、時間軸協議介紹

您可以使用ClipIdReferenceClipId兩個參數,來指定素材間的對齊與被對齊關係。

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "In": 0,
          "Out": 5,
          "MediaURL": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/head.mp4"
        },
        {
          "ReferenceClipId": "audio_1",
          "MediaURL": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/video1.mp4"
        },
        {
          "MediaURL": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/end.mp4",
          "In": 0,
          "Out": 5
        }
      ]
    }
  ],
  "AudioTracks": [
    {
      "AudioTrackClips": [
        {
          "TimelineIn": 5,
          "ClipId": "audio_1",
          "MediaId": "7980d8f************e6f7e5696301",
          "In": 0,
          "Out": 10
        }
      ]
    }
  ]
}

以上方的時間軸為例:視頻軌的第二個素材的時間長度及時間軸入出點,自動根據音頻軌第一個素材來配置。

trackAlignment-1.png

使用限制:

  1. 僅音視頻軌道素材可以配置ClipId和ReferenceClipId,特效軌(EffectTrack)和圖片軌(ImageTrack)不支援。

  2. 僅當素材位於不同軌道時,素材對齊才會生效,不然時間軸視為非法,會導致合成失敗。

  3. 當素材Clip同時配置了TimelineIn、TimelineOut 和 ReferenceClipId,對齊邏輯無效,以輸入的TimelineIn、TimelineOut為準。

  4. 如果對齊時clip 時間長度不足,自動倍速補齊足夠時間長度。例:clip A 對齊 clip B,clip B 需要播放 20s 但是 clip A 總時間長度只有10s,會將clip A 做 0.5 倍速,補全20s。

  5. 如果對齊時clip 時間長度過長,自動截斷。例:clip A 對齊 clip B,clip B 需要播放10s 但是 clip A 總時間長度 20s,會將clip A 做截斷,截取clip A 的 0 ~ 10s。

2.2、常見情境

下面介紹幾個使用軌道間素材對齊的常見情境:

2.2.1、音視頻簡單對齊

音頻素材對齊視頻

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaId": "e6f7e57980************d8f696301",
          "In": 0,
          "Out": 4
        },
        {
          "ClipId":"video_1",
          "MediaId": "e6f7e57980************d8f696301",
          "In": 2,
          "Out": 10
        }
      ]
    }
  ],
  "AudioTracks": [
    {
      "AudioTrackClips": [
        {
          "ReferenceClipId": "video_1",
          "MediaId": "7980d8f************e6f7e5696301",
          "Effects": [
            {
              "Type": "Volume",
              "Gain": "0.2"
            }
          ]
        }
      ]
    }
  ]
}

視頻素材對齊音頻

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaId": "e6f7e57980************d8f696301",
          "In": 0,
          "Out": 5
        },
        {
          "ReferenceClipId":"audio_1",
          "MediaId": "e6f7e57980************d8f696301"
        }
      ]
    }
  ],
  "AudioTracks": [
    {
      "AudioTrackClips": [
        {
          "TimelineIn": 5,
          "ClipId": "audio_1",
          "MediaId": "7980d8f************e6f7e5696301"
        }
      ]
    }
  ]
}

2.2.2、視頻對齊音頻 -- 視頻包含轉場,音頻包含多段口播,根據各段口播音訊時間長度播放視頻

以下方時間軸為例:

  1. 音頻軌上有三個素材,都是通過AI_TTS 產生的口播音頻。

  2. 視頻軌上有五個素材,第二與第三個視頻、第三與第四個視頻間各有一個2秒轉場。

  3. 視頻軌第二、三、四個視頻素材分別對齊音頻軌上的三段口播音頻。音頻入出點正好對齊轉場的中間時刻。

trackAlignment-2.png

{
  "VideoTracks": [{
    "VideoTrackClips": [{
      "Out": 5,
      "MediaId": "e6f7e57980************d8f696301"
    },{
      "ReferenceClipId":"speech_1",
      "MediaId": "e6f7e57980************d8f696301",
      "Effects": [{
        "Type": "Transition",
        "SubType": "waterdrop",
        "Duration": 2
      }]
    }, {
      "ReferenceClipId":"speech_2",
      "MediaId": "e6f7e57980************d8f696301",
      "Effects": [{
        "Type": "Transition",
        "SubType": "waterdrop",
        "Duration": 2
      }]
    }, {
      "ReferenceClipId":"speech_3",
      "MediaId": "e6f7e57980************d8f696301"
    }, {
        "Out": 10,
        "MediaId": "e6f7e57980************d8f696301"
    }]
  }],
  "AudioTracks": [{
    "AudioTrackClips": [{
      "TimelineIn":5,
      "Type": "AI_TTS",
      "Content": "口播1口播1口播1。口播1口播1口播1口播1。口播1口播1口播1。口播1口播1口播1。口播1口播1。口播1。口播1口播1口播1口播1。",
      "Voice": "sicheng",
      "ClipId":"speech_1",
      "Effects": [{
        "Type": "AI_ASR",
        "Font": "AlibabaPuHuiTi",
        "Alignment": "TopCenter",
        "Y": 90,
        "FontSize": 56,
        "FontColor": "#ffffff"
      }]
    }, {
      "Type": "AI_TTS",
      "Content": "口播2口播2口播2口播2口播2。口播2口播2口播2口播2。口播2口播2口播2口播2口播2口播2口播2。口播2口播2口播2口播2。",
      "Voice": "sicheng",
      "ClipId":"speech_2",
      "Effects": [{
        "Type": "AI_ASR",
        "Font": "AlibabaPuHuiTi",
        "Alignment": "TopCenter",
        "Y": 90,
        "FontSize": 56,
        "FontColor": "#ffffff"
      }]
    }, {
      "Type": "AI_TTS",
      "Content": "口播3口播3口播3口播3口播3。口播3口播3口播3。口播3口播3口播3口播3口播3。口播3口播3口播3口播3口播3。口播3口播3。",
      "Voice": "sicheng",
      "ClipId":"speech_3",
      "Effects": [{
        "Type": "AI_ASR",
        "Font": "AlibabaPuHuiTi",
        "Alignment": "TopCenter",
        "Y": 90,
        "FontSize": 56,
        "FontColor": "#ffffff"
      }]
    }]
  }]
}

2.2.3、音頻對齊視頻 -- 音頻是一段口播,音頻按照視頻長度進行截斷

以下方時間軸為例:

  1. 視頻軌上有三個素材,其中第二個視頻播放時間長度指定為8s。

  2. 音頻軌素材是一段AI_TTS 產生的口播,原始時間長度大於8s。

  3. 音頻素材對齊第二個視頻素材,最終效果是音頻同樣僅播放8s,多出時間長度自動截斷。

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaId": "e6f7e57980************d8f696301",
          "In": 0,
          "Out": 5
        },
        {
          "ClipId":"video_1",
          "MediaId": "e6f7e57980************d8f696301",
          "In": 10,
          "Out": 18
        },
        {
          "MediaId": "e6f7e57980************d8f696301",
          "In": 3,
          "Out": 10
        }
      ]
    }
  ],
  "AudioTracks": [
    {
      "AudioTrackClips": [
        {
          "ReferenceClipId": "video_1",
          "Type": "AI_TTS",
          "Content": "大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好,大家好",
          "Voice": "Siqi",
          "SpeechRate": 0,
          "PitchRate": 0,
          "Effects": [
            {
              "Type": "AI_ASR",
              "Font": "WenQuanYi Zen Hei Mono",
              "FontSize": 26,
              "FontColorOpacity": 1,
              "FontColor": "#000000",
              "FontFace": {
                "Bold": true,
                "Italic": true,
                "Underline": false
              }
            }
          ]
        }
      ]
    }
  ]
}

2.2.4、視頻對齊視頻 -- 根據虛擬人視頻時間長度,播放背景視頻

以下方時間軸為例:

  1. 時間軸共有兩個視頻軌,各包含一個視頻素材。第一個軌道的素材是一段普通視頻,第二個軌道的素材是一段由虛擬人形象、字幕、口播音頻合成的視頻。

  2. 第一個視頻軌道的素材靜音後作為背景,時間軸上對齊第二個視頻軌的素材。

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "ReferenceClipId": "avatar2",
          "MediaId": "e6f7e57980************d8f696301",
          "Effects": [
            {
              "Type": "Volume",
              "Gain": 0
            }
          ]
        }
      ]
    },
    {
      "VideoTrackClips": [
        {
          "ClipId": "avatar2",
          "Type": "AI_Avatar",
          "AvatarId": "yunxin",
          "Content": "這種購物方式是指將商品儲存在倉庫中,同時也提高了商品的物流效率和安全性,不少電商企業已經開始嘗試倉儲式購物",
          "X": 50,
          "Y": 0,
          "Effects": [
            {
              "Type": "AI_ASR",
              "Font": "AlibabaPuHuiTi",
              "Alignment": "BottomCenter",
              "Y": 50,
              "FontSize": 40,
              "FontColor": "#ffffff",
              "FontFace": {
                "Bold": true,
                "Italic": false,
                "Underline": false
              }
            }
          ]
        }
      ]
    }
  ]
}

2.2.5、圖片對齊視頻 -- 虛擬人視頻做為背景,圖片疊加在視頻之上

以下方時間軸為例:

  1. 第一個視頻軌有三個素材,最開始5s 和最末尾5s 分別是開場視頻和結束視頻,中間是一段由虛擬人形象、字幕、口播音頻合成的視頻。

  2. 第二個視頻軌的素材是一張圖片,入出點對齊第一個軌道的虛擬人視頻,圖片疊加在視頻之上。

{
  "VideoTracks": [
    {
      "VideoTrackClips": [
        {
          "MediaURL": "http://your-bucket.oss-cn-shanghai.aliyuncs.com/opening.mp4",
          "Out": 5
        },
        {
          "ClipId": "avatar2",
          "Type": "AI_Avatar",
          "AvatarId": "yunxin",
          "Content": "這種購物方式是指將商品儲存在倉庫中,同時也提高了商品的物流效率和安全性,不少電商企業已經開始嘗試倉儲式購物",
          "X": 50,
          "Y": 0,
          "Effects": [
            {
              "Type": "AI_ASR",
              "Font": "AlibabaPuHuiTi",
              "Alignment": "BottomCenter",
              "Y": 50,
              "FontSize": 40,
              "FontColor": "#ffffff",
              "FontFace": {
                "Bold": true,
                "Italic": false,
                "Underline": false
              }
            }
          ]
        },
        {
          "MediaURL": "http://your-bucket.oss-cn-shanghai.aliyuncs.com/ending.mp4",
          "Out": 5
        }
      ]
    },
    {
      "VideoTrackClips": [
        {
          "ReferenceClipId": "avatar2",
          "Type": "Image",
          "MediaId": "e6f7e57980************d8f696301",
          "Width": 0.2,
          "Height": 0.2,
          "X": 0.1,
          "Y": 0.1
        }
      ]
    }
  ]
}