如何基于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
相关产品推荐
相关产品推荐

