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

如何使用moviepy.editor在视频指定时间插入音频?求可行方案

在视频特定时间点插入音频的实现方案

一、使用MoviePy实现

核心逻辑

通过MoviePy的set_start()方法指定音频插入的起始时间,再将插入音频与原视频的音频轨道合并,最终替换原视频的音频流。

代码演示

from moviepy.editor import VideoFileClip, AudioFileClip, CompositeAudioClip

# 加载原视频与待插入音频
original_video = VideoFileClip("input_video.mp4")
target_audio = AudioFileClip("insert_audio.mp3")

# 设置音频从第10秒开始播放(单位:秒)
target_audio = target_audio.set_start(10)

# 合并原视频音频和插入音频
merged_audio = CompositeAudioClip([original_video.audio, target_audio])

# 将合并后的音频替换原视频音频并导出
final_video = original_video.set_audio(merged_audio)
final_video.write_videofile("output_video.mp4", codec="libx264", audio_codec="aac")

补充说明

  • 若原视频无音频,直接用final_video = original_video.set_audio(target_audio.set_start(10))即可
  • 可通过set_end()控制音频结束时间,比如target_audio.set_start(10).set_end(15)让音频播放到第15秒停止
  • 插入音频时长超过视频剩余时长时,会自动截断至视频结束时间

二、使用FFmpeg实现(命令行方案)

FFmpeg是高效的音视频处理工具,适合批量或快速处理场景。

命令演示(原视频带音频)

ffmpeg -i input_video.mp4 -i insert_audio.mp3 -filter_complex "[1:a]adelay=10000|10000[a1];[0:a][a1]amix=inputs=2:duration=first" -c:v copy output_video.mp4

参数解析

  • adelay=10000|10000:设置音频延迟10秒(单位:毫秒,左右声道均延迟)
  • amix=inputs=2:duration=first:混合原视频音频与插入音频,时长以原视频为准
  • -c:v copy:直接复制原视频视频流,避免重新编码节省时间

原视频无音频时的简化命令

ffmpeg -i input_video.mp4 -i insert_audio.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 -af "adelay=10000|10000" output_video.mp4

内容的提问来源于stack exchange,提问作者Khong Phai Hex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:15:45