Capturer UNIQUEMENT l'audio de bureau avec ffmpeg

13

Je veux savoir comment puis-je capturer uniquement l'audio de bureau (signifie pas de micro!).

J'utilise cette commande:

$ ffmpeg -f x11grab -s 1360x768 -r 30 -i :0.0 -preset ultrafast ~/Videos/out.mp4
ffmpeg version 2.4.3-1ubuntu1~trusty6 Copyright (c) 2000-2014 the FFmpeg developers
  built on Nov 22 2014 17:07:19 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --prefix=/usr --extra-version='1ubuntu1~trusty6' --build-suffix=-ffmpeg --toolchain=hardened --extra-cflags= --extra-cxxflags= --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-fontconfig --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-opengl --enable-x11grab --enable-libxvid --enable-libx265 --enable-libdc1394 --enable-libiec61883 --enable-libzvbi --enable-libzmq --enable-frei0r --enable-libx264 --enable-libsoxr --enable-openal --enable-libopencv
  libavutil      54.  7.100 / 54.  7.100
  libavcodec     56.  1.100 / 56.  1.100
  libavformat    56.  4.101 / 56.  4.101
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  1.100 /  5.  1.100
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  0.100 / 53.  0.100
[x11grab @ 0x16051e0] device: :0.0 -> display: :0.0 x: 0 y: 0 width: 1360 height: 768
[x11grab @ 0x16051e0] shared memory extension found
Input #0, x11grab, from ':0.0':
  Duration: N/A, start: 1444234613.435347, bitrate: 1002700 kb/s
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1360x768, 1002700 kb/s, 30 tbr, 1000k tbn, 30 tbc
File '/home/elderzz/Videos/out.mp4' already exists. Overwrite ? [y/N] ^A

Je peux capturer le micro avec une autre application, mais j'ai besoin que le son du micro soit dans un fichier différent. Je veux seulement capturer l'audio du bureau!

Elderzz
la source
@LordNeckbeard j'ai mis la sortie de la console sur pastebin: pastebin.com/9GSZ1eTr
Elderzz

Réponses:

12

pavucontrol

entrez la description de l'image ici

  1. Installez pavucontrol.
  2. Commencez l'enregistrement avec ffmpeg(voir les exemples de commandes ci-dessous).
  3. Commencez pavucontrol.
  4. Accédez à l' onglet Enregistrement et vous y trouverez ffmpegou Lavf56.15.102(ou similaire) répertorié.
  5. Changez la capture audio de Stéréo Analogique Audio Interne en Moniteur de Stéréo Analogique Audio Interne .

Il devrait maintenant enregistrer le système et l'application audio au lieu du microphone.

Ce paramètre sera mémorisé. La prochaine fois que vous souhaitez capturer avec ffmpeg, il commencera automatiquement l'enregistrement audio du système. Si vous souhaitez annuler cela, utilisez à pavucontrolnouveau pour revenir à l'entrée microphone.

Le texte ci-dessus a été adapté de HOWTO: Screencasting sur Linux .

exemple de commandes ffmpeg

audio seulement

ffmpeg -f pulse -i default output.wav

avec capture d'écran

ffmpeg -f x11grab -video_size 1360x768 -framerate 30 -i :0.0 -f pulse -i default -preset ultrafast -crf 18 -pix_fmt yuv420p out.mkv
llogan
la source
Cet enregistrement sera-t-il sans perte?
Anmol Singh Jaggi
@AnmolSinghJaggi No. -crf 18est avec perte, et il y a aussi une perte due à la conversion de l'espace colorimétrique RVB en YUV 4: 2: 0.
llogan
Non, je parlais de la partie audio uniquement.
Anmol Singh Jaggi
1
@AnmolSinghJaggi Oui, l'audio doit être sans perte.
llogan
1
Si vous ne souhaitez pas changer la source manuellement, vous pouvez utiliser la commande pactl list sorucespour déterminer le nom interne de la source du moniteur, puis utiliser à la -f pulse -i NAMEplace de default, par exemple. -f pulse -i alsa_output.pci-0000_00_1f.3.analog-stereo.monitorLe nom exact diffère d'un système à l'autre.
regnarg
1

Vous pouvez également enregistrer sur MP3 compressé (avec un débit binaire de votre choix) comme:

ffmpeg -f alsa -ac 2 -i default -acodec libmp3lame -ab 320k ouput.mp3
sergy8612
la source