【问题标题】:Can I use av_write_frame() instead of av_interleaved_write_frame()?我可以使用 av_write_frame() 代替 av_interleaved_write_frame() 吗?
【发布时间】:2019-02-02 08:58:25
【问题描述】:

我正在使用 ffmpeg 在 Windows 平台上编写一个 AV 混合器 DirectShow 过滤器,它将视频和音频流混合到 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()吗?

【问题讨论】:

    标签: ffmpeg directshow libavformat


    【解决方案1】:

    是的。正如documentationav_write_frame() 所述:

    该函数直接将数据包传递给复用器,无需任何 缓冲或重新排序。调用者有责任正确 如果格式需要,则交错数据包。想要的来电者 处理交错的 libavformat 应该调用 av_interleaved_write_frame() 而不是这个函数。

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 2022-01-23
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2011-11-08
      相关资源
      最近更新 更多