Flutter音视频裁剪flutter_ffmpeg踩坑笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter音视频裁剪flutter_ffmpeg踩坑笔记相关的知识,希望对你有一定的参考价值。

参考技术A ffmpeg是一个音视频处理库,通过命令行的形式,对音视频进行处理,而MobileFFmpeg
则是ffmpeg在移动端的实现,flutter_ffmpeg是对MobileFFmpeg的封装,是的在flutter下能够轻松的使用ffmpeg对音视频进行处理。flutter_ffmpeg包括两部分FFmpeg和FFprobe,其中FFmpeg负责音视频处理,而FFprobe主要负责查询音视频的媒体信息。
flutter_ffmpeg地址

android工程下的配置

上面配置中的”full-lts” 是flutter__ffmpeg各个发布版本的报名,可以查看官方文档的说明。有一个值得说明的地方是,flutter_ffmpeg有中发行包,一种是 Main Release,一种是LTS Release 发行包,而他们两者支持的 Android API Level/ios SDK和硬件架构是不一样的,总的来说,LTS版本支持的更广泛,LTS支持度大于MAIN,所以我们最好使用LTS版本。
这里我遇到一个问题,使用full-lts编码格式,会出现上传到服务器无法播放视频的情况。
所以我这里是用的:

另外在使用flutter_ffmpeg的时候出现类似问题:

通过clean可以解决

使用gpl保证裁剪视频默认使用x264(不然会出现上传视频无法播放的问题),具体可以查看flutter_ffmpeg封装编码

flutter_ffmpge是ffmpeg在flutter上的一个实现,ffmpeg是通过命令行还进行音视频编辑的工具,因此我们使用fluter_ffmpeg自然也是运行一些命令来实现我们的功能。具体使用方法可以直接看 ffluter_ffmpeg官方文档 和 ffmpeg官方文档 ,或者看一下更加通俗易懂的 阮一峰文档 。接下来我们主要看看flutter_ffmpeg能干什么?

做音视频处理,首先我们肯定想知道我们的处理是否成功,或者效果好不好,那么我们只能通过处理的视频前后的参数进行对比,因此第一步我们要求这个视频处理库详细的给我们提供音视频的信息,flutter_ffmpeg的FFProde能够很好的实现这一点,而且使用很方便:

-r 20:表示帧率设置为 20fps

fs 20 : 表示文件大小最大值为15MB
把视频截了一部分 --- 这种方法不推荐

-s vga : 指定分辨率, vga 代表 600*480,也可以换成其他的值

-b:v 1.5M : 指定码率
-b:v :指定视频的码率
-b:a : 指定音频的码率
1.5M:码率的值 1.5M 表示 1.5Mb/s

比如我在项目里用到上传到服务器的视频时长需要控制在60s以内的功能,我们就可以这样:

从n开始,裁剪m秒长度的视频

从n秒开始,裁剪到m秒的视频

https://www.cnblogs.com/tocy/p/ffmpeg-filter-intro.html

Flutter 中的裁剪视频 [关闭]

【中文标题】Flutter 中的裁剪视频 [关闭]【英文标题】:Crop video in Flutter [closed] 【发布时间】:2020-08-26 16:27:48 【问题描述】:

是否有任何可以裁剪视频尺寸的颤振飞镖包?或者任何可能的方式?我在我的项目中使用了 video_playerchewie,之后我想对其进行裁剪。

【问题讨论】:

【参考方案1】:

这是一个功能强大的包,可以裁剪视频等:flutter_ffmpeg (https://pub.dev/packages/flutter_ffmpeg)

我在裁剪视频和获取输出路径方面的代码(可能对某人有用)

Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
String outputPath = appDocPath + "/output.mp4";
      await _flutterFFmpeg
          .execute(
              "-y -i $inputPath -c:v libx264 -filter:v crop=in_w:900 -c:a copy $outputPath")
          .then((rc) => print("FFmpeg process exited with rc $rc"));

【讨论】:

关于 ffmpeg 命令行的更多信息。这个视频会很有帮助youtube.com/watch?v=MPV7JXTWPWI【参考方案2】:

是的,请尝试检查:

https://pub.dev/packages/video_trimmer

【讨论】:

哦,我的意思是视频的尺寸或像素大小。我会编辑我的问题。顺便谢谢!【参考方案3】:

我可能回答得有点晚了,但我上个月发现这个包非常适合裁剪和修剪视频https://pub.dev/packages/video_editor/example

【讨论】:

以上是关于Flutter音视频裁剪flutter_ffmpeg踩坑笔记的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 裁剪布局之 ClipRectClipRRectClipOvalClipPathCustomClipper

在 Flutter 中裁剪容器

Flutter:如何根据可用空间裁剪文本?

如何从 Flutter 中的 url 裁剪和下载图像?

如何方形裁剪 Flutter 相机预览

Flutter 实现图片裁剪