FFMPEG视频编码需要注意的一些问题

使用ffmpeg进行视频编码,除了一些固定的流程外,容易出问题的地方是音视频的同步,尤其是需要重新指定时间戳的情况下。以下是一些需要注意的问题:

1)、FFMPE编码时,时间戳只需要指定AVFrame的pts字段。

2)、时间戳的的时间单位使用AVCodecContext中的timebase,编码完成后,在使用函数av_interleaved_write_frame写文件之前,需要使用函数av_packet_rescale_ts把AVPacket中的时间戳(此时dts也会有值)、duration等字段的值的时间单位转为流的时间单位(AVStream中的timebase字段)。

3)、音频编码时,对音频帧中采样的数量(AVFrame的nb_samples字段)有要求,这个值可以从AVCodecContext中的frame_size字段获取。所以需要把原始的数据进行缓存,然后按照目标编码要求的采样数量来取,并根据原来帧的时间戳重新计算时间戳。

你可能感兴趣的:(FFMPEG视频编码需要注意的一些问题)