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!
Beküldte balacy -
Értékelés:
Hasonló témában kutatgattam az elmúlt időben, egyre jobban megtetszik ez az ffmpeg :)