Média fájlok kurtítása FFmpeg-gel

Gyakran találkozok azzal a problémával, hogy egy hang- vagy videó- tanfolyam anyagába ismétlődő elemeket illesztenek a file elejére és/vagy a végére. Ez idővel zavaró tud lenni, és macerás feladat egyenként szerkeszteni több tucat file-t.

Kényelmesebb, fájlokat átmásolni egy mappába, majd lefuttatni a következő parancsok egyékét a terminálban:

  • Ha a file-ok elejét szeretnéd levágni:

for file in *.mp3; do   ffmpeg -i "$file" -ss 00:00:07.8 "vagva_${file}"; done  ##7.8 másodpercet vág le.

  • Ha a file-ok végét szeretnéd levágni:

for file in *.mp3; do   ffmpeg -i "$file" -ss 0 -t $(($(ffprobe -i "$file" -show_entries format=duration -v quiet -of csv="p=0" | cut -d '.' -f 1)-10)) -c:v copy -c:a copy "vagva_${file}"; done ##10 másodpercet vág le.

  • Ha file-ok elejét és végét is le szeretnéd vágni:

for file in *.mp3; do ffmpeg -i "$file" -ss 7.8 -to $(($(ffprobe -i "$file" -show_entries format=duration -v quiet -of csv="p=0" | cut -d '.' -f 1) -10)) -c copy "vagva_${file}"; done

Magyarázat:

1. `for file in *.mp3; do`: Ez egy bash ciklus elindítása, amely az aktuális könyvtárban lévő minden olyan fájlon végigmegy, amelynek kiterjesztése `.mp3`.

2. `ffmpeg -i "$file" -ss 7.8 -to $(($(ffprobe -i "$file" -show_entries format=duration -v quiet -of csv="p=0" | cut -d '.' -f 1) -10))) -c copy "vagva_${file}";`: Egy `ffmpeg` parancs, amely az mp3 fájl szerkesztését végzi. Ehhez a következőket veszi igénybe:
 - `-i "$file"`: Megadja a feldolgozandó bemeneti fájlt.
 - `-ss 7.8`: Az ffmpeg figyelmen kívűl hagyja a file elejét és a megadott 7.8 másodpernél kezd.
 - `-to $(($(ffprobe -i "$file" -show_entries format=duration -v quiet -of csv="p=0" | cut -d '.' -f 1) -10))`: Az ffprobe alparancs meghatározza a file teljes lejátszási idejét majd az ffmpeg levágja az utolsó 10 másodpercet
 - `-c copy`: Megadja, hogy a kódolás csak másolja a bemeneti adatfolyamot újrakódolás nélkül, ami gyorsabb és nem változtat az eredeti minőségen.
 - `"vagva_${file}"`: Megadja a kimeneti fájl nevét, amely a "vagva_EredetiFájlnév" lesz.
   
3. `done`: Utasítást ad a for ciklus befejezésére.

Amennyiben az ffmpeg nincsen a rendszeren, akkor a tárolókból telepíthető:
sudo apt update -y && sudo apt upgrade -y && sudo apt install ffmpeg -y

Építő kommenteket örömmel fogadok. Esetleg szebb megoldás lenne az ffmpeg --atrim vagy --trim kapcsolóit használni:
https://ffmpeg.org/ffmpeg-filters.html

Hozzászólások

Köszi!

Értékelés: 

5
Átlag: 5 (1 szavazat)

Hasonló témában kutatgattam az elmúlt időben, egyre jobban megtetszik ez az ffmpeg :)