我的Android代码中ffmpeg的错误部分是什么?
我想要混合视频。(图像+视频) 原始视频的总持续时间为180秒。我想把图像放在视频的前面。所以,我在android studio中编写了一些代码。 但是我看不到任何吐司。 怎么了?如何检查流程结束 。。。 path=“图书馆文件夹”强>我的Android代码中ffmpeg的错误部分是什么?,android,video,ffmpeg,Android,Video,Ffmpeg,我想要混合视频。(图像+视频) 原始视频的总持续时间为180秒。我想把图像放在视频的前面。所以,我在android studio中编写了一些代码。 但是我看不到任何吐司。 怎么了?如何检查流程结束 。。。 path=“图书馆文件夹” 私有类ProcessVideo扩展异步任务{ @凌驾 受保护的Void doInBackground(Void…参数){ 进程ffmpegProcess=null; 试一试{ //初始化进程视频的命令 //库是视频处理库。 String[]command={pat
私有类ProcessVideo扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
进程ffmpegProcess=null;
试一试{
//初始化进程视频的命令
//库是视频处理库。
String[]command={path,“-i”,input,“-r”,“1”,“-q:v”,“2”,“-f”,“image”,input};
ffmpegProcess=newprocessbuilder(ffmpegCommand).redirectErrorStream(true.start();
OutputStream ffmpegOutStream=ffmpegProcess.getOutputStream();
BufferedReader=new BufferedReader(new InputStreamReader(ffmpegProcess.getInputStream());
弦线;
Log.v(这个标签,***开始FFMPEG***”);
而((line=reader.readLine())!=null)
{
//进行中
Log.v(此标记为“***”+行+“***”);
}
//完成所有流程
Log.v(此标签,***结束FFMPEG***”);
videoProcessFinishFlag=true;
}捕获(IOE异常){
e、 printStackTrace();
}
if(ffmpegProcess!=null){
ffmpegProcess.destroy();
}
返回null;
}
受保护的void onPostExecute(void…result){
//显示结果
Toast Toast=Toast.makeText(VideoEditorActivity.this,“处理视频完成”,Toast.LENGTH\u LONG);
toast.show();
}
}
您遗漏了一些参数。
试试这个:
String[]Command={path,“-y”,“-i”,input,“-strict”,“experional”,“-r”,“1”,“-q:v”,“2”,“-f”,“image”,input};
上面的命令有两个“输入”,那么它们是不同的。
第一个参数:视频路径
第二个参数:图像文件路径
对吗?我认为,这个命令需要花费很长时间来处理视频。
谢谢您的承诺。那么您对ffmpeg了解多少?我对你的回答很感兴趣。然后jim22,我还有更多的问题。你想回答我更多的问题吗?
private class ProcessVideo extends AsyncTask<Void, Integer, Void> {
@Override
protected Void doInBackground(Void... params) {
Process ffmpegProcess = null;
try {
// initialize command for process video
// library is video process library.
String[] command ={path,"-i", input, "-r", "1", "-q:v", "2", "-f", "image", input};
ffmpegProcess = new ProcessBuilder(ffmpegCommand).redirectErrorStream(true).start();
OutputStream ffmpegOutStream = ffmpegProcess.getOutputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(ffmpegProcess.getInputStream()));
String line;
Log.v(THISTAG,"***Starting FFMPEG***");
while ((line = reader.readLine()) != null)
{
// in progress
Log.v(THISTAG,"***"+line+"***");
}
// finish all process
Log.v(THISTAG,"***Ending FFMPEG***");
videoProcessFinishFlag = true;
} catch (IOException e) {
e.printStackTrace();
}
if (ffmpegProcess != null) {
ffmpegProcess.destroy();
}
return null;
}
protected void onPostExecute(Void... result) {
// show result
Toast toast = Toast.makeText(VideoEditorActivity.this, "Done Processing Video", Toast.LENGTH_LONG);
toast.show();
}
}