Обрезка видео с помощью FFMpeg происходит очень медленно

#android #ffmpeg

#Android #ffmpeg

Вопрос:

Я использую ffmpeg в Android для обрезки видео. Для этого я использую command:

 ffmpeg -i movie.mp4 -vf "crop=640:256:0:400" -strict -2 YourCroppedMovie.mp4
 

Моя проблема в том, что это невероятно медленно. Обрезка 10-секундного фильма занимает около 30 секунд. Есть ли какой-нибудь способ ускорить это?

Ответ №1:

Хорошо, попробуйте внести изменения в свою команду следующим образом:

 ffmpeg -i movie.mp4 -vf "crop=640:256:0:400" -threads 5 -preset ultrafast -strict -2 YourCroppedMovie.mp4
 

Я попробовал это и сократил время выполнения с 46 секунд до 4 секунд. Теперь это слишком быстро … 🙂

Комментарии:

1. Поведение по умолчанию для потоков автоматически выбирает оптимальное значение, поэтому принудительное использование определенного значения может быть неоптимальным.

2. привет @kalpesh Я делаю так, как вы указали, но без особого эффекта, не могли бы вы мне помочь, пожалуйста, я уменьшаю масштаб изображений, подобных этому StringBuilder .append(«zoompan = z=’if(lte (zoom,1.0),1.5, max(1.001, zoom-0.0015))’: d= 125″); StringBuilder.append(» -потоки 10 -предустановленные сверхбыстрые «);

3. @Sunil Не могли бы вы поделиться со мной своей полной командой, которую вы используете сейчас?

4. ffmpeg -цикл 1 -я папка.getAbsolutePath()/IMG%d.jpg -я songfolder.getAbsolutePath() -строгий -2 -vf «zoompan=z=’если (lte(zoom,1.0), 1.5,max(1.001, zoom-0.0015))’: d = 125» -c:v libx264 -t 5 -секундное уменьшение масштаба «800×450».mp4

5. @Kalpesh получение Unrecognized option 'threads 5 -preset ultrafast'. здесь команды String[] cmd = {"-i", tempPath, "-vf", "scale=640:ih*640/iw, crop=" cropParams, "-threads 5 -preset ultrafast","-strict","experimental","-vcodec","libx264","-preset","ultrafast",outPath};