我可以使用av_write_frame()代替av_interleaved_write_frame()吗?

时间:2019-02-02 08:58:25

标签: ffmpeg directshow libavformat

我正在使用ffmpeg在Windows平台上编写av muxer DirectShow Filter,它将视频和音频流混合到mp4 / ts / flv文件或rtsp / rtmp / udp流中,我确认视频/音频流的dts顺序增加,因此不需要dts重新排序,那么我可以使用av_write_frame()代替av_interleaved_write_frame()吗? av_write_frame()直接将数据包写入多路复用器,如果没有引用计数,av_interleaved_write_frame()将创建数据包的副本,因此我更喜欢使用av_write_frame(),因为我认为它应该更有效(不进行复制和缓冲),我认为是对的吗?我可以使用av_write_frame()吗?

1 个答案:

答案 0 :(得分:2)

是的。正如av_write_frame()的{​​{3}}所述:

  

此功能将数据包直接传递到复用器,无需任何   缓冲或重新排序。呼叫者负责正确   如果格式要求,则对数据包进行交织。来电者   libavformat处理交错应该调用   av_interleaved_write_frame()代替此函数。