gpt4 book ai didi

java - 如何使用监护人项目在android中使用FFMPEG连接视频

转载 作者:行者123 更新时间:2023-12-04 23:29:26 31 4
gpt4 key购买 nike

我正在尝试使用 合并两个 mp4 视频守护项目作为我的应用程序中的库项目。但它不会在指定位置生成输出。我为此经历了各种解决方案,但没有成功。
PFB 代码:

File fileTmp = this.getCacheDir(); 
File fileAppRoot = new File(this.getApplicationInfo().dataDir);

FfmpegController fc;

fc = new FfmpegController(fileTmp, fileAppRoot);



final Clip out = new Clip(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/Video/compiled.mp4");

ArrayList<Clip> listVideos = new ArrayList<Clip>();

File fileVideoRoot = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/Video");
String[] fileList = fileVideoRoot.list();

for (String fileVideo : fileList)
{
if (fileVideo.endsWith("mp4"))
{
Clip clip = new Clip();
clip.path = new File(fileVideoRoot,fileVideo).getCanonicalPath();

fc.getInfo(clip);

clip.duration = clip.duration-1;
listVideos.add(clip);


}
}


fc.concatAndTrimFilesMP4Stream(listVideos, out, false, false, new ShellUtils.ShellCallback() {

@Override
public void shellOut(String shellLine) {

System.out.println("fc>" + shellLine);
}

@Override
public void processComplete(int exitValue) {

if (exitValue < 0)
System.err.println("concat non-zero exit: " + exitValue);

}
});

我得到了异常(exception):

There was a problem rendering the video: /mnt/sdcard/Download/Video/compiled.mp4



请指导我如何在android中连接视频。

最佳答案

这不是来自 ffmpeg 标准输出的 ffmpeg 错误。

为了弄清楚实际发生了什么,您需要在 android 层中捕获来自 native “processbuilder”的 STREAM=stdout 和 STREAM=stderr 或您用来从 Android/java 获取 shell 的任何内容。 .

例如:

            ProcessBuilder builder = new ProcessBuilder(command);
Map<String, String> environ = builder.environment();
// for(Entry<String, String> entry : environ.entrySet()){
// System.out.println("ENV " +entry.getKey() + " " +entry.getValue());
// }
// builder.redirectErrorStream(true);
Process process = null;
try {
process = builder.start();

InputStream is = process.getInputStream();

InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
//System.out.println(line);
outfil=line;
}

// int exitVal = process.waitFor();
// System.out.println("Process exitValue: " + exitVal);

如果您正在使用有根电话进行测试,那么您应该能够使用 adb push 将 ffmpeg 二进制文件移动到/data/data/... 并直接调用它。

您可以结合 CLI 测试将 stderr/stdout 重定向到日志文件。

关于java - 如何使用监护人项目在android中使用FFMPEG连接视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24162861/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com