You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Azure Media Services实现播客双视频按发言者智能合流?

实现步骤

一、音频分析生成发言者时间戳数组

1. 提取视频音频轨道

用FFmpeg分别导出主持人和嘉宾视频的独立音频文件:

ffmpeg -i host.mp4 -vn -acodec copy host_audio.aac
ffmpeg -i guest.mp4 -vn -acodec copy guest_audio.aac

2. 分析音量生成时间戳

通过FFmpeg对两个音频做分段音量检测,再用脚本(Python/Shell均可)对比同时间段的音量数据:

  • 若嘉宾音频音量超过设定阈值(比如-20dB),标记该时段显示嘉宾视频
  • 嘉宾音量未达标但主持人音量达标时,标记显示主持人视频
  • 静音时段可默认显示主持人或嘉宾(按需设置)

示例FFmpeg音量检测命令(输出详细音量数据):

# 输出嘉宾音频的音量统计
ffmpeg -i guest_audio.aac -filter_complex "volumedetect" -f null /dev/null 2>&1 | grep -E "(max_volume|mean_volume)"
# 按时间切片输出每段音量,保存到文本文件
ffmpeg -i guest_audio.aac -filter_complex "ametadata=mode=print:file=guest_volume.txt" -f null /dev/null

处理后生成类似如下的时间戳数组(格式:[视频文件, 起始时间(秒), 结束时间(秒)]):

[
  ["host.mp4", 0, 20],
  ["guest.mp4", 20, 50],
  ["host.mp4", 50, 75],
  ...
]

注意:嘉宾享有优先级,只要嘉宾音频有有效发声,优先标记为嘉宾视频时段

二、使用Azure Media Services(AMS)合并视频

1. 上传视频到AMS存储

将host.mp4和guest.mp4上传到AMS关联的Azure Blob存储容器,可通过Azure门户、CLI或SDK完成。

2. 创建AMS资产关联文件

在AMS后台创建两个资产,分别绑定主持人和嘉宾的视频文件,确保文件状态显示为"已处理"。

3. 编写剪辑作业指令

根据第一步生成的时间戳数组,编写AMS剪辑作业的JSON配置,示例结构如下:

{
  "properties": {
    "input": {
      "files": [
        {"filename": "host.mp4"},
        {"filename": "guest.mp4"}
      ]
    },
    "output": {
      "assetName": "merged_podcast_asset"
    },
    "transform": {
      "name": "PodcastMergeTransform",
      "properties": {
        "description": "按发言者时间戳合并播客视频",
        "outputs": [
          {
            "preset": {
              "@odata.type": "#Microsoft.Media.MediaEncoderPreset",
              "codecs": [
                {
                  "@odata.type": "#Microsoft.Media.H264Video",
                  "keyFrameInterval": "PT2S",
                  "bitrate": 5000,
                  "maxBitrate": 8000,
                  "profile": "High"
                },
                {
                  "@odata.type": "#Microsoft.Media.AacAudio",
                  "bitrate": 192,
                  "channels": 2
                }
              ],
              "formats": [
                {
                  "@odata.type": "#Microsoft.Media.Mp4Format",
                  "filenamePattern": "{Basename}_{Bitrate}_{Label}.mp4"
                }
              ]
            },
            "onError": "StopProcessingJob",
            "relativePriority": "Normal"
          }
        ]
      }
    },
    "clip": {
      "timeRange": [
        {"start": "PT0S", "end": "PT20S", "file": "host.mp4"},
        {"start": "PT20S", "end": "PT50S", "file": "guest.mp4"},
        {"start": "PT50S", "end": "PT75S", "file": "host.mp4"}
      ]
    }
  }
}

4. 提交作业获取输出

通过Azure CLI或AMS SDK提交上述作业,等待作业完成后,从输出资产中下载合并后的最终高清视频。

补充说明

  • 音量阈值可根据实际录制环境调整,避免背景噪音误触发切换
  • 若需要更精准的发言者识别,可替换为Azure Speech Services的说话人识别API,替代纯音量分析
  • AMS的编码预设可按需调整,确保输出视频保持原有的高清质量

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:02:11