js版ffmpeg压缩视频以及去除背景音乐

ffmepg地址: 这个是网上编译好的,功能还挺多的,我自己不会编译,只能用别人的

用法也挺简单的:

<h3>视频前端压缩</h3>
<video id="output-video" controls></video><br/>
<input type="file" id="uploader">
<p id="message"></p>

引入:

<script src="https://unpkg.com/@ffmpeg/ffmpeg@0.9.5/dist/ffmpeg.min.js"></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>

调用:

<script>
		const {
          
    createFFmpeg, fetchFile } = FFmpeg;
		const message = document.getElementById(message);
		const ffmpeg = createFFmpeg({
          
   
			log: true,
			progress: ({
          
    ratio }) => {
          
   
				message.innerHTML = `完成率: ${
           
    (ratio * 100.0).toFixed(2)}%`;
			},
		});
		const transcode = async ({
          
    target: {
          
    files }  }) => {
          
   
			const {
          
    name } = files[0];
			message.innerHTML = 正在加载 ffmpeg-core.js;
			await ffmpeg.load();
			message.innerHTML = 开始压缩;
            ffmpeg.FS(writeFile, name, await fetchFile(files[0]));
			// -b,2000000  值越小  压缩率越大
			await ffmpeg.run(-i, name,-b,2000000,output.mp4);
			message.innerHTML = 压缩完成;
			const data = ffmpeg.FS(readFile, output.mp4);
			const video = document.getElementById(output-video);
			video.src = URL.createObjectURL(new Blob([data.buffer], {
          
   
				type: video/mp4
			}));
		}
		document.getElementById(uploader).addEventListener(change, transcode);
	</script>

注:-b,2000000,通过修改比特率来达到压缩视频的效果,2000000,这个压缩效果很不错,亲测 还可以用 -crf 方式压缩,设置 -qscale质量参数压缩视频,不过这种方式只支持x264 ffmepg命令参数说明: 视频倒放:await ffmpeg.run(-i, name,-vf, "reverse",output.mp4); 视频剪切: await ffmpeg.run(-ss,00:00:00,-t,00:00:05,-i, name,-vcodec, "copy","-acodec","copy",output.mp4); 还有很多操作,可以自己尝试一下

去除视频背景音乐: 只需将上面命令加上 ‘-an’ 去除音频 如:await ffmpeg.run(-i, name,-an,-b,2000000,output.mp4); 即可 效果还是可以的!

经验分享 程序员 微信小程序 职场和发展