没想到时隔一年多又掉进了bgm的大坑
这次的需求是用户先选择音乐,然后调起微信的录像api(此处有特殊样式,所以不能直接用选择视频文件录像那个方法),之后将用户拍摄的视频、选择的bgm传给后端,他那边加上水印合成视频返回给前端进行后面的操作。
但是
问题就出在但是
录制视频的时候也要求加上bgm,不然太突兀了,所以就相当于前端这边合成视频和音频,后端再合成水印。
一开始我想的是加个<audio>
放在页面,录制的时候播放一下,拍好了再播放,假装合成了,其实还是后端去合成。但是用<audio>
播放音频的话,会影响视频麦克风的收声,录出来的视频只有一两秒有声音
还好及时求助公司大佬,他提出了可以调用全局背景音乐的方法来录制视频
下面展示代码
<page>
<view class="home">
<!-- 结果 -->
<view class="result" wx:if="{
{videoSrc}}">
<video class="video " src="{
{videoSrc}}" show-progress="{
{false}}" muted='{
{false}}' controls="{
{true}}"></video>
<view class="btns">
<view class="btn" bindtap="initShoot">
<img clas='my_img' src='shoot/back.png' />
</view>
<view class="btn" bindtap='uploadViedo'>
<img clas='my_img' src='shoot/next.png' />
</view>
</view>
</view>
<!-- 录制 -->
<view class="duringShoot" wx:else>
<camera class="mycamera" mode="normal" device-position="front"></camera>
<view class="tips" wx:if="{
{showWord}}">
<view class="word">
<view class="marquee_text" style="left:{
{marqueeDistance2}}px">
<text>{
{
text}}</text>
<text wx:if="{
{marquee2copy_status}}" style="margin-left:{
{marquee2_margin}}px;">
{
{
text}}
</text>
</view>
</view>
<view class="icon" bindtap='getsentence'>
<img clas='my_img' src='shoot/refresh.png' />
</view>