ahojte
potreboval by som hromadne nahradiť pôvodné audio pre väčšie množstvo videií
videá su nazvané stýlom GX0123456.MP4
ku každému videu mám prislúchajúce audio (s rovnakým názvom len inou priponou) GX0123456.WAV
štandartne použijem toto:
ffmpeg -i GX123456.MP4 -i GX123456.WAV -c:v copy -a:v copy -map 0:v:0 -map 1:a:0 NGX123456.mkv
funguje fajn, ale teraz mám asi 300 súborov a ručne to proste robiť nebudem
vie pls niekto poradiť ako to spraviť hroamdne, tak aby mi spojilo vždy len 2 súbory s rovnakými názvami
BTW nemusí to byť cez ffmpeg, ak niekto pozná nejaké klikátko čo to zvláda, tiež budem rád, ide mi hlavne o to aby sa nezasahovalo do videa (jednak by renderovanei trvalo dlho a "znehodnotilo" by mi to tie súbory) a došlo k nahradeniu pôvodného audia za nové
viem to spraviť cez video editor, ale to je zbytočný render, ktorý znehodnotí pôvodné súbory, rovnako môžem vždy spolu s videom na osu nahodiť aj to audio ale to pracné a nepraktické, preto by som chcel aby to nové kvalitné audio nahradilo to integrované
Nefungovalo by nieco taketo? Priloha.
Tak ma napadlo ze aj video aj audio by malo mat celu cestu. Cize riadok 14 by mal byt takto
ďakujem krásne za ochotu,
upravil som ci riadok cesta na cesta=/home/poldo/Video/test/
kde som vložil testovacie videjka
keď to pustím dostanem:
find: paths must precede expression: `20211016_145757.mp4'
find: possible unquoted pattern after predicate `-name'?
Podla tohto https://askubuntu.com/questions/142207/find-unknown-predicate by malo stacit zmenit *.mp4 na "*.mp4".
zmenil som to takto:
#!/bin/bash
cesta=/home/poldo/Video/test/
find $cesta -name .mp4 | while read l
do
subor=$(find "$l" -printf "%f" | sed 's/.\{4\}$//')
video=$(echo $subor.mp4)
audio=$(echo $subor.wav)
vysledny_subor=$(echo N$subor.mkv)
#echo "cesta" $cesta "subor" $video "audio" $audio "vysledny subor" $cesta$vysledny_subor
ffmpeg -i $cesta$video -i $cesta$audio -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 $cesta$vysledny_subor
done
a keď to spustím nič sa nestane
somár som čo neviem čítať
už vyzerá že to funguje
neviem prečo som odstránil tú hviezdičku a ignoroval potrebu pirdania uvodzoviek, asi je už neskoro
Ja som to upravil na
a nieco tam bezi ale nemam pripravene subory. Inak spustaj to tak ze ten subor.sh pretiahni do terminalu. Pri tomto sa ti terminal nezatvori a uvidis chyby.
Nechal som tam omylom moju cestu.
ešte som si musel upraviť mp4 na MP4 (ale to v pohode zvládam aj celkom tomu rozumiem) zato toto:
tak tomu nerozumiem ani náhodou :-D (nemusíš vysvetlovať)
spúšťam to priamo z termínál cez ./videozvuk.sh, žiadnu očividnú chybu nevyhodí, len zastane na poslednej konverzii
ak to ešte niekto bude čítať tak len doplním že správny príkaz má byť
ffmpeg -i GX123456.MP4 -i GX123456.WAV -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 NGX123456.mkv
zmenil som parameter a:v copy (ktorý je úplná blbosť) na c:a copy
v tom scripte si to samozrejme opravím
po úprave script funguje s menším problémom:
konvertuje len 3 alebo 4 súbory a zastane, ak zmazem zdrojove subory pokračuje na 2-3 daľšie súbory a zase zastane
a chcel by som sa opýtať ako to zmeniť tak aby to fungovalo v adresari kde to spustím
ďakujem krásne za ochotu
debug:
ďakujem, otestujem večer