Wenn Ihr Ziel ist, eine C++ App zu schreiben, um dies für Sie zu tun, ignorieren Sie bitte diese Antwort, ich werde es hier für zukünftige Referenz lassen. Wenn nicht, hier ist, wie Sie es in bash tun können:
Zuerst, stellen Sie sicher, dass Ihre Bilder in einem schönen Format sind, einfach von ffmpeg zu handhaben. Sie können die Bilder in ein anderes Verzeichnis kopieren:
mkdir tmp
x=1; for i in *jpg; do counter=$(printf %03d $x); cp "$i" tmp/img"$counter".jpg; x=$(($x+1)); done
Kopieren Sie Ihre Audiodaten in das tmp-Verzeichnis und kodieren Sie das Video. Lassen Sie uns sagen, dass Ihre Kamera ein Bild alle zehn Sekunden gedauert:
cd tmp
ffmpeg -i audio.wav -f image2 -i img%03d.jpg -vcodec msmpeg4v2 -r 0.1 -intra out.avi
Wo -r 0.1
eine Framerate von 0,1 zeigt an, welche alle 10 Sekunden ein Rahmen ist.
Die möglichen Probleme sind hier:
- Ihr Audio/Video gehen könnte leicht out of sync, wenn Sie Ihre gewünschte Framerate sorgfältig im Voraus berechnen. Sie sollten in der Lage sein, die Länge des Audio (oder Video) mit ffmpeg und einigen
grep
Magie zu bekommen. Dennoch könnte die Synchronisierung bei längeren Clips ein Problem darstellen.
- , wenn Sie mehr als 999 Bilder haben die
%03d
Format wird nicht genug sein, stellen Sie sicher, dass die 3
auf die gewünschte Länge des Index
Das Video ändern wird seine Länge von der längeren der Ströme erben, können Sie beschränken sie den -t
Schalter:
-t duration
- Restrict the transcoded/captured video sequence to the duration specified in seconds. "hh:mm:ss[.xxx]" syntax is also supported.
verwenden 'mencoder' mit dem' mf: // 'Quelle. –