前言
秋冬季节似乎减肥效率更高,但现实的阻碍往往出人意料,室外跑步差点把人跑没了。罢了,我只能再次捡起B站吃灰收藏夹里的健身视频。可那BGM确实听到吐了,最近喜欢上了陶喆的歌,就想着写个小程序把它们合在一起,给自己来点动力。希望今年过年回家能惊艳所有人吧!
实现
音视频处理使用了:ffmpeg
,通过后端生成相应命令并执行。
命令:
shell
ffmpeg -y -i source.mp4 -i 1.mp3 -i 2.mp3 -i time.mp3 -filter_complex "[1:a][2:a]concat=n=2:v=0:a=1[bgm];[3]adelay=5000|5000[a1];[3]adelay=10000|10000[a2]; [bgm][a1][a2]amix=3,apad[music]" -map 0:v -map "[music]" -c:v copy result.mp4
-y
: 覆盖输出文件而无需确认。-i source.mp4
: 输入视频文件(source.mp4)。-i 1.mp3 -i 2.mp3 -i time.mp3
: 输入三个音频文件,time.mp3指的倒计时音频。-filter_complex
: 指定复杂的音视频处理过程。
在 -filter_complex
中的操作:
[1:a][2:a]concat=n=2:v=0:a=1[bgm]
: 将第二个和第三个音频文件(1.mp3, 2.mp3) 连接为一个背景音乐流[bgm]
。[3]adelay=5000|5000[a1]
: 对第四个音频文件(time.mp3) 进行延迟处理,延迟时间为5000毫秒,生成一个新的音频流[a1]
。[3]adelay=10000|10000[a2]
: 对第四个音频文件(time.mp3) 进行另一次延迟处理,延迟时间为10000毫秒,生成另一个新的音频流[a2]
。[bgm][a1][a2]amix=3,apad[music]
: 将背景音乐流[bgm]
与延迟处理后的两个音频流[a1]
和[a2]
合并为一个混音流[music]
。-map 0:v -map "[music]"
: 选择输入文件中的视频流和经过处理的音频流[music]
。-c:v copy
: 复制输入文件的视频编码。
倒计时:
关于
time.mp3
,因为健身视频的特性,每个动作之间存在休息时间,time.mp3
指的是单个动作即将结束时的倒计时音频!
音频选择:
微信小程序有点奇怪,音频文件好像没法从本地选择,只能选择微信对话记录
内的文件。想使用webview
又需要企业认证。所以就找了个网易云音乐解析api
,至少能够方便点。
END
若未暴富,暴瘦也是一种救赎。祝各位一周瘦八斤!
有兴趣的话可以试试哦!