FFMpeg: объединить изображения со звуком для определенной продолжительности - PullRequest
0 голосов
/ 03 июля 2018

Я работал над FFMpeg с прошлых 7 дней. Мне необходимо создать видео, где мне нужно выполнить следующее:

  1. Concat несколько изображений в видео, выбранных из хранилища Android.
  2. Add a music файл [тот же самый, выбранный из хранилища Android].
  3. Set Duration per image будет показано на видео. например если выбрано 3 изображения, то общая продолжительность видео должна составлять 3 *, выбранных пользователем.

То, что я сделал до сих пор.

Я использую implementation 'nl.bravobit:android-ffmpeg:1.1.5' для FFmpeg предварительно собранных двоичных файлов. Ниже приведена команда, которая использовалась для объединения изображений и установки продолжительности:

ffmpeg -r 1/duration_selected_by_user -f concat -safe 0 -i path_of_concat_file.txt -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p path_of_output_video_file.mp4 

Примечание:

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

Проблема: Когда я пытаюсь добавить аудио в одном и том же процессе, прогресс выполняется в течение длительного времени даже для небольшого аудио с помощью следующей команды:

ffmpeg -r 1/duration_selected_by_user -i path_of_audio_file.mp3 -f concat -safe 0 -i path_of_concat_file.txt -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p path_of_output_video_file.mp4

Похоже, что есть какая-то проблема в команде, так как я не очень хорошо знаком с этой технологией. Как я могу улучшить производительность объединения изображений и звука, чтобы получить лучшие результаты?

Важные ссылки, связанные с контекстом:

https://github.com/bravobit/FFmpeg-Android

1 Ответ

0 голосов
/ 10 июля 2018

Как @HB упоминается в комментариях:

Попробуйте добавить -preset ultrafast после -pix_fmt yuv420p

A preset - это набор опций, которые обеспечивают определенную скорость кодирования и степень сжатия . Более медленный пресет обеспечит лучшее сжатие (сжатие - это качество для каждого размера файла). Это означает, что, например, если вы нацелены на определенный размер файла или постоянную скорость передачи данных, вы достигнете лучшего качества с более медленной предустановкой. Аналогично, для кодирования с постоянным качеством вы просто сохраните битрейт, выбрав более медленную предустановку. Доступные предустановки в порядке убывания скорости:

  • сверхбыстрый
  • сверхбыстрый
  • veryfast
  • быстрее
  • быстро
  • средний - предустановка по умолчанию
  • медленно
  • медленнее
  • veryslow
  • плацебо - игнорируйте это, поскольку это бесполезно

Ссылка: https://trac.ffmpeg.org/wiki/Encode/H.264#Preset

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...