2014-01-30 2 views
1

Я использую команду ниже, чтобы применить эффект, его принять 6-8 минут, чтобы применить эффект для видео 2min. Пожалуйста, помогите мне улучшить эффективное время для команд ffmpeg.Android ffmpeg применить видеоэффекты принять время

String commandStr = "ffmpeg -y -i " 
      + mVideoData.getPath() 
      + " -strict experimental -vf curves=vintage -s 640x480 -r 30 -aspect 4:3 -ab 48000 -ac 2 -ar 22050 -b 2097k -vcodec mpeg4 /sdcard/videokit/curve.mp4"; 

Заранее спасибо.

ответ

3

Помните, что вы работаете над телефоном.

Это не рабочие лошади, а только телефоны, построенные для длительного использования на небольшом количестве батарей. Фильтр curves довольно ресурсоемкий, поскольку он вычисляет новое значение для каждого отдельного пикселя для каждого кадра в вашем входном видео. Сам видеокодер, вероятно, не будет узким местом здесь.

Эффекты на видео лучше визуализируются не на самом телефоне, а на каком-то мясистом веб-сервере. В телефоне вы можете сначала запустить эффект в клипе предварительного просмотра или просто неподвижное изображение.

2

Прежде всего, я полностью согласен с @slhck. Вы должны понимать ограничение мобильных вычислений. Но чтобы удовлетворить вас, вы можете попробовать их.

Включить -preset ultrafast вариант. Это значительно сокращает время, но жертвует качеством. Я выполнил вашу команду с этим для видео 4 min., и это заняло 3-4 минуты.

String commandStr = "ffmpeg -y -i " 
     + mVideoData.getPath() 
     + " -strict experimental -vf curves=vintage -s 640x480 -r 30 -aspect 4:3 -ab 48000 -ac 2 -ar 22050 -b 2097k -preset ultrafast /sdcard/videokit/curve.mp4"; 

Далее вы можете уменьшить audio bitrate и удалить audio sampling скорость тоже. Если возможно, также уменьшите framerate. Все это может сократить время.

Надеется, что это помогает you.Cheers. :)

+0

спасибо за ответ. Используется над командой, но нет никакого улучшения времени. – PrvN

+0

Ну, я уже пробовал; но вы должны увидеть общий результат (для всех размеров файлов). – BlueSword

+0

Обратите внимание, что OP использует кодировщик mpeg4, а ваша команда использует x264. Использование x264 заставляет все это работать дольше, даже при сверхбыстрой настройке. Возможно, можно попробовать кодировать MJPEG или без потерь, чтобы увидеть, сколько времени занимает сама фильтрация (cc @PrvN) – slhck

-1

за секунды изображения создать видео

commandStr = "ffmpeg -framerate 1/1 -i " + privatePath + "img_%d.jpg -strict experimental -vf curves=vintage -s 640x480 -r 10 -aspect 4:3 -ab 48000 -ac 2 -ar 22050 -b 2097k -preset ultrafast "+privatePath+ "Video.mp4"; 
+1

Пожалуйста, объясните, почему это работает. – cassioscabral

 Смежные вопросы

  • Нет связанных вопросов^_^