vlc源码分析(1)

编程入门 行业动态 更新时间:2024-10-23 12:27:23

vlc<a href=https://www.elefans.com/category/jswz/34/1770099.html style=源码分析(1)"/>

vlc源码分析(1)

/*********vlc rtsp广播推流mp4文件 源码流程分析***********/

《vlc源码分析(1)--vlm.c 添加简单推流器逻辑 》

《vlc源码分析(2)--input.c mp4文件解复用,mp4模块加载》

《vlc源码分析(3)-decoder.c 使用vlm rtsp方式输出流过程》

《vlc源码分析(4)-stream_out/rtsp.c vlc中rtsp服务端》

参照源码分析之前博客中使用libvlc推流的demo 的细节。

之前使用libvlc推流的demo,只调用了三个关键函数

vlc = libvlc_new(0, NULL);

int libvlc_vlm_add_broadcast( libvlc_instance_t *p_instance,
                              const char *psz_name,
                              const char *psz_input,
                              const char *psz_output, int i_options,
                              const char * const *ppsz_options,
                              int b_enabled, int b_loop );

int libvlc_vlm_play_media( libvlc_instance_t *p_instance,
                           const char *psz_name );

创建vlc,添加broadcast, 播放。

查看linux版本的vlc执行逻辑,是没有看到vlm相关调用的,也就是说vlc-linux 客户端是没有用到vlm,但是一样的功能,简单的分析了下,vlc主要的循环体(执行读数据解码到输出的线程)在 input.c文件中,input部分。上面通过不同的方式创建input线程并设置好input的参数(输入输出),就有了vlc的主要功能。可以全工程搜索一下input_Create这个函数,真正调用的,只有三处地方:

1: playlist/thread.c

2: src/input/vlm.c

3: lib/media_player.c

这三个地方的调用,对应vlc三种使用方法: 1: linux客户端执行程序调用 2:vlm 即我们demo使用的这种方法 3:供android 播放器 (jni层)调用的。(可以在android app 源码下面的jni中找到对mediaplayer 的封装)估计也是这个原因,在编译vlc-android 源码的时候得到的 aar包里面的libvlc默认是没有开启 vlm模块的。

这里主要来分析下 vlm.c这个文件(这个文件有两个,一个是/lib 目录下,主要是一个外部的封装,一个是 /src/input 目录下,是具体和 input进行相关控制实现的内容。)

调用的vlm的接口 libvlc_vlm_add_broadcast,libvlc_vlm_play_media,libvlc_vlm_pause_media,libvlc_vlm_stop_media都在 /lib/vlm.c中。

/src/input/vlm.c

一张ppt解释下,文字码多了没耐心看。 借用某本书的一句比喻,函数即剧情,数据结构为人物。所以下面的图主要列了"人物",剧情以文字部分简单介绍,"人物"之间的关系,左边的罩着右边的,头部对齐,太拥挤的就用同样的着色表示从属关系

调用libvlc_vlm_add_broadcast ,创建了vlm,设置了相关参数到vlm_media_sys_t(一个media对应一个)中的 ppsz_input;ppsz_option. 即在外面传入的 文件路径,sout输出参数。

调用libvlc_vlm_play_media ,创建 vlm_media_instance_sys_t,使用上面的两个输入和输出的参数 设置到 input_item;

然后用盖input_item创建一个 input,启动input线程,剩下的事情都交给了input线程处理数据了。

 

更多推荐

vlc源码分析(1)

本文发布于:2024-03-09 04:32:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723814.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:源码   vlc

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!