FFMPEG x11grab/pulse AV 캡처: 단조롭지 않은 DTS

FFMPEG x11grab/pulse AV 캡처: 단조롭지 않은 DTS

이 문제를 해결하기 위해 많은 옵션을 만지작거렸지만 처음에는 내가 원하는 것부터 시작하고 도움을 요청하는 것이 더 낫다고 생각했습니다. 나는 일반적으로 256*240의 해상도로 일부 에뮬레이트된 게임 영상을 캡처하고 싶기 때문에 이 작업을 수행하는 동안 손실 없이 크기를 조정하지 않고 영상을 캡처하는 것이 좋겠다고 생각했습니다. 나는 다음 명령줄을 사용합니다.

ffmpeg -f x11grab -i :0.0 -f pulse -i alsa_output.pci-0000_08_00.3.analog-stereo.monitor -ac 2 -c:v libx264rgb -pix_fmt bgr0 -c:a copy -y /tmp/capture.mkv

(덧붙여서 저는 /tmp를 램 디스크/tmpfs 파티션으로 사용하는데, 이것이 영향을 미칠지는 잘 모르겠습니다.)

그러나 나는 항상 다음과 같은 경고와 함께 일종의 타임스탬프 문제에 직면합니다.

[matroska @ 0x55b042f269b0] Non-monotonous DTS in output stream 0:1;
previous: 144, current: 141; changing to 144. This may result in
incorrect timestamps in the output file.

결과 비디오에는 오디오/비디오 동기화가 해제되어 있으며, 재생할 때 비디오가 무작위로 정지되고 속도가 빨라지며 왜곡된 오디오로 인해 재생 도중 완전히 멈출 수 있습니다. 비디오 또는 오디오를 개별적으로 녹음하는 것은 잘 작동하지만 ffmpeg가 동기화를 시도할 때 문제가 나타나기 시작하는 것 같습니다.

포럼 게시물, 특히 StackExchange 네트워크에서 모든 종류의 옵션을 시도했지만 올바른 방향으로 작동하는 것으로 보이는 유일한 옵션은 다음과 같습니다 -async 1/-af aresample=async=1:min_hard_comp=0.100000:first_pts=0.

ffmpeg -f x11grab -i :0.0 -f pulse -i alsa_output.pci-0000_08_00.3.analog-stereo.monitor \
    -ac 2 -c:v libx264rgb -pix_fmt bgr0 -c:a pcm_s16le \
    -af aresample=async=1:min_hard_comp=0.100000:first_pts=0 -y /tmp/capture.mkv

이는 DTS 관련 경고를 인쇄하지 않지만 실제로 게임 플레이 중에 오디오/비디오 정지 현상이 발생하고 결과 비디오가 여전히 좋지 않습니다. 조금 의심스럽긴 하지만 내 하드웨어가 게임 에뮬레이션, 녹화, 인코딩의 오버헤드를 동시에 처리할 수 없는 것일 수도 있습니다. 아마도 vcodec과 acodec을 모두 "복사"하도록 설정하고 이를 .nut로 다중화하고(mkv는 원시 비디오를 좋아하지 않는 것 같습니다) 어떻게든 포스트에서 비디오와 오디오를 다시 동기화하는 것이 가능하다면 확인할 수 있을 것입니다. 그런 문제죠.

이 질문은 잘 정리되지 않았을 수도 있습니다. 죄송하지만 어찌할 바를 모르겠습니다. 내 목표부터 시작하여 내가 시도한 것들에 대해 조금 직접 질문을 게시하는 것이 가장 좋겠다고 생각했습니다. 문제를 해결하고, 다른 제안을 다시 시도하고, 내가 하려는 작업이 실제로 내 하드웨어에서 가능한지 평가하고 싶습니다. 질문자가 자신의 질문이 5시간 이내에 해결되지 않고 아무도 다른 것을 제공할 수 없다고 생각하면 대부분의 스택 교환 질문이 사라지는 것처럼 보이기 때문에 이는 너무 낙관적일 수 있습니다.

"neofetch"에 따르면 관련성이 있어 보이는 사양은 다음과 같습니다.

CPU: AMD Ryzen 5 1600 (12) @ 3.200GHz
GPU: NVIDIA GeForce GTX 970
Memory: 2910MiB / 16017MiB

관련 정보