Portál AbcLinuxu, 27. října 2025 17:43
avconv -i input.MOV -vcodec copy output.mp4 si převádím soubory bez ztráty kvality z akční kamery, která nahrává videa do MOV. Je ale možné nějak hromadně převést všechny soubory v adresáři? Pokud ano, poraďte mi, prosím, jak? Děkuji.
for file in *.MOV; do avconv -i ${file} -vcodec copy ${file/MOV/mp4}; done
nebo jako script:
#!/bin/bash
for file in *.MOV; do
avconv -i ${file} -vcodec copy ${file/MOV/mp4}
done
#/bin/bash
find . -type f -name "*.$1" -exec bash -c '
i="{}";adr="$PWD/{}"; name=${i%.*}; \
# echo "$i $name.mkv" \;
set -e;
ffmpeg -hide_banner -hwaccel auto -i "$i" -c:a aac -strict -2 -c:s copy -c:v libx265 -preset faster -x265-params crf=26:ref=4:rd=5:rdoq=1:psy-rd=3:psy-rdoq=10 "$name.h265.mkv";
echo "$PWD" >> ~/log/recoded.log;
touch -r "$i" "$name.h265.mkv";
wc -c "$i"|tee -a ~/log/recoded.log;
wc -c "$name.h265.mkv"|tee -a ~/log/recoded.log;
echo " " >> ~/log/recoded.log;
rm "$i"' \;
pro převody různých videí do h265. script se zavolá v adresáři s parametrem extenze videí které mají být překódovány. do logu se napíše, co bylo překódováno s jakou velikostí bylo původní a s jakou nové video a původní se smaže. parametr (set -e) způsobí, že chyba při překódování brejkne vnitřní skript a záznam do logu a smazání originálních dat se neprovede. samozřejmě s h265 parametry jde si pohrát.
MP4Box -cat 001.mp4 -cat 002.mp4 -cat 003.mp4 -cat 004.mp4 -cat 005.mp4 -cat 006.mp4 -new final.mp4, ale nechci všechny vypisovat...
MP4Box `ls -1 *.mp4 | sed -re "s/^/ -cat /g" | tr -d "\n"` -new final.mp4Nějaký tutoriál na skriptování v bashi byl v Linux, Dokumentační projekt.
echo "mp4box \\" find -maxdepth 1 -iname '*.mp4' -type f -print0 | xargs -n 1 -0 printf '\t-cat %q \\\n' echo -e "\t-out output.mp4"
find ti najde požadované soubory, xargs spustí na každý název souboru printf, který escapuje specialní znaky (%q) a přidá -cat
Pak ho zkontrolovat (uvidíš to, co bys psal ručně) a pokud je v pořádku, tak ho spustit:
( skript ) | bashDohromady tedy:
( echo "mp4box \\" find -maxdepth 1 -iname '*.mp4' -type f -print0 | xargs -n 1 -0 printf '\t-cat %q \\\n' echo -e "\t-out output.mp4" ) | bash
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.