Почему ffmpeg занимает столько памяти, когда я пытаюсь остановить прямую трансляцию? - PullRequest
0 голосов
/ 04 июля 2019

Когда работает функция ffmpeg, проблем с памятью нет, и все работает без сбоев.Однако, когда я пытаюсь остановить поток / ffmpeg нажатием q (или ctrl-c), ffmpeg зависает, не принимает никаких других входных данных и внезапно занимает неприличное количество памяти.

Яиспользование ffmpeg для прямой трансляции на YouTube.Я использую MacBook Mid 2015 под управлением MacOS Mojave.

Вот функция, которую я использую с ffmpeg.

ffmpeg -re -f lavfi -i testsrc2=s=1280x720:r=60 -re -i "INPUT FILE.mp3" -vcodec libx264 -pix_fmt yuv420p -preset "ultrafast" -r 60 -g 120 -b:v 6168000 -filter_complex "[0]scale=1280:720;[1]aloop=start=0:size=202*44100:loop=-1" -acodec libmp3lame -ar 44100 -threads 3 -b:a 640000 -qscale:a 5 -bufsize 512k -f flv ${YOUTUBE_URL}/${KEY}

Команда работает отлично и, как и ожидалось, во время работы.На данный момент, в Activity Monitor я вижу, что ffmpeg, кажется, достигает максимума около 101 МБ.Когда я нажимаю q, которая является кнопкой для завершения кодирования, если поток продолжался около десяти минут, ffmpeg зависает и в мониторе активности появляется команда ffmpeg, которая поднимается на несколько гигабайт памяти без каких-либо признаков остановки.Максимум, что я заметил, составляет около 6 ГБ, прежде чем я убил команду.Ffmpeg, кажется, записывает почти гигабайт данных в память в секунду.Фактически, это замедляет мой компьютер, когда это происходит, и угрожает полностью заполнить мою память.

Когда это происходит, нет сообщений об ошибках (за исключением предупреждений о нехватке памяти) и терминале, на котором запущен ffmpegКажется, что он не отвечает ни на какие команды уничтожения, и единственный способ облегчить ситуацию - принудительно закрыть само окно терминала.

Мне интересно, возникает ли какая-то проблема с утечкой памяти или я что-то написалнеправильно или не включает что-то, что было бы необходимо для потоковой трансляции с помощью ffmpeg.

...