obs源码分析

obs源码分析

一.obs音视频同步方法

参考:https://blog.csdn.net/liuhengxiao/article/details/83059314

源码在D:\work\obs-studio-jianan\obs-studio\libobs\obs-output.c

static bool prune_interleaved_packets(struct obs_output *output)
{
    size_t start_idx = 0;
        //先删除超过一个视频帧间隔之前的所有帧
    int prune_start = prune_premature_packets(output);


    /* prunes the first video packet if it's too far away from audio */
    if (prune_start == -1)
        return false;
    else if (prune_start != 0)
        start_idx = (size_t)prune_start;
    else
               //如果prune_premature_packets没有,找出离视频帧最近的音频帧作为开始
        start_idx = get_interleaved_start_idx(output);

    if (start_idx)
        discard_to_idx(output, start_idx);

    return true;
}

一.obs采集与渲染流程

参考:https://www.cnblogs.com/JazzerDaxian/p/8480229.html
摄像头通过dshow来采集的,然后通过obs_source_output_video方法来写入一个队列,然后渲染线程obs_source_video_tick读这个队列的内容来渲染显示咯

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容