Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android FFMPEG:图像到mp4视频转换_Android_Video_Ffmpeg - Fatal编程技术网

Android FFMPEG:图像到mp4视频转换

Android FFMPEG:图像到mp4视频转换,android,video,ffmpeg,Android,Video,Ffmpeg,我用ffmpeg尝试了许多可能的命令行选项,但是没有成功。以下是我的命令文件生成器方法: private String[] generateCommandFile() { ArrayList<String> cmd = new ArrayList<>(); cmd.add("-y"); cmd.add("-f"); cmd.add("concat"); cmd.add("-safe"); cmd.add("0");

我用ffmpeg尝试了许多可能的命令行选项,但是没有成功。以下是我的命令文件生成器方法:

 private String[] generateCommandFile() {
    ArrayList<String> cmd = new ArrayList<>();

    cmd.add("-y");
    cmd.add("-f");
    cmd.add("concat");
    cmd.add("-safe");
    cmd.add("0");
    cmd.add("-i");
    String picturesTextFile = generateMergingFilesTexts();
    if (picturesTextFile == null) {
        return null;
    }
    cmd.add(picturesTextFile);
    cmd.add("-i");
    String audioTextFile;
    if (numberOfAudioFiles > 1) {
        audioTextFile = generateAudioFilesTexts();
    } else {
        audioTextFile = getAudioFilePath(audioRecordingFileName + Integer.toString(1));
    }

    cmd.add(audioTextFile);

    cmd.add("-vsync");
    cmd.add("vfr");
    cmd.add("-pix_fmt");
    cmd.add("yuv420p");

    String currentDateTimeString = new SimpleDateFormat("dd MMMM yyyy", Locale.US).format(Calendar.getInstance().getTime());
    File dirOut = new File(this.getExternalFilesDir(null), "D:T:" + currentDateTimeString);
    if (!dirOut.exists()) {
        dirOut.mkdirs();
    }
    directoryPath = dirOut.getAbsolutePath();
    File fileOut = new File(dirOut, "T__" + Long.toString(totalTime) + "__P__" + Integer.toString(picturesModelInfo.getNumberOfShots()) + ".mp4");
    cmd.add(fileOut.getAbsolutePath());
    Log.d(TAG, "Saving File At " + fileOut.getAbsolutePath());

    String[] finalCommand = new String[cmd.size()];

    for (int i = 0; i < cmd.size(); i++) {
        finalCommand[i] = cmd.get(i);
    }

    String finalString = "";
    for (String command : finalCommand) {
        finalString += command;
    }

    Log.d(TAG, "Final Command Is " + finalString);
    return finalCommand;
}
主要问题是视频不能在android默认播放器中播放(显示(“无法播放视频,不支持的文件类型”),但可以与VLC程序一起使用。)

澳大利亚国立大学的建议


谢谢

您的最终命令中没有空格,您需要显示此命令的完整控制台输出/日志。为什么要使用concat解复用器进行图像输入?使用图像解复用器会更容易(除非您试图改变图像显示持续时间)。我会给你一个例子,但我不知道图像输入的文件名。所有图像输入是否具有相同的宽度、高度和像素格式?如果你不知道这个问题的答案,那么显示每个图像的信息:
ffmpeg-i image1-i image2-i image3
,等等。我正在使用这个库,所以我想我可以在不编译的情况下使用它,ffmpeg在我身边工作得非常完美,一个问题是我无法用默认的android播放器打开它),可能我的命令字符串中遗漏了一些内容。我将再次询问:请显示
ffmpeg
命令中完整的控制台输出/日志。在我的第一次评论中,你仍然没有回答我的问题。为什么你很难提供帮助?我已经为你打印了元数据,它有用吗<代码>元数据:主要品牌:3gp4次要版本:0兼容品牌:isom3gp4创建时间:2017-07-20 09:25:40 com.android.version:6.0持续时间:00:00:02.03,开始时间:0.000000,比特率:168 kb/s流#1:0(英文):音频:aac(LC)(mp4a/0x6134706D),48000 Hz,立体声,fltp,156 kb/s(默认)元数据:创建时间:2017-07-20 09:25:40处理程序名称:SoundHandle Metadata.txt:只读文件系统
-y-fconcat-safe0-i/storage/emulated/0/Android/data/com.essentialsln.memtalk/files/pictures_merging.txt-i/storage/emulated/0/Android/data/com.essentialsln.memtalk/files/AudioRecording1.3gp-vsyncvfr-pix_fmtyuv420p/storage/emulated/0/Android/data/com.essentialsln.memtalk/files/D:T:19 July 2017/T__2__P__3.mp4