Am următoarea funcție într-un script bash. Când îl execut, primesc întotdeauna un șir returnat de la comanda ffprobe care conține o eroare sub forma:
Argumentul „-” a fost furnizat ca nume de fișier de intrare, dar „/media/Testing/Sorted/badfile.mp4” a fost deja specificat.
Am încercat să mut argumentele în ffprobe în interiorul ghilimelelor pentru numele fișierului (nu rezolvă problema). Am încercat să mut argumentele într-o matrice și să trec „${array[@]}” (nu rezolvă problema). Evident, îmi scapa ceva orbitor de evident aici.Unde gresesc?
# ProcessVideo
#
# Preia un nume de fișier de intrare (probabil pentru un fișier video, dar funcția nu
# încearcă de fapt să verifice asta) și îl predă lui ffprobe pentru a face ceva de bază
# procesarea fluxului video. Am stabilit un steag, astfel încât orice eroare întâlnită să fie
# determină închiderea ffmpeg cu un cod de eroare setat. Dacă ffmpeg setează un cod de eroare, noi
# înregistrează numele fișierului într-un fișier.
#
# ProcessVideo <calea către videoclip>
ProcessVideo()
{
local vfn=$1
ec local=0
oput local
echo „Se verifică videoclipul $vfn”
oput=$(ffprobe -avertizare la nivel de log „$vfn” - 2>&1)
ec=$?
# dacă (( ec > 0 ))
# atunci
# echo "Eroare de ieșire $ec $vfn"
# LogErr „Eroare de ieșire $ec $vfn”
# fi
# if [[ "$oput" == *"moov atom"* ]]
dacă [[ -n "$oput" ]]
atunci
echo „Șir de eroare $vfn”
LogErr „Șir de eroare $vfn”
LogErr „$oput”
fi
}
Rețineți că LogErr din scriptul de mai sus este o altă funcție - tot ceea ce face este să ia șirul transmis și să îl scrie într-un fișier jurnal specificat. Dacă cineva crede că este relevant pentru problemă, o voi posta, dar nu cred că este.