编译ffmpeg仅用于将图像转换为视频(带声音)

时间:2012-12-05 11:45:58

标签: android build ffmpeg

好的,所以我使用 Guardian Project 源代码成功编译了ffmpeg for android 。现在二进制文件大约10 MB。但由于它必须转到手机,我只是想让它尽可能小 现在,Guardian项目代码有一个文件configure_ffmpeg.sh(要查看的转到链接),它表示要更改为添加/删除功能。但我不知道是什么做的。所以有些人可以帮我排序。理想情况下,我可以禁用一些东西。

谢谢,
Digvijay

1 个答案:

答案 0 :(得分:1)

关于项目的规模,我不知道你能做什么。

关于将图像转换为视频,您可以执行以下操作:

public static String convert(文件文件){

    FFmpegFrameGrabber frameGrabber =
            new FFmpegFrameGrabber(file.getAbsolutePath());

    String newName = file.getName();
    newName =
            newName.replace("." + FileManager.getExtension(file),
                    "_RECODED.mp4");
    String newFilePath = file.getParent() + "/" + newName;
    FFmpegFrameRecorder recorder;
    Frame frame = new Frame();
    recorder = new FFmpegFrameRecorder(newFilePath, 250, 250);
    recorder.setFrameRate(20);
    recorder.setFormat("mp4");
    recorder.setAudioChannels(2);
    recorder.setPreset("veryfast");
    try {
        long startTime = System.currentTimeMillis();
        System.out.println("" + startTime);
        Log.d("Tempo", "" + startTime);
        frameGrabber.start();
        recorder.start();
        while (true) {
            try {
                frame = frameGrabber.grabFrame();
                if (frame == null) {
                    System.out.println("!!! Failed cvQueryFrame");
                    break;
                }
                recorder.record(frame);
            } catch (Exception e) {
                Log.e("converter", e.getMessage());
            }
        }
        frameGrabber.stop();
        frameGrabber.release();
        recorder.stop();
        recorder.release();
        long stopTime = System.currentTimeMillis();
        System.out.println(""+stopTime);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return newFilePath;
}

这实际上从输入视频中获取每一帧并创建另一个.mp4视频。您可以将其重写为文件夹中每个帧的代码(或类似的东西)。