Portál AbcLinuxu, 7. května 2025 01:30
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}; donenebo 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.