Я хочу добавить индикатор выполнения во время FFMPEG
исполнения андроида.
Когда я запустил команду FFMPEG
, тогда индикатор выполнения начнется с процентного прогона.Как добавить индикатор выполнения в FFMPEG android
1
A
ответ
3
Я добавил ProgressDialog используя время видео
final int msec = MediaPlayer.create(this, Uri.fromFile(new File(path))).getDuration();
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setMax(msec);
dialog.setMessage("Progress");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(0);
затем в OnStart
Метод ExecuteBinaryResponseHandler
вызова dialog.show()
и обновить Прогресс в onProgress(String message)
Метод
@Override
public void onProgress(String message) {
int start = message.indexOf("time=");
int end = message.indexOf(" bitrate");
if (start != -1 && end != -1) {
String duration = message.substring(start + 5, end);
if (duration != "") {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
dialog.setProgress((int)sdf.parse("1970-01-01 " + duration).getTime());
}catch (ParseException e)
{
e.printStackTrace();
}
}
}
}
закрыть диалоговое окно в OnFinish()
@Override
public void onFinish() {
String s = System.currentTimeMillis() - MainActivity.this.startTime + "";
dialog.dismiss();
}
2
Для того, чтобы рассчитать FFMPEG прогресс в процентах
ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
@Override
public void onFailure(String s) {
Log.d(TAG, "FAILED with output : " + s);
}
@Override
public void onSuccess(String s) {
Log.d(TAG, "SUCCESS with output : " + s);
}
@Override
public void onProgress(String s) {
Log.d(TAG, "Started command : ffmpeg " + Arrays.toString(command));
Log.d(TAG, "progress : " + s);
Pattern timePattern = Pattern.compile("(?<=time=)[\\d:.]*");
Scanner sc = new Scanner(s);
String match = sc.findWithinHorizon(timePattern, 0);
if (match != null) {
String[] matchSplit = match.split(":");
if (totalDur != 0) {
float progress = (Integer.parseInt(matchSplit[0]) * 3600 +
Integer.parseInt(matchSplit[1]) * 60 +
Float.parseFloat(matchSplit[2]))/totalDur;
float showProgress = (progress * 100);
Log.d(TAG, "=======PROGRESS======== " + showProgress);
}
}
}
@Override
public void onStart() {
Log.d(TAG, "Started command : ffmpeg " + Arrays.toString(command));
progressDialog.setMessage("Processing...");
progressDialog.show();
}
@Override
public void onFinish() {
Log.d(TAG, "Finished command : ffmpeg " + Arrays.toString(command));
progressDialog.dismiss();
}
});
totalDur = 25; // за 25 сек. Видео
Но totalDur изменится в соответствии с работой, как для 2x Slow Video, вы должны дать totalDur = 2 * 25; // 50 сек. Видео
Смежные вопросы
- 1. Android - Добавить индикатор выполнения WebView
- 2. Как добавить индикатор выполнения?
- 3. Как добавить индикатор выполнения
- 4. Индикатор выполнения в android
- 5. Как добавить индикатор выполнения в tab2 webView
- 6. Как добавить индикатор выполнения бутстрапа?
- 7. Добавить анимацию на индикатор выполнения android
- 8. Добавить индикатор выполнения
- 9. Может ли ffmpeg показать индикатор выполнения?
- 10. как добавить индикатор выполнения для резервного копирования контактов в android
- 11. Как добавить индикатор выполнения в UIAlertController?
- 12. Как добавить индикатор выполнения в WWW :: Механизировать?
- 13. Как добавить пользовательский индикатор выполнения в wix
- 14. Как добавить индикатор выполнения в ионном приложении
- 15. Как добавить индикатор выполнения песни в SoundManager2?
- 16. Как добавить индикатор выполнения в python?
- 17. Круговой индикатор выполнения в android
- 18. Реализовать индикатор выполнения в android
- 19. Как добавить индикатор выполнения для webview
- 20. Добавить индикатор выполнения для загрузчика
- 21. Как показать индикатор выполнения/круг в android
- 22. Как создать индивидуальный индикатор выполнения в android
- 23. Добавить индикатор выполнения для просмотра изображения в коде в android
- 24. Android: Как добавить вертикальный индикатор выполнения к главному экрану?
- 25. Как получить FFMPEG Progress, чтобы создать индикатор выполнения?
- 26. Индикатор выполнения в VB 6.0 из процесса транскодирования в FFMPEG
- 27. Android: индикатор выполнения: три состояния
- 28. Android - автоматически отменить индикатор выполнения
- 29. C# добавить индикатор выполнения в textBox
- 30. добавить пользовательский индикатор выполнения в андроиде webview
@ Dastan.lqbal Что делать, если вы не знаете длину видео, которое будет сохранено? –
В этом случае вы можете захватить полные кадры из видео, а затем вы можете сопоставить – dastan
Можете ли вы отредактировать/расширить свой ответ и дать пример того, как я могу это достичь? –