V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
pengxiying
V2EX  ›  分享创造

健身视频太枯燥,我做了个替换 BGM 的小程序!

  •  1
     
  •   pengxiying · 278 天前 · 891 次点击
    这是一个创建于 278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    就音视频合成功能,本来只是自己的一个小需求,渐渐的做成了这个小程序,推广一下!

    screenshots.gif


    实现

    音视频处理使用了:ffmpeg,通过后端生成相应命令并执行。

    命令:

    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指的是单个动作即将结束时的倒计时音频!

    1702985213505.jpg image.png

    音频选择:

    微信小程序有点奇怪,音频文件好像没法从本地选择,只能选择微信对话记录内的文件。想使用webview又需要企业认证。所以就找了个网易云音乐解析 api,至少能够方便点。

    image.png


    END

    若未暴富,暴瘦也是一种救赎。祝各位一周瘦八斤!

    有兴趣的话可以试试!

    gh_ce18b412cd73_258.jpg

    一些其他的功能 gh_ce18b412cd73_258.jpg

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2187 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 01:35 · PVG 09:35 · LAX 17:35 · JFK 20:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.