펄스 오디오를 사용하여 화면을 녹음하면 동기화가 해제됩니다.

펄스 오디오를 사용하여 화면을 녹음하면 동기화가 해제됩니다.

따르다ffmpeg를 사용한 데스크탑 캡처 가이드Linux의 경우 오디오 소스가 펄스 형식인 경우 프레임이 정지되고 비동기화되고 fps가 느려지며 오디오에 비해 비디오가 지연됩니다.

이 문제를 해결하기 위해 연구에서 찾은 여러 매개변수 조합을 시도했습니다. 현재 사용 중인 명령은 다음과 같습니다.

ffmpeg \
  -video_size 1920x1080 \
  -framerate 60 \
  -f x11grab \
  -probesize 42M \
  -thread_queue_size 64 \
  -i :0.0 \
  -f pulse \
  -thread_queue_size 64 \
  -i default \
  -c:v libx264rgb \
  -crf 0 \
  -preset ultrafast \
  -c:a aac \
  -ac 2 \
  -b:a 160k \
  -ar 44100 \
  -strict experimental \
  -threads 8 \
  -vsync vfr \
  -max_muxing_queue_size 64 \
  -f mp4 \
  -y o.mp4

그런데 재미있는 사실은 오디오 소스를 변경하면 -f alsa -i pulse작동하고 경고 메시지가 나타난다는 것입니다."out_0_1에 100개의 버퍼가 대기 중입니다. 문제가 있을 수 있습니다." 왼쪽.

내가 사용하고 있는 버전4.2.4-1우분투0.1, pulse는 더 다재다능하고 애플리케이션 및 사용자 정의 모듈을 통해 볼륨 제어를 허용하므로 ffmpeg가 pulse와 제대로 작동하기를 바랍니다.

증거:https://youtu.be/rhjfQNd5lP4

이것은 내 기본 소스( pactl list sources)입니다.

Source #1
        State: SUSPENDED
        Name: alsa_input.pci-0000_27_00.3.analog-stereo
        Description: Family 17h (Models 00h-0fh) HD Audio Controller Estéreo analógico
        Driver: module-alsa-card.c
        Sample Specification: s16le 2ch 48000Hz
        Channel Map: front-left,front-right
        Owner Module: 9
        Mute: no
        Volume: front-left: 19661 /  30% / -31.37 dB,   front-right: 19661 /  30% / -31.37 dB
                balance 0.00
        Base Volume: 6554 /  10% / -60.00 dB
        Monitor of Sink: n/a
        Latency: 0 usec, configured 0 usec
        Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
        Properties:
                alsa.resolution_bits = "16"
                device.api = "alsa"
                device.class = "sound"
                alsa.class = "generic"
                alsa.subclass = "generic-mix"
                alsa.name = "ALC892 Analog"
                alsa.id = "ALC892 Analog"
                alsa.subdevice = "0"
                alsa.subdevice_name = "subdevice #0"
                alsa.device = "0"
                alsa.card = "1"
                alsa.card_name = "HD-Audio Generic"
                alsa.long_card_name = "HD-Audio Generic at 0xfe800000 irq 69"
                alsa.driver_name = "snd_hda_intel"
                device.bus_path = "pci-0000:27:00.3"
                sysfs.path = "/devices/pci0000:00/0000:00:08.1/0000:27:00.3/sound/card1"
                device.bus = "pci"
                device.vendor.id = "1022"
                device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
                device.product.id = "1457"
                device.product.name = "Family 17h (Models 00h-0fh) HD Audio Controller"
                device.string = "front:1"
                device.buffering.buffer_size = "17664"
                device.buffering.fragment_size = "2944"
                device.access_mode = "mmap"
                device.profile.name = "analog-stereo"
                device.profile.description = "Estéreo analógico"
                device.description = "Family 17h (Models 00h-0fh) HD Audio Controller Estéreo analógico"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
        Ports:
                analog-input-front-mic: Microfone frontal (priority: 8500, available)
                analog-input-rear-mic: Microfone traseiro (priority: 8200, not available)
                analog-input-linein: Entrada de linha (priority: 8100, not available)
        Active Port: analog-input-front-mic
        Formats:
                pcm

이 문제가 내 사운드 카드 때문인지 아니면 ffmpeg 설정 누락으로 인한 것인지 알 수 없으므로, 제가 시도한 명령을 시도해보고 효과가 있는지 다시 보고해 주시겠습니까? 제가 구현해 볼 수 있는 아이디어가 있으면 도와주세요.

관련 정보