문맥
최근에 nVidia 드라이버를 375.26으로 업데이트하고 내 컴퓨터에서 FFmpeg N-83180-gcf3affa 및 OBS 17.0.2-5-g43e4a2e를 다시 컴파일했습니다(숫자가 아무 의미가 없다면 죄송합니다. 어떤 버전 번호가 중요한지 잘 모르겠습니다. ) 데비안 머신. RAM을 일시 중단하면 OBS 작동이 중지되며 유일한 해결 방법은 컴퓨터를 다시 시작하는 것입니다.
재생산 방법
- OBS 실행
출력 구성:
- 출력을 NVENC H.264 및 .mp4로 설정
- CBR 사용
- 비트레이트 = 200K
- Kf 간격 = 0
- 낮은 대기 시간, 고품질 사전 설정, 마스터, 자동
- 2패스 인코딩 활성화
- 그래픽 카드 = 0
- B 프레임 = 0
녹음을 시작하고 중지하여 작동하는지 확인하세요.
- 로그인 작업으로 이동하여 일시 중지를 클릭하세요.
- 재부팅하고 로그인하세요
다음 오류로 인해 녹화가 시작되고 OBS가 실패합니다.
[h264_nvenc @ 0x3fdd1e0] Failed creating CUDA context for NVENC: 0x3e7 [h264_nvenc @ 0x3fdd1e0] No NVENC capable devices found
시스템 메시지
- 위에 나열된 드라이버/소프트웨어 버전
- 그래픽 카드: MSI GTX 970
- uname -a: Linux 버전 3.16.0-4-amd64, #1 SMP Debian 3.16.39-1(2016-12-30)
- 운영 체제: 데비안 8.7 제시
XFCE 4.10이 작업 버튼 작동 방식에 영향을 미치는 경우 이를 사용하겠습니다.
질문
컴퓨터를 깨운 후 이 오류를 방지하기 위해 매번 재부팅하지 않는 방법이 있습니까?
편집 1
OBS가 이 문제의 원인이라는 것을 알고 있습니다.
테스트 사례 1:
- 컴퓨터를 시작하고 ffmpeg의 h264_nvenc 인코더를 사용하여 비디오 파일을 출력합니다.
- RAM에 일시중단
- 로그인하고 1단계를 성공적으로 반복하세요.
테스트 사례 2:
- 컴퓨터를 시작하고 OBS를 사용하여 h264_nvenc를 사용하여 비디오를 녹화합니다.
- 사직하다OBS
- RAM에 일시중단
- 로그인하고 2단계를 성공적으로 반복하세요.
테스트 사례 3:
- 컴퓨터를 시작하고 OBS를 사용하여 h264_nvenc로 비디오를 녹화합니다.
- RAM에 일시중단
- 로그인, 실패 및 표시
Cannot init CUDA
내 생각엔 OBS는 녹화가 중지될 때 스트림을 닫지 않고, 성능(?) 이유로 프로그램을 종료할 때까지 스트림에 남아 있을 수 있다는 것입니다. 이 문제를 해결하는 방법을 모르겠습니다. 오류가 발생하면 OBS를 다시 시작해도 아무런 효과가 없으며 시스템을 다시 시작해야 합니다.
GPU가 다른 모든 것을 완벽하게 처리할 수 있는 것처럼 보이지만 그럼에도 불구하고 glxinfo
이 nvidia-smi
모든 것은 nvidia-settings
GPU가 실제로 다른 작업을 처리하는 데 사용되고 있음을 확인시켜 줍니다. RAM을 정지한 후 NVENC가 유일한 문제인 것 같습니다.
편집 2
다음은 dmesg
로그입니다: https://www.diffchecker.com/wto7KPJZ
"원본" 탭은 일시 중지가 수행된 후 발생한 변경 사항이고, "변경됨" 탭은 제가 제안한 수정 사항이 수행된 후 발생한 변경 사항입니다.
답변1
FFmpeg는 시스템을 일시 중단하기 전에 h264_nvenc 스트림을 시작(및 중지하지만 필수는 아님)하는 경우에만 CUDA init를 잠급니다. OBS가 정지되기 전에 h264_nvenc 인코더로 아무 것도 기록하지 않으면 다시 로그인하면 제대로 작동할 것입니다.
로그인 후 OBS가 잠긴 경우 다음과 같은 방법으로 사용할 수 있습니다.
- OBS 종료
터미널에서 실행:
sudo rmmod nvidia_uvm && sudo modprobe nvidia_uvm
OBS를 다시 열어보세요
- ???
- 이익
제거해도 nvidia_uvm
작동하지 않으면 DRM 및 패턴 세트 모듈도 다시 로드해야 할 수 있습니다. 하지만 저는 이 문제가 발생하지 않았습니다.