2014-02-06 79 views
3

目前我正在嘗試爲每個圖像製作5秒的視頻,然後使用concat將它們組合在一起,但是我在做這些時遇到了很多問題。如何成功使用ffmpeg將圖像轉換爲視頻

這裏是我的代碼:

的ffmpeg -loop 1 -i 000.jpg -t 5 000.mp4 的ffmpeg -loop 1 -i 001.JPG -t 5 001.mp4 的ffmpeg -f CONCAT - 我inputs.txt -codec副本output.mp4

inputs.txt列出了以下 文件「000.mp4」 文件「001.mp4」

現在,當我嘗試了這一切,我運行輸出mp4文件和它的第一部分工作正常,但一旦它開始顯示視頻的001部分,它切換到灰色屏幕。它甚至在獨立文件001.mp4中沒有這樣做。

對發生了什麼事或我能做些什麼的任何建議修復此問題?

我也嘗試過很多其他的東西。像所有的文件切換到PNG,而這給了同樣的問題。我也嘗試使用不同的輸出文件類型,如wmv,avi等。我仍然很新,但我不知道還有什麼要嘗試。

這是運行該命令後在我的命令提示符中顯示的內容。

C:\xampp\htdocs\images>ffmpeg -f concat -i inputs.txt -codec copy output.mp4 
ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers 
    built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC) 
    configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av 
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab 
le-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg 
sm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libo 
pencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-li 
bschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-lib 
twolame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enabl 
e-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib 
    libavutil  52. 19.100/52. 19.100 
    libavcodec  55. 0.100/55. 0.100 
    libavformat 55. 0.100/55. 0.100 
    libavdevice 54. 4.100/54. 4.100 
    libavfilter  3. 45.103/3. 45.103 
    libswscale  2. 2.100/2. 2.100 
    libswresample 0. 17.102/0. 17.102 
    libpostproc 52. 2.100/52. 2.100 
[concat @ 003b9660] Estimating duration from bitrate, this may be inaccurate 
Input #0, concat, from 'inputs.txt': 
    Duration: 00:00:00.01, start: 0.000000, bitrate: 28 kb/s 
    Stream #0:0: Video: h264 (High 4:4:4 Predictive) (avc1/0x31637661), yuv444 
p, 800x600 [SAR 1:1 DAR 4:3], 28 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc 
Output #0, mp4, to 'output.mp4': 
    Metadata: 
    encoder   : Lavf55.0.100 
    Stream #0:0: Video: h264 ([33][0][0][0]/0x0021), yuv444p, 800x600 [SAR 1:1 
DAR 4:3], q=2-31, 28 kb/s, 25 fps, 12800 tbn, 12800 tbc 
Stream mapping: 
    Stream #0:0 -> #0:0 (copy) 
Press [q] to stop, [?] for help 
frame= 250 fps=0.0 q=-1.0 Lsize=  31kB time=00:00:09.88 bitrate= 26.1kbits 
/s 
video:28kB audio:0kB subtitle:0 global headers:0kB muxing overhead 13.534948% 

C:\xampp\htdocs\images> 
+0

你是否一次擁有所有圖像? – BlueSword

回答

7

您的控制檯輸出顯示您正在編寫4:4:4的H.264輸出,很少有玩家支持。 (FFmpeg的較新版本會對此提出警告。)在輸出文件之前添加-pix_fmt yuv420p以轉換爲廣泛支持的4:2:0像素格式。你還可以包括-profile:v baseline,以使它可以在更多的球員身上發揮作用。 (這些選項適用於編碼,因此請勿在指定-codec copy的命令中使用它們。)您也可以嘗試使用ffplay播放輸出文件,該文件是少數支持4:4:4 H.264的播放器之一mp4文件。

如果要爲每個圖像相同的持續時間和它們被連續編號,只需要一個單一的命令,例如:

ffmpeg -framerate 0.2 -i %3d.jpg -vf fps=10 -pix_fmt yuv420p output.mp4 

-framerate 0.2設置輸入幀頻爲每秒0.2幀(1幀每5秒)。 %3d被每個幀的3位數000,001等替代。 -vf fps=10會改變幀速率爲每秒10幀,在這種情況下通過複製輸入幀;它不是絕對必要的,但可以用低幀速率來幫助尋求更平滑並且確保第一個和最後一個圖像的完整持續時間,並且不應該增加輸出大小很多,因爲可以編碼與先前幀相同的幀在一個小尺寸。

如果你想繼續使用concat分路器,或者想爲每個圖像不同的文件名或持續時間,可以直接與每一個在你的inputs.txt的持續時間指定圖像。沒有必要爲每個圖像創建一個單獨的電影文件。例如:

file 000.jpg 
duration 5 
file 001.jpg 
duration 5 
... 

然後使用CONCAT分路器將它們串聯,並在同一時間進行編碼:

ffmpeg -f concat -i inputs.txt -vf fps=10 -pix_fmt yuv420p output.mp4 

如果這些事情不工作,你的FFmpeg的升級到最新版。

+0

非常感謝你的回答。不幸的是,我仍然有一個問題。我試着運行「ffmpeg -f concat -i inputs.txt -vf fps = 10 -pix_fmt yuv420p output.mp4」,輸入文件的結構就像你列出的那樣(不包括點)。奇怪的是,輸出現在顯示的圖像以前是灰色的。但是現在第一張圖片無處可見。我會嘗試升級到最新版本,如果仍然無法正常工作,請回復。我認爲它已經是最新版本,但我會仔細檢查。 – user3276588

+0

顯然我使用的版本是N-50911-g9efcfbe。這有點令人困惑,因爲他們的網站被格式化爲小數,最後一個是2.1我認爲。雖然我沒有完全安裝ffmpeg。我安裝了imagemagick,它顯然與它一起。另外我想這不會幫助我使用Windows Vista並使用xampp。 – user3276588

+0

仍然沒有任何運氣:(我卸載imagemagick,然後去了並安裝了最新的Zeranoe FFmpeg生成版本「git-9c978f2」,但它仍然無法正常工作。丟失的話:(在過去的48小時內搜索everywheres到嘗試所有我能找到的東西我唯一能做的就是合併兩個視頻,但它們是「我的視頻」中默認的wmv視頻,它顯示在每臺Windows電腦上。並試圖合併它們不起作用 – user3276588

相關問題