2017-10-04 63 views
0

我試圖用ffmpeg一組定時截圖來創建兩部電影,使用-f concat來指定它們應該顯示的png截圖和持續時間。我主要從ffmpeg slideshow tutorialconcat documentation。 Quicktime能夠毫無問題地打開我的ffmpeg生成的電影,但儘管使用相同的命令和腳本來創建它們,但無論我重新創建源屏幕截圖/持續時間多少次,iMovie都不會打開一個,也不會打開另一個。並重新創建視頻。ffmpeg concat iMovie導入 - 不一致的故障

我有兩個屏幕從我的輸入中捕獲並轉換爲PNG,我試圖生成兩個電影導入到iMovie並同時並排顯示。要生成的電影中,我使用下面的命令:

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 

凡win1input.txt和win2input.txt基本上是相同的(從不同的文件名和時間相同的腳本生成):

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

這兩部電影都會生成,並且可以通過quicktime打開而不會有任何投訴。但是,當我嘗試將它們導入iMovie時,第一部電影總是導入正常,第二部電影出現錯誤「無法導入文件」,並且在媒體預覽窗口中持續時間爲0。

任何人都可以建議看看電影的方法,並試圖找到什麼可能是投擲iMovie?沒有更詳細的錯誤我卡住了。我完全困惑於兩者之間的區別,因爲它們是從相同的過程,編解碼器等產生的。任何關於電影的進一步信息的幫助或建議將不勝感激!

更新與ffmpeg -i輸出:

$ 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

兩個輸出文件的'ffmpeg -i'的輸出是什麼? – Mulvya

+0

好問題 - 以上更新。 –

+0

這可能是壞的電影低於幀率閾值。添加'-r 5'並檢查。 – Mulvya

回答

0

由於在評論@mulvya,它看起來像不好的電影是在一些需要幀率下降。用ffmpeg -i bad_movie.mov -r 5 bad_movie_fixed.mov重新採樣輸出電影似乎解決了這個問題。 (nb我無法弄清楚如何在初始創建步驟中包含-r;唯一能找出如何完成這項工作的方法是首先創建電影后作爲單獨的重新樣本) 。