스크린캐스트를 찍는 ffmpeg 스크립트가 있습니다. 사무실에는 Debian 9가 있고 집에는 Xubuntu 18.04가 있습니다. 두 운영 체제 모두에서 다음은 내 마이크의 시스템 오디오를 녹음하는 데 작동합니다.
pacmd set-default-source alsa_output.pci-0000_00_14.2.analog-stereo.monitor
ffmpeg \
-thread_queue_size 4096 -f alsa -ac 1 -ar 48000 -i default \
-thread_queue_size 4096 -f alsa -ac 1 -ar 48000 -i plughw:CARD=Device,DEV=0 \
-filter_complex amix=inputs=2 \
-thread_queue_size 4096 -f x11grab -r 30 -s 1920x1080 -i $DISPLAY+1920,0 \
-c:v libx264 -crf 20 -preset veryfast \
-c:a aac -ac 2 -b:a 192k \
-pix_fmt yuv420p -movflags faststart \
~/Desktop/out.mp4
이는 Pulse의 "내장 오디오 모니터"를 사용하여 데스크탑 오디오를 캡처합니다. 안타깝게도 Debian 10, Xubuntu 19.04 및 19.10, Fedora 30에서는 화면 녹화를 종료하고 눌러도 q
제대로 멈추지 않습니다. 정지됩니다. 그런 다음 프롬프트로 돌아가려면 Ctrl+C를 여러 번 사용해야 합니다. 내 스크립트가 종료되고 필요한 다음 명령이 실행되지 않습니다. 기회가 되는 대로 이 버그를 보고하겠습니다. 이것이 ALSA 버그인지 Pulse 버그인지 확실하지 않습니다. Debian 9와 Debian 10 모두에 동일한 ffmpeg 버전이 있고 Debian 9가 아닌 Debian 10에서만 발생하기 때문에 이것이 ffmpeg 버그라고 생각하지 않습니다.
저는 레노버 ThinkCentre를 사용하고 있습니다. 전면 및 후면 오디오 출력과 마이크용 3.5mm 잭이 있습니다. 3.5mm 케이블을 사용하여 오디오를 마이크 잭으로 다시 라우팅합니다. 작동하지만 오디오 품질이 좋지 않습니다. 이를 위해 -f alsa -i plughw:CARD=Generic,DEV=0
ffmpeg 명령에서 사용했습니다. ALSA 장치 이름을 사용하면 Xubuntu 19.10 등에서 중단되지 않습니다.
그래서 저는 ALSA 루프백 장치를 사용하여 시스템 오디오를 녹음하려고 노력해 왔습니다. 도저히 쓸 수 없었습니다. 부팅 시 커널 모듈을 로드합니다 snd-aloop
. ~/.asoundrc
페이지 하단에서 다양한 구성 옵션을 시도했습니다 .여기그리고여기. 이것이 arecord -L
내 시스템의 출력입니다.
default
Playback/recording through the PulseAudio sound server
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
sysdefault:CARD=Loopback
Loopback, Loopback PCM
Default Audio Device
front:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Front speakers
surround21:CARD=Loopback,DEV=0
Loopback, Loopback PCM
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Loopback,DEV=0
Loopback, Loopback PCM
4.0 Surround output to Front and Rear speakers
surround41:CARD=Loopback,DEV=0
Loopback, Loopback PCM
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Loopback,DEV=0
Loopback, Loopback PCM
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Loopback,DEV=0
Loopback, Loopback PCM
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Loopback,DEV=0
Loopback, Loopback PCM
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
dmix:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Direct sample mixing device
dmix:CARD=Loopback,DEV=1
Loopback, Loopback PCM
Direct sample mixing device
dsnoop:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Direct sample snooping device
dsnoop:CARD=Loopback,DEV=1
Loopback, Loopback PCM
Direct sample snooping device
hw:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Direct hardware device without any conversions
hw:CARD=Loopback,DEV=1
Loopback, Loopback PCM
Direct hardware device without any conversions
plughw:CARD=Loopback,DEV=0
Loopback, Loopback PCM
Hardware device with all software conversions
plughw:CARD=Loopback,DEV=1
Loopback, Loopback PCM
Hardware device with all software conversions
sysdefault:CARD=Generic
HD-Audio Generic, ALC662 rev3 Analog
Default Audio Device
front:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
Front speakers
dmix:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
Direct sample mixing device
dmix:CARD=Generic,DEV=2
HD-Audio Generic, ALC662 rev3 Alt Analog
Direct sample mixing device
dsnoop:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
Direct sample snooping device
dsnoop:CARD=Generic,DEV=2
HD-Audio Generic, ALC662 rev3 Alt Analog
Direct sample snooping device
hw:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
Direct hardware device without any conversions
hw:CARD=Generic,DEV=2
HD-Audio Generic, ALC662 rev3 Alt Analog
Direct hardware device without any conversions
plughw:CARD=Generic,DEV=0
HD-Audio Generic, ALC662 rev3 Analog
Hardware device with all software conversions
plughw:CARD=Generic,DEV=2
HD-Audio Generic, ALC662 rev3 Alt Analog
Hardware device with all software conversions
sysdefault:CARD=Device
USB PnP Audio Device, USB Audio
Default Audio Device
front:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
Front speakers
surround21:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
Direct sample mixing device
dsnoop:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
Direct sample snooping device
hw:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
Direct hardware device without any conversions
plughw:CARD=Device,DEV=0
USB PnP Audio Device, USB Audio
Hardware device with all software conversions
sysdefault:CARD=U0x46d0x825
USB Device 0x46d:0x825, USB Audio
Default Audio Device
front:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
Front speakers
surround21:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
Direct sample mixing device
dsnoop:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
Direct sample snooping device
hw:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
Direct hardware device without any conversions
plughw:CARD=U0x46d0x825,DEV=0
USB Device 0x46d:0x825, USB Audio
Hardware device with all software conversions
나열된 루프백 장치를 사용하여 다음 테스트를 실행했습니다. 재생 중인 오디오가 아래에 녹음되지 않았습니다.
ffmpeg -f alsa -i loopin -t 10 1.wav
ffmpeg -f alsa -i loopout -t 10 2.wav
ffmpeg -f alsa -i sysdefault:CARD=Loopback -t 10 3.wav
ffmpeg -f alsa -i front:CARD=Loopback,DEV=0 -t 10 4.wav
ffmpeg -f alsa -i surround21:CARD=Loopback,DEV=0 -t 10 5.wav
ffmpeg -f alsa -i surround40:CARD=Loopback,DEV=0 -t 10 6.wav
ffmpeg -f alsa -i surround41:CARD=Loopback,DEV=0 -t 10 7.wav
ffmpeg -f alsa -i surround50:CARD=Loopback,DEV=0 -t 10 8.wav
ffmpeg -f alsa -i surround51:CARD=Loopback,DEV=0 -t 10 9.wav
ffmpeg -f alsa -i surround71:CARD=Loopback,DEV=0 -t 10 10.wav
ffmpeg -f alsa -i dmix:CARD=Loopback,DEV=0 -t 10 11.wav
ffmpeg -f alsa -i dmix:CARD=Loopback,DEV=1 -t 10 12.wav
ffmpeg -f alsa -i dsnoop:CARD=Loopback,DEV=0 -t 10 13.wav
ffmpeg -f alsa -i dsnoop:CARD=Loopback,DEV=1 -t 10 14.wav
ffmpeg -f alsa -i hw:CARD=Loopback,DEV=0 -t 10 15.wav
ffmpeg -f alsa -i hw:CARD=Loopback,DEV=1 -t 10 16.wav
ffmpeg -f alsa -i plughw:CARD=Loopback,DEV=0 -t 10 17.wav
ffmpeg -f alsa -i plughw:CARD=Loopback,DEV=1 -t 10 18.wav
pavucontrol
루프백 장치가 나열되지 않은 것으로 나타났습니다 . 그래서 다음 명령을 실행했습니다 pactl load-module module-loopback
. 이제 "재생" 탭에만 표시되고 다른 탭에는 표시되지 않습니다. 나는 이 모든 것을 Xubuntu 18.04에서 테스트했지만 Xubuntu 19.10도 설치했습니다.
과거에는 펄스 장치, 즉 에서 ffmpeg를 사용해 보았습니다 pacmd list-sources
. 이로 인해 녹음된 시스템 오디오가 1-2초 지연되었습니다.
답변1
이것은 나에게 효과적입니다.
ffmpeg -f alsa -ac 1 -i dsnoop:CARD=USB,DEV=0 -acodec mp3 -y ~/recording/$(date +"%Y-%m-%d_%H:%M").mp3
루프백 대신 물리적 장치를 가리키는 dsnoop 항목 중 하나를 사용하는 것이 핵심일 수도 있지만 확실하지 않습니다.