贿赂之间的FFmpeg Concat人工制品

FFmpeg Concat artefact between bribes

我用FFmpeg concat 3个mp4视频贿赂

FFbrope 显示所有贿赂都以关键帧开始,并且在 VLC 中播放得很好。

播放最终视频文件时,贿赂开始时会出现一些伪像:

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

我在 concat 命令行中尝试了不同的选项来重新编码,但人工制品仍然存在。

我能做些什么来避免贿赂之间的这种灰色假象?

谢谢。

我终于找到发生了什么事了!

问题出在原始视频块的编码上。

在我的编码循环中,我使用了这段代码:

    //-- 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; ?

谢谢你的时间。