Kotlin/Native应用程序开发指南(2)

音频/视频同步是必须要保证的,它可以确保我们没有太多的未播放的音频帧。真正的多媒体播放器应该依赖于,我们只计算它,但永远不会使用。这里有一个有趣的地方

val ts = av_frame_get_best_effort_timestamp(audioFrame.ptr) *
  av_q2d(audioCodecContext.time_base.readValue())

它展示了如何使用api接收C语言的结构体。它是在libavutil/rational.h中声明的

static inline double av_q2d(AVRational a){
    return a.num / (double) a.den;
}

因此,要通过值传递它,我们首先需要在字段上使用readValue()。

总结来说,多亏了FFMPEG库,我们才能用较少的代价便实现了一个支持多种输入格式的简易音频/视频播放器。这里我们还讨论了Kotlin/Native中基于C语言的互操作性相关的基础知识,以及更容易使用和维护的并发方法。 

英文原文链接

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/87dc5024655199f437f428405973c079.html