【发布时间】:2021-07-31 23:45:15
【问题描述】:
我正在尝试在 2 分钟的视频上叠加一个 10 秒的短视频,并让 10 秒的视频显示在 30 秒的标记处。这是我到目前为止所拥有的
start = 30
subprocess.run(
f'ffmpeg -y \
-i {os.path.join(path, "2minutevideo.mp4")} \
-i {os.path.join(path, "popup.mov")} \
-filter_complex \
"[0:v]setpts=PTS-STARTPTS[v0]; \
[1:v]setpts=PTS-STARTPTS+{notify_start}/TB[v1]; \
[v0][v1]overlay=enable=\'between(t, {notify_start}, {notify_start + get_duration(os.path.join(path, "popup.mp4"))})\' [out1]" \
{render_flags} -r 24 -map 1:a -map [out1] -async 1 \
{os.path.join(source_folder, "test.mp4")}')
它的作用是 popup.mov 在 30 秒后显示并播放整个持续时间。但是,我有两个问题:
- popup.mov 的音频仍然在开头播放。我已经尝试了它的偏移量,设置了 pts,但两者似乎都不起作用或有错误。
- 播放的唯一音频是 popup.mov 的音频。我希望 2minutevideo 和 popup.mov 都播放音频。是的,我知道这是因为 -map 1:a 仅将弹出窗口的音频映射到最终视频,但我不知道如何同时播放音频。我需要混合吗?
谢谢
【问题讨论】: