Skip to content

Instantly share code, notes, and snippets.

@Befzz
Last active January 29, 2016 11:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Befzz/f895573e119b5e5b4e35 to your computer and use it in GitHub Desktop.
Save Befzz/f895573e119b5e5b4e35 to your computer and use it in GitHub Desktop.
FFMPEG merge two microphones to file (windows)
@ECHO OFF
cd "%~dp0"
chcp 65001 > nul
SETLOCAL EnableDelayedExpansion
REM ==============================================
REM ================SET FOLDER HERE===============
SET FFMPEG_FOLDER=D:\Down_Chrome\_part2\ffmpeg-20141009-git-f6777ce-win32-static\ffmpeg-20141009-git-f6777ce-win32-static\bin\bin
REM ================END OF OPTIONS================
REM ==============================================
GOTO BEGIN_PROG
:PROC_NO_DEV_NUM_OPT
ECHO ^^
ECHO Warn. One or both device numbers was not specified.
ECHO .
ECHO Usage: save_2mics.cmd 1 2
ECHO where 1 and 2 is audio device numbers.
PING 127.0.0.1 -n 5 > nul
EXIT /B 1
:BEGIN_PROG
IF NOT EXIST "ffmpeg.exe" (
IF NOT EXIST "!FFMPEG_FOLDER!\ffmpeg.exe" (
ECHO WARN. ffmpeg.exe not found in current directory.
ECHO ERROR. ffmpeg not found here^(inside .cmd file^):
ECHO "!FFMPEG_FOLDER!"
PING 127.0.0.1 -n 5 > nul
EXIT /B 1
)
) ELSE (
SET FFMPEG_FOLDER=%~dp0
)
SET FDLIST=^"!FFMPEG_FOLDER!\ffplay.exe^" -hide_banner -list_devices true -f dshow -i dummy
SET bAUDIODEVICES=false
SET aCOUNTER=0
SET descDELIMDEF=" "
SET descDELIMSEL="(selected) "
ECHO List of available dshow audio devices:
FOR /F usebackq^ delims^=^"^ tokens^=1-3 %%A IN (`!FDLIST! 2^>^&1`) DO (
:continue
REM ECHO %%A__%%B__%%C
IF [%%B] == [] (
IF !bAUDIODEVICES! == true (
REM ECHO ::End of adevices.
)
SET "line=%%A"
REM ECHO !line:~-13!
IF "!line:~-13!" == "audio devices" (
REM ECHO ::Begin of adevices.
SET bAUDIODEVICES=true
REM GOTO continue
)
) ELSE (
IF !bAUDIODEVICES! == true (
SET ADEV!aCOUNTER!=%%B
SET descDELIM=%descDELIMDEF%
IF "!aCOUNTER!"=="%1" (
SET descDELIM=%descDELIMSEL%
)
IF "!aCOUNTER!"=="%2" (
SET descDELIM=%descDELIMSEL%
)
ECHO !aCOUNTER!: !descDELIM:~1,-1! %%B
SET /A aCOUNTER=!aCOUNTER!+1
)
)
)
IF NOT DEFINED ADEV%1 (
CALL :PROC_NO_DEV_NUM_OPT
EXIT /B 1
)
IF NOT DEFINED ADEV%2 (
CALL :PROC_NO_DEV_NUM_OPT
EXIT /B 1
)
REM IF "%1"=="" (
REM CALL :PROC_NO_DEV_NUM_OPT
REM EXIT /B 1
REM )
REM IF "%2"=="" (
REM CALL :PROC_NO_DEV_NUM_OPT
REM EXIT /B 1
REM )
IF "%1"=="%2" (
CALL :PROC_NO_DEV_NUM_OPT
EXIT /B 1
)
SET ADEVs0=!ADEV%1!
SET ADEVs1=!ADEV%2!
REM ECHO %ADEVs0% !ADEVs0!
IF "%3"=="p" (
ECHO =
ECHO ======== !ADEVs0! ==========
"!FFMPEG_FOLDER!\ffprobe.exe" -hide_banner -f dshow -i audio="!ADEVs0!" -print_format flat"
ECHO =
ECHO ======== !ADEVs1! ==========
"!FFMPEG_FOLDER!\ffprobe.exe" -hide_banner -f dshow -i audio="!ADEVs1!" -print_format flat"
)
For /f "tokens=1-3 delims=:." %%a in ("%TIME%") do (SET vTime=%%a-%%b-%%c)
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (SET vDate=%%c-%%a-%%b)
"!FFMPEG_FOLDER!\ffmpeg.exe" -hide_banner -f dshow -i audio="!ADEVs0!" -f dshow -i audio="!ADEVs1!" -filter_complex "[0:a][1:a]amerge=inputs=2[aout]" -map "[aout]" 2mic_%vDate%_%vTime%.wav
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment