欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > FFmpeg裁剪视频在Android上的实现

FFmpeg裁剪视频在Android上的实现

2025/6/20 23:02:16 来源:https://blog.csdn.net/qq_36428821/article/details/148739891  浏览:    关键词:FFmpeg裁剪视频在Android上的实现

添加依赖:

implementation 'com.arthenica:mobile-ffmpeg-full:4.4.LTS'

代码实现: 

fun cropMiddleThird(inputPath: String, outputPath: String) {val cmd = arrayOf("-y",  // 覆盖输出文件"-i", inputPath,"-filter:v", "crop=iw:ih/3:0:ih/3",  // 裁剪中间1/3"-c:a", "copy",  // 复制音频流outputPath)FFmpeg.executeAsync(cmd) { executionId, returnCode ->if (returnCode == RETURN_CODE_SUCCESS) {Log.i(TAG, "Video crop completed successfully")} else {Log.e(TAG, "Video crop failed with return code $returnCode")}}}

这段 FFmpeg 命令中的参数含义如下:

-filter:v 参数解析

  • 完整形式-filter:v 是 -filter_complex 的简化形式,专门用于视频滤镜

  • 含义:表示后面跟随的是视频滤镜(video filter)设置

  • 等价写法:也可以简写为 -vf(两者完全等效)

crop=iw:ih/3:0:ih/3 滤镜参数解析

这是一个视频裁剪(crop)滤镜,各部分的含义为:

  1. iw

    • 表示 input width(输入视频的原始宽度)

    • 这里保持原始宽度不变

  2. ih/3

    • ih 表示 input height(输入视频的原始高度)

    • ih/3 表示将高度裁剪为原始高度的 1/3

  3. 0

    • 表示裁剪区域从水平方向(X轴)的 0 位置开始(即最左侧)

  4. ih/3

    • 表示裁剪区域从垂直方向(Y轴)的 1/3 高度处开始

    • 这样组合起来就是从视频垂直方向的中间 1/3 区域裁剪

完整命令含义

ffmpeg -y -i input.mp4 -filter:v "crop=iw:ih/3:0:ih/3" -c:a copy output.mp4

表示:

  1. -y:覆盖输出文件不提示

  2. -i input.mp4:指定输入文件

  3. -filter:v "crop=iw:ih/3:0:ih/3"

    • 裁剪视频,保持原始宽度

    • 高度取原始高度的 1/3

    • 从垂直方向 1/3 处开始裁剪(最终得到的是视频中间的 1/3 部分)

  4. -c:a copy:音频流直接复制不重新编码

  5. output.mp4:输出文件路径

其他常见表达式

表达式含义
iw输入视频宽度
ih输入视频高度
ow输出视频宽度
oh输出视频高度
dar显示宽高比
sar样本宽高比
n当前帧序号
t当前时间戳(秒)

实际应用示例

如果想裁剪视频顶部 1/3(而不是中间):

crop=iw:ih/3:0:0

如果想裁剪视频右侧 1/3:

crop=iw/3:ih:iw*2/3:0

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词