在Android上以1:1的宽高比捕获视频

在Android上以1:1的宽高比捕获视频,第1张

概述我正在尝试开发一个 Android应用程序,它将使用MediaRecorder录制15秒640×640视频,使用ffmpeg提取所有帧,使用gpuimage应用一些艺术滤镜,然后使用ffmpeg将帧组合回视频. 我在录制分辨率为640×640的视频时遇到问题. (Instagram安卓应用程序执行此 *** 作) 我尝试使用MediaRecorder的setVideoSize(640,640),输出视频为 我正在尝试开发一个 Android应用程序,它将使用MediaRecorder录制15秒640×640视频,使用ffmpeg提取所有帧,使用gpuimage应用一些艺术滤镜,然后使用ffmpeg将帧组合回视频.

我在录制分辨率为640×640的视频时遇到问题. (Instagram安卓应用程序执行此 *** 作)

我尝试使用MediaRecorder的setVIDeoSize(640,640),输出视频为640×640,但视频看起来像垂直延伸的640×480视频,使其为640×640.我想那是因为640×640不是设备支持的视频捕获分辨率列表返回的分辨率.有没有办法告诉媒体记录器在进行这样的缩放时保持纵横比,这样我就可以通过裁剪宽度而不是高度拉伸来获得从640×480到640×640缩放的视频?

解决方法 我终于以640×480捕获,在使用ffmpeg分割成帧时将其裁剪为480×480,然后最后当使用ffmpeg将帧组合回视频时,它被放大到640×640.
String[] ffmpegCommand = {"/sdcard/frames/ffmpeg","-i","/sdcard/frames/test.3gp","-vf","crop=480:480:80:0,transpose=1","-r","30","-an","-qscale:v","2","-vsync","1","-threads","4","/sdcard/frames/image%03d.jpg"};

当应用程序在纵向模式下工作时,需要transpose = 1.

注意:捕获时,为了仅显示将包含在最终裁剪视频中的视频部分,我在预览显示的顶部添加了两个80像素的黑条,以隐藏视频两侧的80像素被裁掉了.因此,用户可以获得他在预览中看到的内容.

总结

以上是内存溢出为你收集整理的在Android上以1:1的宽高比捕获视频全部内容,希望文章能够帮你解决在Android上以1:1的宽高比捕获视频所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1135227.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存