2

我们是否可以以编程方式在android中使用ffmpeg命令(screenrecord,screenshot)。以编程方式在android中的FFmpeg命令

例如 的ffmpeg -r -f 24 rawvideo -pix_fmt rgb565le -s -i分辨率320x480的/ dev /图形/ FB0 -vcodec libx264 /sdcard/videokit/screen.mp4

+0

您可以通过编译android的整个ffmpeg.c,但它不会工作得很快。 – user1095108 2014-09-03 06:30:44

+0

谢谢,任何指南的意思链接。我使用FfmpegFrameRecorder将图像转换为视频,但需要时间将图像转换为视频。我捕捉我的应用程序的图像,然后转换为视频,但需要时间。 – 2014-09-03 06:40:47

+0

然后我决定在android中以编程方式使用该命令来直接对屏幕进行recrod。取而代之的是形象,然后转换成视频。 – 2014-09-03 06:42:03

回答

3

您可以编译FFmpeg的(它的命名最近更新后的AVConv),针对像arm6/arm7这样的移动CPU进行了优化。我们在几年内为Android做了这些。是的,它没有硬件加速 - 这意味着低FPS。但它仍然有用。 要使用硬件加速编码,现在只有一种方法 - 从Android SDK(OS 4.1.2及更高版本)的Java API。

1)使用Android NDK将FFMpeg编译为共享库。你可以试试这个:https://github.com/guardianproject/android-ffmpeg

还是我自己构建脚本(我现在觉得有点过时): https://dl.dropboxusercontent.com/u/76581728/build_android_r7.sh

建议您使用最新的Android NDK。

2)要应用此控制台选项,您必须将此选项传递给本地代码中的FFMpeg AVDictionary结构。这很简单。您必须锁定ffmpeg.c源文件,并且可以使用Netbeans IDE中的断点分析桌面版ffmpeg的工作原理(非常有用)。 av_opt_set(oc-> priv_data,“f”,“rawvideo”,0);其中,av_opt_set(oc-> priv_data,“f”,“rawvideo”,0)。

3)我想你会遇到麻烦,因为我知道,由于Android安全性,在非根设备中访问/ dev/graphics/fb0。