Я настраивал сборку записи для друга, похожего на моего, но я не могу заставить работать вещи в режиме реального времени, несмотря на достаточное (насколько я могу судить) аппаратное обеспечение.
Системные характеристики: 8600K, GTX 1050ti, 16 Гб оперативной памяти, 1 Тб 860 EVO
Тестовая команда (обновлена для простоты):
ffmpeg -y -hide_banner -thread_queue_size 9999 -f dshow -rtbufsize 2147.48M -video_size 1920x1080 -framerate 60 `
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" `
-thread_queue_size 9999 -f dshow -rtbufsize 2147.48M -video_size 1920x1080 -framerate 60 `
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&24df76f&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" `
-map 0 -c:v h264_nvenc -r 60 -preset: llhp -pix_fmt yuv420p -b:v 1M -minrate 1M -maxrate 1M -bufsize 1M `
C:\Users\Jordan\Videos\FFmpeg\Left\Left.ts `
-map 1 -c:v h264_nvenc -r 60 -preset: llhp -pix_fmt yuv420p -b:v 1M -minrate 1M -maxrate 1M -bufsize 1M `
C:\Users\Jordan\Videos\FFmpeg\Right\Right.ts
Цель этой команды - записать 2 отдельных синхронизированных выхода. Однако по той или иной причине эта команда не транскодирует видео в режиме реального времени, что является большой проблемой при попытке записи, а не просто конвертировать файл. Когда я опускаю один из двух выходов или делю пополам разрешение каждого входа / выхода, все работает в режиме реального времени. Это заставило бы меня поверить, что где-то в системе есть узкое место, но при мониторинге всего в диспетчере задач ничто даже близко не выходит из строя (кодер GPU, процессор, оперативная память и SSD используют менее 30%).
Более того, когда я пытаюсь записать оба потока в одном видео 4K60 через OBS, все работает отлично, как в режиме реального времени. Поэтому я не понимаю, как транскодирование двух потоков 1080p60 в FFmpeg будет более интенсивным, чем один поток 4K60 в OBS ...
С тех пор я поменял 1050ti на GTX 1080 без разницы в производительности. Это привело бы меня к мысли, что процессор виноват. Похоже, что FFmpeg на самом деле только 1-2 потока ... любой способ заставить его использовать больше? -потоки, кажется, не оказывают никакого влияния, независимо от того, где я ввожу их в команду. Что действительно странно, так это то, что у меня очень похожая команда, но я делаю два потока 4K60, а не два потока 1080p60 с GTX 1080 и 6800K ... Насколько я могу судить, 8600K имеет более высокую производительность в расчете на поток по сравнению с 6800K, поэтому я не уверен, как мне удастся добиться гораздо большего.
Любое понимание будет высоко ценится.