So hatte ich unglaubliche Probleme beim Erstellen einer Binärdatei von ffmpeg für Mac, die für alle meine Bedürfnisse richtig funktioniert. Ich habe einen älteren Build, der funktioniert super Remuxing h264 Video ohne Probleme, aber fehlt eine Bibliothek, die ich brauche, nämlich libspeex. Ich habe einen neueren Build erstellt, der auf ffmpegs Git basiert, der libspeex enthält, aber abstürzt, wenn h264 aus .flv-Dateien mit schlechten Timecodes remumuxiert wird (Live-Dumps von rtmpdump). Also habe ich zwei ffmpeg Binaries, die jeweils die Hälfte von dem machen, was ich brauche. Dies ist, was ich als meine aktuelle .command Datei:Wie kann ich die Ausgabe von ffprobe analysieren und ffmpeg abhängig vom Ergebnis ausführen?
for f in ~/Desktop/Uploads/*.flv
do
/usr/local/bin/ffmpeg -i "$f" -vcodec copy -acodec libfaac -ab 128k -ar 48000 -async 1 "${f%.*}".mp4 && rmtrash "$f" || rmtrash "${f%.*}".mp4
done
Diese ffmpeg hat libspeex enthalten, so kann es speex Audio in den .flv Eingabedateien dekodieren. Was ich suche, ist etwas zu tun, wie dieser Pseudo-Code (mein erster Versuch Pseudo-Code, mit mir so kahl!):
for f in ~/Desktop/Uploads/*.flv
do
ffprobe input.flv
if Stream #0:1 contains speex
ffmpeg-speex -i input.flv -acodec copy -async 1 output.m4a
fi
ffmpeg-h264 -i input.flv -vcodec copy output.mp4
MP4Box -add output.mp4 -add output.m4a finaloutput.mp4
done
so etwas wie dies möglich ist? Gibt es Alternativen? (Wer will mir ffmpeg für Mac mit libspeex, libfaac und libx264 bauen?; D) Alle Ideen sind hier willkommen! Vielen Dank.
Wie sieht die Ausgabe von ffprobe aus? Es wäre wahrscheinlich ziemlich einfach, Grep darauf laufen zu lassen. –
'Eingabe # 0, flv, von '/Users/Greeny/Desktop/input.flv':Dauer: 00: 37: 01.36, Start: 0.000000, Bitrate: 351 kb/s Stream # 0: 0: Video: h264 (Main), yuv420p, 320x240 [SAR 1: 1 DAR 4: 3], 15 tbr, 1k tbn, 30 tbc Stream # 0: 1: Audio: Speex, 16000 Hz, 1 Kanäle, s16' –
Kommentare sind unmöglich zu Format! -.- –