ffmpeg 2.3 blend視頻疊加輸出文件時間長度問題

ffmpeg 2.3 blend視頻疊加輸出文件時間長度問題

2014 11 16

 

輸入文件:

480x480.3gp: 480x480,20fps,00:00:10

rain01.mp4: 480x480,25fps,00:00:03

 

ffmpeg -y -i 480x480.3gp -i rain01.mp4 -filter_complex blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)' -c:v libx264 -an -strict -2 -qp 30 blend.3gp

得到的輸出視頻長度是10秒

ffmpeg -y -i 480x480.3gp -i rain01.mp4 -filter_complex blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)' -c:v libx264 -an -strict -2 -qp 30 blend.3gp

得到的輸出視頻長度是3秒

 

分析:

根據www.ffmpeg.org 上的文檔: It takes two input streams and outputs one stream, the first input is the "top" layer and second input is "bottom" layer,

進一步分析,blend模塊內部並沒有停止。因爲在 ff_dualinput_init函數裏,in[0].after  = EXT_INFINITY;表示top結束後整個模塊並不停止。並且ff_framesync_get_frame(&s->fs, 0, &mainpic,   1)調用ff_framesync_get_frame函數時,get等於1,pts_next=INT64_MAX,所以會av_frame_clone最後一幀。

進一步跟蹤,發現是do_video_out函數進入了nb_frames=0的分支,而將其drop了,具體原因可能是時間戳的問題,需要進一步分析。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章