updated: | 2024 10. July |
published: | 2020 09. December |
FFMPEG - Video, Audio, Streaming, Codecs, Konvertierung.
FFMPEG - Programm zum bearbeiten, streamen, konvertieren von Video und Audiomaterial.Bildschirmaufnahme mit ffmpeg
# Bildschirmauflösung ermitteln
current=`xrandr -q 2>/dev/null | grep "*" | awk '{ print $1}'`;
# Desktopaufnahme mit Audio
ffmpeg -hide_banner \
-f alsa \
-i default \
-video_size $current \
-f x11grab \
-framerate 30 \
-probesize 42M \
-i :0.0 \
/tmp/output.mp4
Um bei einer Desktopaufnahme den Audiostream anstatt vom Mikrofon direkt vom Lautsprecher in ffmpeg zu transportieren, ist der Lautstärkekontroller von PulsAudio pavucontrol notwendig.

Bildschirmaufnahme mit ffmpeg unter Windows
Lade dir die Windowsbinarys von der ffmpeg-Seite runter. Die unten aufgeführten Beispiele nutzen die Releaseversion 5.1.2 von gyan.dev.
Desktopaufnahme mit ffmpeg ohne Audio.
Desktopaufnahme mit ffmpeg mit Audioton.
Um den Audioton bei Streamingdiensten wie Youtube aufzunehmen, muss bei Windows 10 erst das Mikrofon eingeschaltet werden.
start ms-settings:privacy-microphone
Im Weiteren muss das Audioausgabegerät ermittelt werden.
ffmpeg.exe -list_devices true -f dshow -i dummy -hide_banner
[dshow @ 000002c2e5602580] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000002c2e5602580] Could not enumerate video devices (or none found).
[dshow @ 000002c2e5602580] DirectShow audio devices
[dshow @ 000002c2e5602580] "Stereomix (Realtek High Definition Audio)"
[dshow @ 000002c2e5602580] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{CB94CC19-6B83-4657-B22A-8FCE4F13E0AD}"
dummy: Immediate exit requested
Das Audioausgabegerät ist demnach:
Stereomix (Realtek High Definition Audio)
Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{CB94CC19-6B83-4657-B22A-8FCE4F13E0AD}"
Das Audiogerät wird mit seinem alternativen Namen der ffmpeg-Option: -i audio
übergeben.
-i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{CB94CC19-6B83-4657-B22A-8FCE4F13E0AD}"
Hier nochmal der Code für Desktopaufnahme mit ffmpeg und Audio.
@echo off
set PATH_FFMPEG=%~dp0
echo %PATH% | find /C /I "%PATH_FFMPEG%" || @echo 'Das Verzeichnis: %PATH_FFMPEG% wird in die PATH-Umgebungsvariable aufgenommen.' && set PATH=%PATH%;%PATH_FFMPEG%
rem ffmpeg.exe -list_devices true -f dshow -i dummy -hide_banner
cmd.exe /C ^
ffmpeg.exe ^
-f gdigrab ^
-draw_mouse 1 ^
-framerate 25 ^
-i desktop ^
-f dshow ^
-i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{CB94CC19-6B83-4657-B22A-8FCE4F13E0AD}" ^
output.mp4
Nach mehrmaligen herum probieren ist letztendlich folgendes Windowsscript entstanden.
@echo off
cls
set PATH_FFMPEG=m:\bin\ffmpeg\ffmpeg-5.1.2-full_build
echo %PATH% | find /C /I "%PATH_FFMPEG%\bin" || @echo 'Das Verzeichnis: %PATH_FFMPEG%\bin wird in die PATH-Umgebungsvariable aufgenommen.' && set PATH=%PATH%;%PATH_FFMPEG%\bin
echo %PATH% | find /C /I "%PATH_FFMPEG%\tools" || @echo 'Das Verzeichnis: %PATH_FFMPEG%\tools wird in die PATH-Umgebungsvariable aufgenommen.' && set PATH=%PATH%;%PATH_FFMPEG%\tools
:: Exe in Variable
set FFMPEG=%PATH_FFMPEG%\bin\ffmpeg.exe
:: Datum und Uhrezeit fuer Dateinamen
set CURTIME=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
setlocal enabledelayedexpansion
set CURTIME=!CURTIME:^ =0!
setlocal disabledelayedexpansion
Set AufnahmeDatei=m:/DesktopAufnahme_%CURTIME%
:: Miteilung
msg %USERNAME% /W "Ganz Wichtig: Mit USB Kopfhoerer wird kein Ton aufgezeichnet. Wenn du also dein Jabra Headset hast, stecke einfach den Kopfhoerer in die Kopfhoererbuchse des PC.'s"
:: Mikrophone einschalten
msg %USERNAME% /W "Zuerst muss der Zugriff auf das Mikrofon erlaubt werden."
start /WAIT ms-settings:privacy-microphone
pause
:: Lautstaerkepegel einstellen
msg %USERNAME% /W "Stelle den Lautstaerkepegel des Laufsprechers ein."
start /WAIT ms-settings:apps-volume
pause
msg %USERNAME% /W "Starte Desktopaufzeichnung mit Ton. %AufnahmeDatei% Stop mit [Strg]+[C] - Aufnahmedatei wird fortlaufend gesplitet."
cmd.exe /C ^
%FFMPEG% ^
-hide_banner ^
-hwaccel dxva2 ^
-rtbufsize 2000M ^
-f gdigrab ^
-draw_mouse 1 ^
-framerate 30 ^
-thread_queue_size 32 ^
-probesize 42M ^
-video_size 1920x1200 ^
-i desktop ^
-f dshow ^
-i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{CB94CC19-6B83-4657-B22A-8FCE4F13E0AD}" ^
-vcodec h264 -crf 0 -preset ultrafast -b:v 2400k ^
-vf mpdecimate ^
-f segment -segment_time 120 -reset_timestamps 1 ^
%AufnahmeDatei%_%%003d.mp4