<template> <view> <button @click="cutVideo">Cut Video</button> </view> </template> <script> import ffmpeg from 'ffmpeg.js' export default { methods: { async cutVideo() { try { // 首先,獲取視頻文件 const file = await uni.chooseVideo({ sourceType: ['album', 'camera'] }) console.log(file) // 然後,使用 ffmpeg 庫來截取視頻的前三秒和後三秒 const video1 = await ffmpeg({ MEMFS: [{ name: file.tempFilePath, data: file.tempFilePath }], arguments: ['-i', file.tempFilePath, '-ss', '0', '-t', '3', '-c', 'copy', 'output1.mp4'] }) const video2 = await ffmpeg({ MEMFS: [{ name: file.tempFilePath, data: file.tempFilePath }], arguments: ['-i', file.tempFilePath, '-ss', '-3', '-t', '3', '-c', 'copy', 'output2.mp4'] }) console.log(video1, video2) // 最後,使用 ffmpeg 庫將兩個視頻合併起來 const output = await ffmpeg({ MEMFS: [ { name: 'output1.mp4', data: video1 }, { name: 'output2.mp4', data: video2 } ], arguments: ['-i', 'output1.mp4', '-i', 'output2.mp4', '-filter_complex', '[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]', '-map', '[outv]', '-map', '[outa]', 'output.mp4'] }) console.log(output) // 將合併後的視頻保存到本地 uni.saveFile({ tempFilePath: output, success: function (res) { const savedFilePath = res.savedFilePath console.log(savedFilePath) } }) } catch (e) { console.error(e) } } } } </script>