따르다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 설정 누락으로 인한 것인지 알 수 없으므로, 제가 시도한 명령을 시도해보고 효과가 있는지 다시 보고해 주시겠습니까? 제가 구현해 볼 수 있는 아이디어가 있으면 도와주세요.