2015-11-23 57 views
1

我使用FFmpeg來連接3 mp4視頻賄賂。FFmpeg賄賂之間的Concat artiffact

FFbrope顯示所有賄賂從關鍵幀開始並在VLC中播放得非常好。

當播放視頻的最後文件的一些人工製品出現時的賄賂開始:

ffmpeg.exe -f concat -i video_bribes.list -codec:v copy -acodec none -movflags faststart -y v_2.mp4 

我試圖型動物中選擇與concat命令行重新編碼,但假象還在這裏。

我能做些什麼來避免這種賄賂之間的灰色文物?

謝謝。

+0

什麼是*賄賂*?你需要在'video_bribes.list'裏面顯示你的輸入信息。顯示完整的輸出:'ffmpeg -i input0 -i input1 -i input2'等 – LordNeckbeard

+0

賄賂是小塊大約12個secondes,video_bribes.list包含這些文件的路徑,如下所示:https:// trac.ffmpeg.org/wiki/Concatenate(mylist.txt),我稍後會發布ffmpeg輸出。 – Maypeur

+0

@aergistal我使用zeranoe的最新版本,我會嘗試使用v2.8.2,這裏是輸出ffmpeg:http://pastebin.com/NYevFBQD – Maypeur

回答

1

我終於找到了發生了什麼!

問題在於原始視頻塊的編碼。

在我的編碼循環我使用此代碼:

//-- PTS 
    av_packet_rescale_ts(&pkt_video, m_c->time_base, m_video_st->time_base); 

    if(m_frame->key_frame) 
     pkt_video.flags |= AV_PKT_FLAG_KEY; 

    //Write the compressed frame to the media file. 
    ret = av_interleaved_write_frame(m_oc, &pkt_video); 

當我刪除這些兩行:

if(m_frame->key_frame) 
     pkt_video.flags |= AV_PKT_FLAG_KEY; 

一切都很好。 此外,現在我沒有看到灰色,也沒有看到視頻的開始,也沒有看到我的大塊。

我不明白,因爲我確定我在FFmpeg示例中看到這些行...!

有沒有人可以解釋我什麼是這個AV_PKT_FLAG_KEY的目的; ?

謝謝你的時間。