FFmpeg가 실시간으로 트랜스코딩되지 않음

FFmpeg가 실시간으로 트랜스코딩되지 않음

나와 비슷한 친구를 위해 녹음 빌드를 설정했지만 (내가 알 수 있는 한) 하드웨어가 충분함에도 불구하고 실시간으로 작동하도록 할 수 없는 것 같습니다.

시스템 사양: 8600K, GTX 1050ti, 16GB RAM, 1tb 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 인코더, CPU, RAM 및 SSD 사용량이 30% 미만).

게다가 OBS를 통해 하나의 4K60 비디오에 두 스트림을 모두 녹화하려고 하면 실시간처럼 완벽하게 작동합니다. 그래서 FFmpeg에서 두 개의 1080p60 스트림을 트랜스코딩하는 것이 OBS에서 하나의 4K60 스트림을 트랜스코딩하는 것보다 어떻게 더 집약적인지 이해가 되지 않습니다.

그 이후로 성능 차이 없이 1050ti를 GTX 1080으로 교체했습니다. 이로 인해 CPU에 결함이 있다고 믿게 됩니다. FFmpeg가 실제로 1~2개의 스레드에만 도달하는 것 같습니다. 강제로 더 많이 사용하도록 할 수 있는 방법은 없나요? -threads는 명령에 삽입한 위치에 관계없이 아무런 영향을 미치지 않는 것 같습니다. 정말 이상한 점은 매우 유사한 명령이 있는데 GTX 1080 및 6800K에서 2개의 1080p60 스트림을 수행하는 것과 대조적으로 2개의 4K60 스트림을 수행하고 있다는 것입니다. 제가 알 수 있는 한 8600K가 GTX 1080K에 비해 스레드당 성능이 더 높다는 것을 알 수 있습니다. 6800K인데 어떻게 그렇게 더 많은 것을 얻을 수 있는지 잘 모르겠습니다.

어떤 통찰력이라도 높이 평가하겠습니다.

답변1

문제는 캡처 카드에 있었습니다. 저는 그의 시스템에서 하나를 꺼내서 제 컴퓨터에 넣었고 문제를 재현할 수 있었습니다. 이것은 내 다른 캡처 카드로는 재현할 수 없으며 그 중 4개가 있습니다.

이 문제는 카드 자체에 저장된 Avermedia의 스트림 엔진 블로트웨어로 인해 발생한 것으로 보입니다. 카드는 실제로 두 개의 장치로 표시됩니다. 하나는 이름에 스트림 엔진이 없고 다른 하나는 문제가 완화되었지만 여전히 존재하는 장치를 선택하는 경우입니다. 어쨌든 문제가 Elgato의 HD60 Pro에 존재하지 않는다는 것을 확인하고 그 중 2개를 주문했습니다.

돌이켜보면 블로트웨어/비전통적인 펌웨어는 진단하기 매우 어려운 문제를 쉽게 설명합니다. 운 좋게도 우리는 Avermedia Live Gamer HD 2를 특가로 구입했고 재판매하여 전액 환불받을 수 있었습니다.

관련 정보