vlc
文章平均质量分 56
王二の黄金时代
碰到问题,就解决问题
展开
-
vlc 运行时配置参数读写的实现分析
版本 v3.0.16 源码http://get.videolan.org/vlc/3.0.16/vlc-3.0.16.tar.xz每一完整的软件系统都会有一个参数配置模块,用来实现运行时不同的参数输入,有些软件系统会做得比较简单,直接通过方法的输入,作为参数,有些系统做得比较通用复杂,比如vlc,也是比较完整独立的通用的配置。vlc 使用c语言编写,实质是一个多媒体播放器, 有OB面向对象的设计,对一个结构体的创建,可以类比为创建一个对象,vlc都通过使用malloc等函数,动态申请内存来存...原创 2022-03-13 21:42:31 · 4968 阅读 · 0 评论 -
vlc-提取mp4解复用模块
vlc 以插件的方式组合起来的libvlc库,为了更方便深入研究mp4格式,从vlc源码中剥离出了 其mp4 demux模块,剔除其他各种解码渲染的部分,这里只有vlc-3.0.16\modules\demux\mp4 目录下的文件,其他的部分都是碍于系统基础结构依赖,添加的。已上github:https://github.com/Canok7/mp4_demux_mux提取过程相当不易,会发现A需要B,B有需要C。。。。这里已经将其提取,写了一个Androd.mk ,还有测试代码 test_demu.原创 2021-09-02 19:38:01 · 527 阅读 · 0 评论 -
vlc-android 源码目录结构
vlc的核心,libvlc, 里面集成解复用,解码, 提供出来这些解复用解码的功能集成在libvlc库中,提供统一调用接口,这样在windows,linux, 都可以统一调用这个libvlc的接口。 对于在android 上的vlc播放器,同样的道理,将libvlc进行了jni的一层封装,在源码中:vlc:这个是vlc 核心功能,其中的解复用解码都在这里面,主要功能都在这里面,linux版本的vlc基本在这个里面编译,当然vlc会用到其他的第三方项目,其中子目录 contrib 就是用来下载所有这些第三原创 2020-07-02 15:31:45 · 1401 阅读 · 0 评论 -
vlc-video解码后的输出路径
做播放器类的app开发,有很多的多媒体框架可以选择,vlc就是独立的一个,其他的比如ijkplayer vitamio等,总的来说他们的功能都是一致的,即音视频文件的解复用,解码,这些功能被封装成java sdk,简化app开发人员的调用。现在有个疑问,如果是使用android系统提供的 mediaplayer进行播放,最终解码出来的yuv数据流可以知道mediaplayer内部给到surface 输出了,那这些第三方的框架自己解码出来的 yuv数据,怎么配合输出到android显示呢? 也就是说使用那些.原创 2020-07-02 15:24:46 · 1875 阅读 · 0 评论 -
audio的获取途径和播放输出途径---播放输出
常见设备有哪些途径可以获取音频和播放输出音频的途径(代码模块)?基于vlc3.0.6源码:这里从vlc源码来分析例举一下,vlc,确实是一个功能齐全的多媒体处理系统,在wind、linux、android、ios都有提供相应的版本,其核心结构是共用的一套代码,采用插件的方式组合起来,可以方便扩展,重点是它是一个开源工程,随时下载查看其源码,这里从vlc源码来看下,支持哪些途径获取音频和播放输出...原创 2019-12-27 14:13:47 · 2691 阅读 · 1 评论 -
live555推流----局域网延迟的分析
============20191212--追加---------以下主要追究发送比较大的网络数据时多次调用 系统调用send而产生的耗时问题,不过对于实际上传输音视频实时流的使用场景,往往数据不会这么大,延迟的性能瓶颈主要不在于此========================最近在做局域网投屏相关,发现使用vlc做推流和接受,延迟过大(1s以上),改用live555推流和接受,延迟还是过大...原创 2019-11-18 11:41:39 · 5408 阅读 · 4 评论 -
使用vlc推流rtsp,同时本地播放和客户端播放rtsp,延时控制
总的来看,期望 delayA+delayB+delayC = delayD而DelayC, 而delayC,受具体网络环境和协议解析的影响,其他几个部分,都是可以配置指定的原创 2019-05-24 14:37:17 · 5360 阅读 · 0 评论 -
vlc duplicate模块
官方code docvlc 的duplicate 复制流模块,归属于 stream_out 功能下的一个模块,它的作用,是将输入的stream copy多份,再输出到不同的stream_out. 类似于一个分流器,内部会申请新的 block缓冲区并复制多分,每一份但对给分支。接口完全遵守 stream_out模块的接口。文件 stream_out/duplicate.c使用方法:vl...原创 2019-04-19 16:47:14 · 1070 阅读 · 0 评论 -
vlc-录制帧率为1的mp4文件,帧率为1测试mp4文件
为分析vlc源码播放视频时的逻辑,利用vlc -window版录制了个一帧每秒,只有视频,封装为mp4格式的视频文件,录制方法基本同https://blog.csdn.net/u012459903/article/details/88951498准确地说,不是录制,是利用串流功能将原视频抽取并转码输出,在串流的过程中因为目标文件只是1帧每秒,源文件帧率可能 25帧每秒,输出的视频文件你会...原创 2019-04-20 14:30:47 · 1141 阅读 · 0 评论 -
vlc-android-源码编译-修改依赖的live555源码文件
编译后的vlc-android, 有需要vlc依赖的第三方库live555中添加一些修改。 由于vlc依赖第三方库是自己指定下载特定版本并且最终将第三方库打包到一起,所以,应该去修改编译环境中的第三方源码包。如果已经成功编译过源码,可以在 Android\vlc-android\vlc\contrib 目录下看到多个contrib-android-XXX文件夹,我编译使用 ./compile.s...原创 2019-06-26 11:52:20 · 714 阅读 · 0 评论 -
vlc-源码分析--rtsp服务端-单线程IO复用模型
vlc使用了live555开源库,但是只是播放网络视频流的时候用live555作为 接受,对于串流rtsp功能,为自行实现的一个服务端程序,单线程IO复用服务端模型。这里分析下这个服务端的源码 位于 src/network/httpd.c这里仅仅rtsp的服务端,不涉及到rtp具体的传输视频,rtp传输数据是另外的线程。看这个rtsp服务端的大概模型,使用单线程,io复用的方式,处理所有连接...原创 2019-07-16 12:30:12 · 421 阅读 · 0 评论 -
h264测试文件--从h.264文件读取单独帧模拟视频流
测试服务器需要一个h264流,从h264文件读取流的函数实现: c语言版本注意需要h264文件开头即为00 00 00 01/******20190828 canok*** output: complete frames**/#include<stdio.h>#include<stdlib.h> #include <unistd.h>...原创 2019-08-28 18:10:10 · 5185 阅读 · 0 评论 -
vlc读取rtsp流-源码分析---时间戳dts的计算
h264流中有两个概念,pts,dts: vlc源码分析--播放速度控制原理,pts,dts vlc 使用插件的形式开发,读取rtsp流时,会根据url地址解析,加载 liblive555_plugin.so 插件,作为demuxer使用,输入线程 (input.c 中)会调用 demuxer的 demux() 函数,驱动其解复用。liblive555_plugin.so的源码文件,在 /...原创 2019-09-02 15:23:48 · 2723 阅读 · 0 评论 -
vlc源码分析-clock.c 时间戳模块
vlc 播放网络视频流,比如rtsp流,需要进行是否超时的判断,判断是网路的延迟接受,还是因为解码器太慢导致延迟等,利用到网络流的时间戳,把网络流的时间戳和系统实际的时间建立一个对应关系,就是 /src/input/clock.c这个模块的作用。实际从vlc软件实际使用上可以观察出来,比如播放一个网络rtsp流,即使没有丢帧,仔细观察也会发现有些视频画面时快时慢,就是因为网络的不稳定导致接受到数据...原创 2019-09-04 15:02:21 · 2081 阅读 · 0 评论 -
vlc-添加自定义的demuxer解复用插件----播放h264裸文件
使用vlc3.0.6 在ubuntu 64bit上编译,vlc使用插件的方式组织对多种视频源的支持,比如 avi、mp4、mkv、等等,这里想添加一个自己的demuxer,从一个h.264文件中读h264数据,播放。(vlc并不支持直接播放h264裸流文件,至少这个v3.0.6版本是没有支持)一:添加一个demuxer模块:在moudle/demux 的makefile.am 中添加:...原创 2019-09-04 17:08:36 · 1763 阅读 · 0 评论 -
vlc-android-aar包编译分析
libvlc-armv8-3.1.5.aar 开发包的组成,其中包含的libvlc.so 包含了vlc所以的插件库 lib*plugin.a 和 vlc的libvlc.a libvlccore.a libcompat.a , 将所有需要的库编译成静态包.a, 然后集合打包成 libvlc.so 这是一个独立的 so库,使用的时候已经不在需要再加载其他的库比如解码用的ffmeg,播放rtsp用的live555,这些都已经以静态方式链接集成到libvlc.so了。原创 2019-09-09 16:13:12 · 1642 阅读 · 0 评论 -
vlc的block缓冲区模块
任意的一个程序,稍微复杂一点都需要缓冲区,来临时存放数据,尤其对于处理视频流的程序,缓冲区还比较大,针对不同的数据还有一些专用的特性。对于java c++的程序一般使用系统或者平台框架已经开发好的缓冲区模块,也就是常见的数据结构---链表,队列,红黑树等。一般嵌入式程序而言,我所接触过的几个软件系统都会自己开发出一套专用的缓冲区模块,这里提取了vlc的block缓冲区模块,可独立使用,便于分析借鉴...原创 2019-10-08 15:57:33 · 530 阅读 · 0 评论 -
vlc源码分析--播放速度控制原理,pts,dts
一:解码的速率控制视频都有帧率,即每一秒应该显示的帧数,怎么根据这个帧率,来匀速地播放视频?播放的时候怎么实现快速播放,而不是跳帧式地快进?探究一下vlc源码里面对帧率和播放速度的控制。(选用只包含一个视频流且帧率的1的视频文件做的分析https://blog.csdn.net/u012459903/article/details/89416892)先上结论:vlc 版本 3.0.5vl...原创 2019-05-10 17:32:06 · 4943 阅读 · 0 评论 -
libvlc 使用mediaplayer 播放rtsp
环境 ubuntu18.04 vlc3.0.6源码从 github上下载的vlc 源码,默认配置,默认编译,用命令./vlc rtsp://192.168.43.129:10086/stream竟然无法播放,但是直接./vlc test.mp4 用 修改 vlc.c 里的main函数替换成用 vlm推送rtsp流, 都可行。现象:[00007fe66c001670] sati...原创 2019-04-17 19:10:14 · 11917 阅读 · 0 评论 -
vlc源码分析(3)-decoder.c 使用vlm rtsp方式输出流过程
/*********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...原创 2019-04-03 17:25:33 · 874 阅读 · 0 评论 -
c c++宏定义使用编译器展开宏定义
最近研究VLC源码,对于其中模块加载对接部分很是困惑,跟踪代码的时候总会有断掉线索的嫌疑,因为其中就很多用函数指针+宏定义来实现的,对于其中的宏定义实现的函数定义,自行展开宏定义去分析很是麻烦,还不可靠,可以直接使用编译器可展开得到原代码,查看起来比较方便。参考下这位朋友写的编译器的编译过程:(瞬间感觉掌握了一项黑科技,宏定义什么的统统原创 2019-02-18 17:12:40 · 3043 阅读 · 0 评论 -
VLC源码流程图
记录下个人分析的vlc 3.0.6 的源码函数调用流程:参考另一篇:https://blog.csdn.net/hpb21/article/details/43271095个人比较喜欢实实在在的摆在明面上的东西,代码也一样,能一眼看到前因后果,踏实,所以就画了这么张图,内容后续继续更新,基于截至当前最新版本的vlc3.0.6 源码分析出来的一张函数调用流程图,用freemind画的,...原创 2019-02-19 09:49:49 · 1450 阅读 · 0 评论 -
vlc源码分析--issue (未完待续)
最近分析VLC源码,很是疑惑,虽然来百度也能找到很多关于vlc源码结构的技术博客,不过大体都讲的vlc几个模块的概述而已,寻寻觅觅终无所获,实在太过空虚,不如索性直接探究源码,毕竟,所有的措辞,他就在源码里面,实实在在真真切切,它就在那里,一览无余。自此一入源码深似海。源码大致的结构,已经在其他文章有所描述,个人也写过关于它的makefile分析和函数流程图的博客,此篇不在赘述,而是想列几个问...原创 2019-02-28 17:30:02 · 3277 阅读 · 1 评论 -
VLC源码makefile分析
通过分析makefile编译构建过程,梳理各个具体目录的作用和联系这是一张freewind画的结构图,个人通过分析查看跟踪makefile整理,使用vlc版本为3.0.6 for linuxubuntu 18.04编译,默认配置。为了方便查看已经缩减了很多具体的细节,后续文字补充;上图说明:vlc 顶层的makefile, 会进入各个子目录中查找makefile 执行编译子...原创 2019-02-20 16:39:50 · 2165 阅读 · 0 评论 -
ubuntu 编译vlc for android git 拉取vlc官方源码: clone git://git.videolan.org/vlc.git vlc
最近要借用vlc for android 进行二次开发总结下:(代码在更新,本资料可能不适用,截止20190309)1.0 官方安装,从官方下载clone 代码太慢。2.0 从github镜像 下载文件包,没有git 库信息,官方编译脚本会有错误。解决办法:从github 或者其他镜像clone 速度较快,但下载的代码不一定最新,为适配官方的编译脚本,镜像clone好之后修改gi...原创 2019-03-09 15:12:02 · 1232 阅读 · 0 评论 -
使用libvlc 开发推流器 demo
使用libvlc sdk库开发一个简单的推流器,参照自雷博士的博客https://blog.csdn.net/leixiaohua1020/article/details/42363701不过直接使用貌似有些问题,对着 vlc的源码改了下。环境:ubuntu 18.04, vlc-linux 源码,vlc 3.0.6 已经对源码进行 configure make,并且可以执行#./...原创 2019-03-16 16:29:25 · 2938 阅读 · 0 评论 -
ubuntu 编译vlc-android
ubuntu 编译vlc-android环境:ubuntu 18.04 && openjdk version "10.0.2" 2018-07-17 && ndk r18b && sdk android 9.0 api 28jdk:http://www.oracle.com/technetwork/java/javase/down...原创 2019-03-13 11:25:04 · 793 阅读 · 0 评论 -
android使用libvlc开发推流的简单demo_apk
从linux版本的libvlc推流demo,https://blog.csdn.net/u012459903/article/details/88600045移到android app上使用,调通,迫不及待上一篇博文,虽然还没来得及整理好各种细节。如图,测试android机和 pc连接到同一局域网,启动app,用pc上的vlc播放器 播放网络串流:输入app中设置的流地址环境:...原创 2019-03-18 17:32:01 · 5229 阅读 · 3 评论 -
Android基于libvlc 播发rtsp视频流
使用libvlc 播放rtsp视频流的app demo.从官方vlc官方sample上修改而来,下载地址:https://code.videolan.org/videolan/libvlc-android-samples/tree/master/官方的sample是播放一个在安装包里面的.m4v 的卡通动画,稍作改动,就可以播放rtsp视频流了。(直接下载过来的工程无法使用,缺少 vlc的...原创 2019-03-22 17:13:53 · 6392 阅读 · 2 评论 -
vlc源码分析(2)--input.c mp4文件解复用,mp4模块加载
/*********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...原创 2019-03-29 16:56:01 · 1057 阅读 · 0 评论 -
vlc源码分析(1)--vlm.c 添加简单推流器逻辑
/*********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...原创 2019-03-27 15:12:59 · 1553 阅读 · 2 评论 -
vlc(window)分离mp4文件中的音视频
================================================================这是之前发的一篇博客,现在来看,vlc的本质其实是一个播放器,处理音视频流,重点在于播放,所以在流传输的过程中一直涉及到时间的控制,用来分离音视频,还真的很为难,会很慢,因为只是利用的存文件的功能把原本用来播放的视频流输出到文件了,所以按照下面的方法分离音视频,你可能...原创 2019-04-01 17:12:50 · 10092 阅读 · 0 评论 -
vlc-android 开启硬件解码
final Media media = new Media(mLibVLC, new String("/storage/emulated/0/bydtest.mp4")); // final Media media = new Media(mLibVLC, Uri.parse("rtsp://192.168.43.1:10086/stream")); ...原创 2019-04-11 15:10:01 · 5248 阅读 · 0 评论 -
vlc源码分析(4)-stream_out/rtsp.c vlc中rtsp服务端
/*********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...原创 2019-04-08 19:47:04 · 862 阅读 · 5 评论 -
android 基于vlc,rtsp推流器
Android基于libvlc 播发rtsp视频流android使用libvlc开发推流的简单demo_apkandroid 使用 libvlc开发推流器。之前博文android使用libvlc开发推流的简单demo_apk 中用了vlm,较为复杂。现改进;使用上述博文Android基于libvlc 播发rtsp视频流直接将final Media media = new M...原创 2019-04-12 15:28:01 · 3034 阅读 · 5 评论 -
WireShark查看vlc播放rtsp流过程,抓包分离出h264流
基于之前的 vlc源码推流,用pc(window)上的vlc播放器播放rtsp流。这次用WireShark抓包,简单查看其中的交互过程,最后参考了一篇文章,从这个包中分离出h264流。(这才见识到WireShark的强大,以及何为“协议”)rtsp 交互流程截图参照一篇博客:提取h264https://blog.csdn.net/...原创 2019-04-09 15:41:02 · 6324 阅读 · 0 评论 -
VLC_linux源码移植到android工程编译
注意,这个不是来编译 vlc_for_android ,是vlc linux版本的源码,想移植到android源码目录下去编译,修改为己所用,主要是重新构建自己的编译脚本(源码的构建体系是configure +make 。)要在android上源工程中编译,自然用到Android.mk, 这里基本上就是遵照自己之前分析的源码的makefilehttps://blog.csdn.net/u012...原创 2019-02-22 17:29:39 · 398 阅读 · 0 评论