【发布时间】:2016-12-16 10:03:59
【问题描述】:
我正在为 Android 创建一个具有裁剪图像/裁剪视频功能的应用程序。对于 iOS,此应用程序已创建。
对于 iOS,使用 lib 编辑视频 LLVideoEditor 以及用于图像裁剪和旋转的库TOCropViewController
对于 Android,我找到了用于图像裁剪的 uCrop 库和用于视频裁剪的 ffmpeg-for-Android 库。
为了裁剪视频,我拍摄视频的第一帧,然后使用 uCrop 库对其进行裁剪以接收裁剪坐标。 (X、Y、宽度、高度、旋转角度)。
我将接收到的坐标作为命令传递给ffmpeg-for-Android 作为命令行。
该命令如下所示:
要裁剪视频,我使用以下命令:
ffmpeg -y -i /sdcard/video/in.mp4 -vf crop=Width:Height:X:Y /sdcard/video/out.mp4
要裁剪视频并将视频顺时针旋转 90 度,我使用以下命令:
ffmpeg -y -i /sdcard/video/in.mp4 -vf crop=Width:Height:X:Y transpose=1 /sdcard/video/out.mp4
我遇到的问题:
- 当我选择裁剪图像区域并按 90 度旋转图像并按应用时,uCrop 库返回 X、Y、croppedImageWidth、croppedImageHeight、Angle。在这种情况下,Y 应该等于 0,但我收到 Y > 0,即 Y = 图像上方黑色区域的高度。选择裁剪图像区域后,uCrop 库不会进行正确的图像缩放。
- 使用 ffmpeg 库转换视频的速度非常慢。我转换的视频只有 5 秒长,所以转换应该很快。但这需要大约 15 秒。与 iOS 相比,它需要的时间非常长。
问题是: 1.我选择的这种裁剪视频的方式是正确的吗? 2. 我在哪里可以找到适用于 Android 的与适用于 iOS 的类似库,这将使我能够为 Android 应用程序提供与 iOS 应用程序相同的功能,即接收正确的裁剪图像坐标和快速裁剪视频?
【问题讨论】:
标签: android image video ffmpeg android-image