У меня проблемы с захватом и кодированием аудио + видео на лету в macOS.
Я попробовал два варианта:
ffmpeg
ffmpeg -threads 0 -f avfoundation -s 1920x1080 -framerate 25 -I 0:0 -async 441 -c:v libx264 -preset medium -pix_fmt yuv420p -crf 22 -c:a libfdk_aac -aq 95 -y
gstreamer
gst-launch-1.0 -ve avfvideosrc device-index=0 ! video/x-raw,width=1920,height=1080,framerate=25/1 ! vtenc_h264 ! queue ! mp4mux name=mux ! filesink location=out.mp4 osxaudiosrc device=0 ! audio/x-raw ! faac midside=false ! queue ! mux.
Опция ffmpeg работает, но только для более низких разрешений.С более высоким разрешением Mac mini (2018 поколение) не может выполнять тяжелую работу.Я думаю, потому что я установил ffmpeg с brew, поэтому он не был скомпилирован на моей машине, то есть он не использует аппаратный кодировщик h264 в Mac?
Опция gstreamer также работает, но есть небольшаяпроблема синхронизации аудио / видео (аудио на 100 мс опережает видео).Кажется, я не могу добавить задержку в очередь GStreamer (она игнорирует ее):
queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 min-threshold-time=100000000
Кто-нибудь, кто имеет опыт работы с этим?Спасибо!