Использование памяти FFmpeg

Я использую новейшую библиотеку FFmpeg, чтобы смешать 4 разных входных видео. Для этого я выполняю несколько основных операций filter_complex для видео и amix для аудио. Примерно через 1 минуту обработки данных процесс завершается с сигналом «SIGKILL». Вероятно, причиной этой ошибки является нехватка памяти. Чтобы проверить текущее использование памяти, я запускаю "верхний" инструмент, который в момент сбоя показывает, что выделено 90% всей доступной памяти.

В моем пуле кубернетов доступно 30 ГБ ОЗУ и 8 ЦП. Это выглядит странно, потому что процесс FullHd потребляет 30 ГБ памяти за 1 минуту работы.

Интересно, есть ли способ оптимизировать или ограничить использование памяти.

Версия FFmpeg: 4.0.2 система: Linux кодировщик: h.264 формат: 1920x1080

Вывод FFmpeghttps://gist.github.com/mbutan/51f832a99d0edf0b09af934d1934971e

Фрагмент кода:

          ffmpeg \
  -i /tmp/a3ddcc11-9819-4bef-8e8d-156342aa68df.mp4 \
  -itsoffset 3 -i /tmp/c87d7e8f-c9e7-4fbe-b845-e6cd6d6ac7bb.mp4 \
  -itsoffset 3.199 -i /tmp/250cb6e8-8daf-4c5b-88b3-4b6cfb02834b.mp4 \
  -itsoffset 37.52 -i /tmp/24e466e1-c1e0-4797-b88a-09e2a9f5f673.mp4 \
  -itsoffset 68.04 -i /tmp/3e0e0e62-82e4-4d6a-881a-119d7c72cf9f.mp4 \
  -itsoffset 415.188 -i /tmp/02ca91d5-f0c1-4140-ba12-fa445f09ddf6.mp4 \
  -i /tmp/1.png -i /tmp/2.png -i /tmp/3.png \
  -y -filter_complex pad=1920:1080:color=black [base];[6] scale=1920:1080 [background];\
  [0:v] scale=1740:980,pad=1740:980:(ow-iw)/2:(oh-ih)/2 [main_0];[base][main_0] overlay=90:50:enable=between'(t,0,3)' [tmp_4];\
  [1:v] scale=1740:980,pad=1740:980:(ow-iw)/2:(oh-ih)/2 [main_1];[tmp_4][main_1] overlay=90:50:enable=between'(t,3,29.5)' [tmp_6];\
  [2:v] scale=1740:980,pad=1740:980:(ow-iw)/2:(oh-ih)/2 [main_2];[tmp_6][main_2] overlay=90:50:enable=between'(t,29.5,37.5)' [tmp_8];\
  [3:v] scale=1740:980,pad=1740:980:(ow-iw)/2:(oh-ih)/2 [main_3];[tmp_8][main_3] overlay=90:50:enable=between'(t,37.5,58)' [tmp_10];\
  [2:v] scale=1740:980,pad=1740:980:(ow-iw)/2:(oh-ih)/2 [main_4];[tmp_10][main_4] overlay=90:50:enable=between'(t,58,68)' [tmp_12];\
  [4:v] scale=1740:980,pad=1740:980:(ow-iw)/2:(oh-ih)/2 [main_5];[tmp_12][main_5] overlay=90:50:enable=between'(t,68,414.5)' [tmp_14];\
  [2:v] scale=1740:980,pad=1740:980:(ow-iw)/2:(oh-ih)/2 [main_6];[tmp_14][main_6] overlay=90:50:enable=between'(t,414.5,415.5)' [tmp_16];\
  [5:v] scale=1740:980,pad=1740:980:(ow-iw)/2:(oh-ih)/2 [main_7];[tmp_16][main_7] overlay=90:50:enable=between'(t,415.5,416.248)' [tmp_18];\
  [tmp_18][background] overlay=0:0 [tmp_19];[7] scale=306.66666666666663:190[user_shadow_0];\
  [tmp_19][user_shadow_0] overlay=807:842:enable=between'(t,3.199,30.833)' [shadow_output_0_0];\
  [2:v] scale=266.66666666666663:150:force_original_aspect_ratio=decrease, pad=266.66666666666663:150:(ow-iw)/2:(oh-ih)/2:black [user_0_3199];\
  [shadow_output_0_0][user_0_3199] overlay=827:862:enable=between'(t,3.199,30.833)' [tmp_23];[7] scale=306.66666666666663:190[user_shadow_0];\
  [tmp_23][user_shadow_0] overlay=807:842:enable=between'(t,37.52,57.965)' [shadow_output_0_0];\
  [2:v] scale=266.66666666666663:150:force_original_aspect_ratio=decrease, pad=266.66666666666663:150:(ow-iw)/2:(oh-ih)/2:black [user_0_37520];\
  [shadow_output_0_0][user_0_37520] overlay=827:862:enable=between'(t,37.52,57.965)' [tmp_27];[7] scale=306.66666666666663:190[user_shadow_0];\
  [tmp_27][user_shadow_0] overlay=807:842:enable=between'(t,68.04,414.648)' [shadow_output_0_0];\
  [2:v] scale=266.66666666666663:150:force_original_aspect_ratio=decrease, pad=266.66666666666663:150:(ow-iw)/2:(oh-ih)/2:black [user_0_68040];\
  [shadow_output_0_0][user_0_68040] overlay=827:862:enable=between'(t,68.04,414.648)' [tmp_31];\
  [0:v] scale=1920:1080 [intro];[tmp_31][intro] overlay=0:0:enable=between'(t,0,3.25)' [tmp_32];\
  [tmp_32][0:v] overlay='if (lte((t-3.25)*18432,w),(t-3.25)*18432,w)':0:enable=between'(t,3.25,4.45)' [tmp_33];[5:v] scale=1920:1080 [end];\
  [tmp_33][end] overlay=0:0:enable=between'(t,414.75,418)' [tmp_34];\
  [tmp_34][5:v] overlay='if (lte((t-418)*18432,w),(t-418)*18432,w)':0:enable=between'(t,418,419.2)' [outVideo];\
  [0:a]adelay=1|1 [audio_0];\
  [1:a]adelay=3001|3001 [audio_1];\
  [2:a]adelay=3200|3200 [audio_2];\
  [3:a]adelay=37521|37521 [audio_3];\
  [4:a]adelay=68041|68041 [audio_4];\
  [5:a]adelay=415189|415189 [audio_5];\
  [audio_0][audio_1][audio_2][audio_3][audio_4][audio_5] amix=inputs=6:duration=longest \
  [outAudio] -map [outVideo] -map [outAudio] -framerate 30 -g 60 -video_size 1920x1080 -vcodec libx264 -acodec libfdk_aac -profile:a aac_he -b:a 192k -ac 2 -ar 44100 -max_muxing_queue_size 9999 -threads 0 -strict experimental -preset fast /tmp/53a89b44-fd56-4c5b-adb9-a5695d52e5d2_output.mp4

