Captura AV FFMPEG x11grab/pulse: DTS no monótono

Captura AV FFMPEG x11grab/pulse: DTS no monótono

He jugueteado con muchas opciones para intentar solucionar este problema, pero pensé que sería mejor empezar desde el principio desde lo que quiero y pedir ayuda. Quiero capturar algunas secuencias de juegos emuladas, generalmente con una resolución de 256*240, así que mientras lo hago pensé que también podría capturar las secuencias sin pérdidas y sin cambiar la escala. Yo uso esta línea de comando:

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

(Por cierto, uso /tmp como partición de disco ram/tmpfs, no estoy seguro de si eso afectaría las cosas).

Sin embargo, siempre me encuentro con algún tipo de problema de marca de tiempo, con una advertencia similar a esta:

[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.

El video resultante tiene audio/video desincronizado y, cuando se reproduce, el video se congelará aleatoriamente y se acelerará, con un audio distorsionado que puede terminar deteniéndose por completo a mitad de la reproducción. Grabar video o audio individualmente funciona bien, pero cuando ffmpeg intenta sincronizarlos parece que comienzan a aparecer problemas.

Probé todo tipo de opciones en publicaciones del foro, particularmente en la red StackExchange, pero la única que parecía funcionar en la dirección correcta era -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

Esto no imprime ninguna advertencia relacionada con DTS, pero en realidad experimento una congelación de audio/vídeo durante el juego y el vídeo resultante aún no es excelente. Lo dudo un poco, pero puede ser que mi hardware simplemente no sea capaz de lidiar con los gastos generales de emulación, grabación y codificación de juegos al mismo tiempo. Tal vez si es posible configurar vcodec y acodec para "copiar", mezclarlo en un .nut (aparentemente a mkv no le gusta el video sin formato), y de alguna manera volver a sincronizar el video y el audio en la publicación, podría confirmar si es ese tipo de problema.

Es posible que esta pregunta no esté muy bien formulada, y lo siento, pero estoy al límite de mi ingenio. Pensé que sería mejor publicar una pregunta yo mismo, comenzando con mi objetivo y luego un poco sobre las cosas que he probado. Me gustaría solucionar el problema, probar diferentes sugerencias nuevamente y evaluar si lo que intento hacer es realmente posible con mi hardware. Esto podría ser demasiado optimista, ya que la mayoría de las preguntas de StackExchange parecen morir si el autor de la pregunta no cree que su pregunta se haya resuelto en 5 horas y nadie puede ofrecer nada más.

Estas son especificaciones que parecen relevantes, según "neofetch":

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

información relacionada