2017-10-04 4 views
0

Ich versuche, zwei Filme mit einer Reihe von zeitgesteuerten Screenshots mit ffmpeg zu erstellen, wobei -f concat verwendet wird, um PNG-Screenshots und die Dauer anzugeben, für die sie angezeigt werden sollen. Ich ziehe meistens aus dem ffmpeg slideshow tutorial und concat documentation. Quicktime ist in der Lage, meine beiden ffmpeg-generierten Filme ohne Probleme zu öffnen, aber trotz der Verwendung identischer Befehle und Skripte hat iMovie kein Problem damit, eins zu öffnen und öffnet das andere nie, egal wie oft ich die Quell-Screenshots/-Dauern wiederherstelle und das Video neu erstellen.ffmpeg concat iMovie Import - Inkonsistenter Fehler

Ich habe zwei Bildschirme, die von meiner Eingabe erfasst und in PNGs umgewandelt werden, und ich versuche, zwei Filme zu generieren, um in iMovie zu importieren und gleichzeitig nebeneinander zu zeigen. Um die Filme zu erzeugen, ich bin mit dem folgenden Befehl ein:

ffmpeg -f concat -i win1input.txt -vsync vfr -pix_fmt yuv420p win1.mov 
ffmpeg -f concat -i win2input.txt -vsync vfr -pix_fmt yuv420p win2.mov 

Wo win1input.txt und win2input.txt sind im Wesentlichen identisch (erzeugt aus dem gleichen Skript mit unterschiedlichen Dateinamen und Zeiten):

file 'win1-01.png' 
duration 3.07 
file 'win1-02.png' 
duration 2.55 
... 

Beide Filme werden generiert und kann von quicktime ohne Beschwerden geöffnet werden. Wenn ich jedoch versuche, sie in iMovie zu importieren, importiert der erste Film immer einwandfrei, und der zweite gibt den Fehler "Keine importierbaren Dateien" und hat eine Dauer von 0 im Medienvorschaufenster.

Kann jemand vorschlagen, um die Filme zu sehen und zu finden, was könnte werfen iMovie? Ohne einen detaillierteren Fehler stecke ich fest. Und ich bin völlig verwirrt darüber, was der Unterschied zwischen den beiden sein könnte, da sie aus dem gleichen Prozess, Codec, etc. generiert werden. Jede Hilfe oder Vorschläge für weitere Informationen über die Filme wäre willkommen!

UPDATE mit ffmpeg -i Ausgang:

$ ffmpeg -i badMovie.mov 

ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers 
    built with Apple LLVM version 8.1.0 (clang-802.0.42) 
    configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libass --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --enable-openssl --disable-lzma --enable-nonfree --enable-vda 
    libavutil  55. 58.100/55. 58.100 
    libavcodec  57. 89.100/57. 89.100 
    libavformat 57. 71.100/57. 71.100 
    libavdevice 57. 6.100/57. 6.100 
    libavfilter  6. 82.100/6. 82.100 
    libavresample 3. 5. 0/3. 5. 0 
    libswscale  4. 6.100/4. 6.100 
    libswresample 2. 7.100/2. 7.100 
    libpostproc 54. 5.100/54. 5.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'badMovie.mov': 
    Metadata: 
    major_brand  : qt 
    minor_version : 512 
    compatible_brands: qt 
    encoder   : Lavf56.40.101 
    Duration: 00:02:09.84, start: 0.000000, bitrate: 36 kb/s 
    Stream #0:0(eng): Video: h264 (High) (avc1/0x31637661), yuv420p, 1280x800, 35 kb/s, 0.28 fps, 25 tbr, 12800 tbn, 50 tbc (default) 
Metadata: 
     handler_name : DataHandler 
     encoder   : Lavc56.60.100 libx264 


$ ffmpeg -i goodMovie.mov 
ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers 
    built with Apple LLVM version 8.1.0 (clang-802.0.42) 
    configuration: --prefix=/usr/local/Cellar/ffmpeg/3.3.2 --enable-shared -- enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libass --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --enable-openssl --disable-lzma --enable-nonfree --enable-vda 
    libavutil  55. 58.100/55. 58.100 
    libavcodec  57. 89.100/57. 89.100 
    libavformat 57. 71.100/57. 71.100 
    libavdevice 57. 6.100/57. 6.100 
    libavfilter  6. 82.100/6. 82.100 
    libavresample 3. 5. 0/3. 5. 0 
    libswscale  4. 6.100/4. 6.100 
    libswresample 2. 7.100/2. 7.100 
    libpostproc 54. 5.100/54. 5.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'goodMovie.mov': 
    Metadata: 
    major_brand  : qt 
    minor_version : 512 
    compatible_brands: qt 
    encoder   : Lavf56.40.101 
    Duration: 00:02:11.84, start: 0.000000, bitrate: 13 kb/s 
    Stream #0:0(eng): Video: h264 (High) (avc1/0x31637661), yuv420p, 1280x800, 13 kb/s, 0.64 fps, 25 tbr, 12800 tbn, 50 tbc (default) 
Metadata: 
    handler_name : DataHandler 
    encoder   : Lavc56.60.100 libx264 
+0

Was ist die Ausgabe von 'ffmpeg -i' für die zwei Ausgabedateien? – Mulvya

+0

Gute Frage - oben aktualisiert. –

+0

Es könnte sein, dass der schlechte Film unter einen Schwellenwert für die Bildfrequenz gesunken ist. Füge '-r 5' hinzu und überprüfe. – Mulvya

Antwort

0

Dank @mulvya in den Kommentaren, es sieht aus wie der schlechte Film wurde unter einem erforderlichen Framerate fällt. Das Resampling des Ausgabefilms mit ffmpeg -i bad_movie.mov -r 5 bad_movie_fixed.mov schien das zu beheben.

(ich konnte nicht herausfinden, wie man -r in den ersten Erstellungsschritt einbindet; der einzige Weg, wie ich herausfinden konnte, wie man diese Arbeit macht, war eine separate Wiederholung nach dem Erstellen des Films an erster Stelle) .