我们是否可以在 Android 中以编程方式使用 ffmpeg 命令(如屏幕记录、屏幕截图)。
例如 ffmpeg -r 24 -f rawvideo -pix_fmt rgb565le -s 320x480 -i/dev/graphics/fb0 -vcodec libx264/sdcard/videokit/screen.mp4
最佳答案
您可以编译针对arm6/arm7等移动CPU进行优化的FFmpeg(最新更新后更名为AVConv)。我们在 Android 上这样做了几年。是的,它没有硬件加速 - 这意味着 FPS 较低。但它仍然有用。 要使用硬件加速编码,目前只有一种方法 - Android SDK(操作系统 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) 要应用此控制台选项,您必须将此选项传递给 native 代码中的 FFMpeg AVDictionary 结构。这很简单。您必须锁定 ffmpeg.c 源文件,并且还可以使用 Netbeans IDE 中的断点分析桌面版本的 ffmpeg 如何工作(非常有帮助)。
av_opt_set(oc->priv_data, "f", "rawvideo", 0);
3) 据我所知,由于 Android 安全性,我认为您在未 root 的设备中访问/dev/graphics/fb0 时会遇到麻烦。
关于android - Android 中的 FFmpeg 命令以编程方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25637604/