贿赂之间的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; ?
谢谢你的时间。
我用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; ?
谢谢你的时间。