本文仅仅做为一篇入门文章,带领大家认识一下MLT这个框架(库)。
一、简介
MLT的英文全称为MLT Multimedia Frameword,翻译过来为MLT多媒体框架。该框架国内用的人比较少,也几乎没有中文资料,本文的目的是带大家简单认识一下这个功能强大的库。
MLT的官网为:https://www.mltframework.org/, 可以在上面下载最新的源码,也可以下载到使用MLT做底层实现的ShotCut工具。
那么,MLT到底是个什么东西呢?我们先来看一下官方的介绍(原文翻译):
“创作、管理和运行多声道音频和视频的一套组件。能够用于多种类型app的非线性视频编辑器引擎,且不局限于桌面领域。MLT是一个开源的多媒体框架,为广播电视频而生。它给广播、视频编辑器、媒体播放器、转码器、网络流化等很多应用提供了一个底层工具。系统的功能是通过提供各式各样的工具集、XML编辑组件和一组基于可扩展插件的API来实现。“
官方的解释可能不是太通俗易懂,大概意思就是这个框架可以用来对视频/音频做剪辑、合并、增加一些滤镜特效等,其提供的可以在视频上覆盖一个html页面的功能非常实用,可以用此法实现很多特效。
MLT底层功能是通过多个第三方库实现的,其中主要有ffmpeg、freiOr和ladspa。其中,MLT只封装了一部分ffmpeg滤镜。
更多的介绍可以参考官方的文档:https://www.mltframework.org/docs/
二、命令行参数示例
MLT的二进制可执行程序跟ffmpeg类似,可以用命令来完成几乎所有支持的操作,可以用其SDK开发自己的程序。
下面简单介绍几个命令,以供参考。
播放视频:
melt a.mp4
对视频添加灰度滤镜:
melt a.mp4 -filter greyscale -consumer avformat:o.avi acodec=libmp3lame vcodec=libx264
按时间拆分视频:
melt a.mp4 in="00:00:50:00" out="00:01:30:00" -consumer avformat:o.mp3 acodec=libmp3lame
按帧号拆分视频:
melt a.mp4 in=100 out=500 -consumer avformat:o.mp3 acodec=libmp3lame
合并视频,其中的图片合并后播放5秒:
melt a.mp4 in="00:00:01:00" out="00:00:55:00" b.jpg out="00:00:05:00" c.mp4 in="00:00:00:00" out="00:01:30:00" -consumer avformat:o.mp4 acodec=libmp3lame vcodec=libx264
添加水印并控制其位置:
melt a.mp4 in=0 out=1000 -filter watermark:/home/logo.png composite.geometry=30%/50%:50%x100%:50
添加字幕并控制其位置:
melt a.mp4 -attach dynamictext:hello#frame# geometry=10%/50%:50%x100%:30
混音两个音频:
melt a.mp3 -track b.mp3 -attach transition:mix start=0.5
先简单介绍这么多吧,后续有时间的话再多写一些关于MLT的更多用法。