пожалуйста, опубликуйте команду ffmpeg

Harry 16.10.2018 21:54

Вы смешиваете 4 видео для отображения в реальном времени или для их кодирования?

mofo77 16.10.2018 22:57

@ mofo77для кодирования

mbutan 17.10.2018 09:42

@Harry прикрепил код ffmpeg.

mbutan 17.10.2018 09:43

Я предполагаю, что itsoffset - это ваша проблема, не уверен, предназначен ли он для буферизации такого количества данных.

Harry 17.10.2018 11:45

как по-другому отложить воспроизведение видео? @Гарри

mbutan 17.10.2018 12:07

хммм, я не вижу прямого пути, но я не на 100% эксперт ;-) возможно сгенерировать черное видео из -i / dev / Zero для объединения с фактическим источником .. Но сначала убедитесь, что это ваша проблема, просто удалив его смещение и смотрим расход памяти ...

Harry 17.10.2018 15:32

Пожалуйста, также отправьте вывод ffmpeg, особенно если некоторые из графов фильтров сообщают о слишком большом количестве кадров в очереди в буфере.

user5900538 18.10.2018 10:28

@ PaulB.Mahol прикрепил вывод в сущности

mbutan 18.10.2018 12:12

Я как бы воспроизвел проблемы с памятью, а не использование -itsoffset исправило их. Попробуйте вместо этого использовать setpts и asetpts

user5900538 18.10.2018 16:07

@ PaulB.Mahol, к сожалению, не помогло

mbutan 23.10.2018 09:36

Что ж, проблема исчезла, если я обработал видео и аудио отдельно. Вы можете смешать их позже.

user5900538 23.10.2018 12:11

тогда постобработка становится действительно сложной, что увеличивает время подготовки.

mbutan 24.10.2018 12:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
13
2 232
1

Ответы 1

Проблема с утечкой памяти была решена с помощью последней ветки Master, большое спасибо Полу Б. Махолу за его приверженность. Этот коммит устраняет указанную проблему: совершить

Другие вопросы по теме