2014-08-29 31 views
2

我一直在試圖添加徽標和字幕到一起的視頻。但我無法管理它。徽標正在成功添加。但輸出視頻中缺少字幕。此外徽標淡入淡出效果不起作用。FFmpeg filter_complex屁股字幕和水印不能一起工作

ffmpeg -i '. $dest .' -i /www/otoconv/logo.png -filter_complex \ "[0:v][1:v]overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2:enable=between(t\,120\,130);[0:v]ass='.$ass_path.';[1:v]fade=out:st=30:d=1:alpha=1" -c:v libx264 -crf 23 -preset ultrafast -threads 0 -c:a libfaac -movflags faststart '.$out 

視頻詳情:

Duration: 00:44:51.44, start: 0.000000, bitrate: 2892 kb/s 
Stream #0:0(eng): Video: h264 (High), yuv420p(tv, bt709), 1280x720, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default) 
Stream #0:1: Audio: ac3, 48000 Hz, stereo, fltp, 384 kb/s (default) 

而且當我開始編碼ffmpeg的輸出是這樣的

Output #0, mp4, to '/www/otoconv/media_subtitled/183502046hen.mp4': 
Metadata: 
encoder   : Lavf56.3.100 
Stream #0:0: Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc 
Metadata: 
    encoder   : Lavc56.0.101 libx264 
Stream #0:1: Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc 
Metadata: 
    encoder   : Lavc56.0.101 libx264 
Stream #0:2: Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv444p, 308x93 [SAR 1:1 DAR 308:93], q=-1--1, 25 fps, 12800 tbn, 25 tbc 
Metadata: 
    encoder   : Lavc56.0.101 libx264 
Stream #0:3: Audio: aac (libfaac) ([64][0][0][0]/0x0040), 48000 Hz, stereo, s16, 128 kb/s (default) 
Metadata: 
    encoder   : Lavc56.0.101 libfaac 
Stream mapping: 
Stream #0:0 (h264) -> overlay:main (graph 0) 
Stream #0:0 (h264) -> ass (graph 0) 
Stream #1:0 (png) -> overlay:overlay (graph 0) 
Stream #1:0 (png) -> fade (graph 0) 
overlay (graph 0) -> Stream #0:0 (libx264) 
ass (graph 0) -> Stream #0:1 (libx264) 
fade (graph 0) -> Stream #0:2 (libx264) 
Stream #0:1 -> #0:3 (ac3 (native) -> aac (libfaac)) 

沒有錯誤的過程中出現。提前致謝。

注:我必須使用屁股字幕。

+0

請包括**完整的''ffmpeg'控制檯輸出。 – LordNeckbeard 2014-08-29 16:41:19

回答

0

我想:

ffmpeg -i '. $dest .' -i /www/otoconv/logo.png -filter_complex \ 
"[1:v]fade=out:st=30:d=1:alpha=1[tmp_fade]; \ 
[0:v][tmp_fade]overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2:enable=between(t\,120\,130)[tmp_overlay]; \ 
[tmp_overlay]ass='.$ass_path.'[out]" \ 
-map [out] -map 0:a -c:v libx264 -crf 23 -preset ultrafast -threads 0 -c:a libfaac -movflags faststart '.$out 

應該更好地工作。基本上,你需要鏈接所有的命令(呃,從技術上講,它是一個圖形,你需要能夠從所有進入的節點到終端節點,但我不是數學家,所以這種解釋可能缺乏)。我不明白的ffmpeg足以告訴你爲什麼你的命令並沒有失敗,但是從你的文件的輸出看,我認爲這會發生什麼情況是,只有這個鏈條使得它最終的視頻:

Stream mapping: 
Stream #0:0 (h264) -> overlay:main (graph 0) 
Stream #1:0 (png) -> overlay:overlay (graph 0) 
overlay (graph 0) -> Stream #0:0 (libx264) 

這些兩個得到計算,但他們丟失:

Stream #1:0 (png) -> fade (graph 0) 
Stream #0:0 (h264) -> ass (graph 0) 

我還沒有運行的例子,所以我希望沒有錯別字。