Advertisement
ptrcsky

Merge Audio in folder with deleting silence with ffmpg

Mar 22nd, 2025 (edited)
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 4.06 KB | Music | 0 0
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. echo Bezpieczne laczenie plikow audio - usuwanie ciszy z poczatku i konca
  5. echo ================================================================
  6.  
  7. :: Tworzenie katalogu roboczego
  8. set "WORK_DIR=audio_processing"
  9. if exist "%WORK_DIR%" rmdir /s /q "%WORK_DIR%"
  10. mkdir "%WORK_DIR%"
  11. echo Utworzono katalog roboczy: %WORK_DIR%
  12.  
  13. :: Kopiowanie plików do katalogu roboczego
  14. echo Kopiowanie plikow do katalogu roboczego...
  15. for %%F in (*.mp3) do (
  16.     copy "%%F" "%WORK_DIR%\%%F"
  17.     echo Skopiowano: %%F
  18. )
  19.  
  20. :: Przejście do katalogu roboczego
  21. cd "%WORK_DIR%"
  22.  
  23. :: Zmiana nazw plików z 1-9 na 01-09 (tylko dla plików zaczynających się od pojedynczej cyfry)
  24. echo Zmiana nazw plikow 1-9 na format 01-09...
  25. for %%F in (*.mp3) do (
  26.     set "filename=%%~nF"
  27.     set "firstChar=!filename:~0,1!"
  28.    
  29.     :: Sprawdź czy pierwszy znak to cyfra od 1 do 9
  30.     if "!firstChar!" GEQ "1" if "!firstChar!" LEQ "9" (
  31.        :: Upewnij się, że drugi znak to podkreślnik lub kropka (separator)
  32.         set "secondChar=!filename:~1,1!"
  33.         if "!secondChar!"=="_" (
  34.             echo Zmiana: %%F -^> 0%%F
  35.             ren "%%F" "0%%F"
  36.         )
  37.     )
  38. )
  39.  
  40. :: Tworzenie folderu dla plików bez ciszy
  41. echo Tworzenie folderu dla plikow bez ciszy...
  42. set "SILENCE_DIR=no_silence"
  43. if exist "%SILENCE_DIR%" rmdir /s /q "%SILENCE_DIR%"
  44. mkdir "%SILENCE_DIR%"
  45.  
  46. :: Tworzenie pliku listy
  47. set "LIST_FILE=filelist.txt"
  48. if exist "%LIST_FILE%" del "%LIST_FILE%"
  49.  
  50. :: Sortowanie plików według nazwy (alfabetycznie, co teraz jest równoważne numerycznie)
  51. echo Sortowanie plikow...
  52. dir /b /o:n *.mp3 > sorted_files.txt
  53.  
  54. :: Liczenie plików
  55. set "count=0"
  56. for /f %%a in ('type "sorted_files.txt" ^| find /c /v ""') do set "count=%%a"
  57. echo Znaleziono %count% plikow do przetworzenia.
  58.  
  59. :: Przetwarzanie każdego pliku - usuwanie ciszy z początku i końca
  60. echo Przetwarzanie plikow - usuwanie ciszy z poczatku i konca...
  61. set "index=0"
  62. for /f "tokens=*" %%i in (sorted_files.txt) do (
  63.     set /a "index+=1"
  64.     echo [!index!/%count%] Przetwarzanie: %%i
  65.    
  66.     :: Utwórz nazwę pliku wyjściowego z indeksem numerycznym dla zachowania kolejności
  67.     set "paddedIndex=000!index!"
  68.     set "paddedIndex=!paddedIndex:~-3!"
  69.    
  70.     :: Usunięcie ciszy z początku i końca pliku
  71.    :: UWAGA: naprawiona składnia - użycie %%i zamiast %%F
  72.     ffmpeg -i "%%i" -af "silenceremove=start_periods=1:start_silence=0.1:start_threshold=-50dB,areverse,silenceremove=start_periods=1:start_silence=0.1:start_threshold=-50dB,areverse" "%SILENCE_DIR%\!paddedIndex!.wav" -y -loglevel warning
  73.    
  74.     :: Sprawdzenie czy plik wyjściowy istnieje
  75.     if exist "%SILENCE_DIR%\!paddedIndex!.wav" (
  76.        :: Dodanie wpisu do pliku listy z pełną ścieżką
  77.         echo file '%CD%\%SILENCE_DIR%\!paddedIndex!.wav' >> "%LIST_FILE%"
  78.     ) else (
  79.         echo BLAD: Nie udalo sie utworzyc pliku: %SILENCE_DIR%\!paddedIndex!.wav
  80.     )
  81. )
  82.  
  83. :: Sprawdzenie czy plik listy został utworzony i ma zawartość
  84. echo Sprawdzanie pliku listy...
  85. if not exist "%LIST_FILE%" (
  86.     echo BLAD: Plik listy nie zostal utworzony.
  87.     exit /b 1
  88. )
  89.  
  90. set "filesize=0"
  91. for %%A in ("%LIST_FILE%") do set "filesize=%%~zA"
  92. if %filesize% EQU 0 (
  93.     echo BLAD: Plik listy jest pusty.
  94.     exit /b 1
  95. )
  96.  
  97. echo Zawartosc pliku listy:
  98. type "%LIST_FILE%"
  99.  
  100. :: Łączenie plików
  101. echo Laczenie plikow...
  102. ffmpeg -f concat -safe 0 -i "%LIST_FILE%" -c:a mp3 -b:a 192k "..\combined_audio.mp3" -y
  103.  
  104. :: Powrót do oryginalnego katalogu
  105. cd ..
  106.  
  107. :: Sprawdzenie wyniku
  108. if exist "combined_audio.mp3" (
  109.     echo Zakonczono pomyslnie! Plik wyjsciowy: combined_audio.mp3
  110.     for %%A in ("combined_audio.mp3") do set "filesize=%%~zA"
  111.     echo Rozmiar pliku wyjsciowego: !filesize! bajtow
  112.    
  113.     :: Sprzątanie
  114.     echo Usuwanie plikow tymczasowych...
  115.     rmdir /s /q "%WORK_DIR%"
  116. ) else (
  117.     echo BLAD: Plik wyjsciowy nie zostal utworzony.
  118.     echo Katalog roboczy "%WORK_DIR%" nie zostal usuniety.
  119.     echo Sprawdz pliki w katalogu roboczym, aby zobaczyc, co sie stalo.
  120. )
  121.  
  122. echo Proces zakonczony!
  123. pause
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement