流媒体技术学习笔记之(九)减少VLC 延迟的方法
之前写过一篇关于在Linux平台上编译Android平台上VLC播放器源代码的文章,vlc这款播放器非常优秀而且是开源的,它的核心是开源视频编解码库ffmpeg。而且这款播放器还支持RTSP协议,这个主要是用开源的live555来实现的,live555这个库以后还需要认真研习。
一、PC端(Windows平台)VLC播放RTSP视频延迟问题解决
前几天用PC平台上的VLC播放RTSP流媒体时延迟时间较长,存在1s左右的延迟,效果不是很好,后来查了资料,发现这个延迟时间是可以修改的。
找到工具->首选项,然后参数设置左下角选择“全部”,左边选择 “输入编解码”->“网络缓存”选项,可以根据具体需要加以修改,具体见下图不过这个值不要太小,否则缓存太小,播放视频的过程中会很卡
如果网络环境较好,300ms以内效果很好,实时性较好。
二:PC端(Linux平台)VLC播放RTSP视频延迟问题解决
这里我的测试平台是ubuntu,linux平台上的vlc可以以命令行的方式来运行,而命令行是可以带参数的,我们只需要在参数里面指定这个延迟时间就可以了,下面是具体的命令行形式,大家可以根据各自需要加以调整
vlc rtsp://192.168.1.1:8556/test.avi --newwork-caching=300
rtsp的地址要根据自己需要播放的视频地址修改,网络延迟时间也可以根据需要修改,这个值越小,实时性越好,当然太小了播放会很卡,或者设置的值失效,一般建议在100-300之间
三. Android平台VLC播放RTSP视频延迟问题解决
首先在Android平台上的VLC播放器不像windows平台上UI里提供了设置延迟时间这一项功能,其次也不像Linux平台上可以以命令行的方式来运行,我们也就不能通过设置参数的方式来修改这个延迟时间,怎么办呢,只剩下最后一条路,修改源代码,将延迟时间写死在源码里,有了前面linux平台下设置参数的经验,就可以在源码里面通过grep工具来查找”network-caching”,发现有很多文件包含这个值,下面是搜索的结果,点击(此处)折叠或打开
- vlc/src/libvlc-module.c: add_integer( "network-caching", CLOCK_FREQ / 1000,
- vlc/NEWS: - --network-caching specifies caching for network resources,
- vlc/modules/gui/macosx/simple_prefs.m: TestCaC("network-caching", 10/3);
- vlc/modules/gui/macosx/simple_prefs.m: CaC("network-caching", 10/3);
- vlc/modules/gui/qt4/components/open_panels.cpp: emit methodChanged( qfu( "network-caching" ) );
- vlc/modules/gui/qt4/components/simple_preferences.cpp: TestCaC( "network-caching", 10/3 );
- vlc/modules/gui/qt4/components/simple_preferences.cpp: CaC( "network-caching", 10/3 );
- vlc/modules/access/file.c: *pi_64 = var_InheritInteger (p_access, "network-caching");
- vlc/modules/access/rtp/rtp.c: *v = INT64_C(1000) * var_InheritInteger (demux, "network-caching");
- vlc/modules/access/ftp.c: * var_InheritInteger( p_access, "network-caching" );
- vlc/modules/access/live555.cpp: * var_InheritInteger( p_demux, "network-caching" );
- vlc/modules/access/http.c: * var_InheritInteger( p_access, "network-caching" );
- vlc/modules/access/sftp.c: * var_InheritInteger( p_access, "network-caching" );
- vlc/modules/access/udp.c: * var_InheritInteger(p_access, "network-caching");
- vlc/modules/access/smb.c: * var_InheritInteger( p_access, "network-caching" );
- vlc/modules/access/tcp.c: * var_InheritInteger( p_access, "network-caching" );
- vlc/modules/access/rtsp/access.c: * var_InheritInteger(p_access, "network-caching");
- vlc/modules/access/mms/mmsh.c: * var_InheritInteger( p_access, "network-caching" );
- vlc/modules/access/mms/mmstu.c: * var_InheritInteger( p_access, "network-caching" );
- vlc/modules/access/vnc.c: * var_InheritInteger( p_demux, "network-caching" );
- vlc-android/jni/libvlcjni.c: libvlc_media_add_option(p_md, ":network-caching=1500");
对这些文件的代码进行了一些分析,最后发现目标在vlc/src/libvlc-module.c这个文件,于是修改这个文件的1832行,如下图所示,将CLOCK_FREQ / 1000改为 CLOCK_FREQ / 3000,这里可以根据各自的需要加以修改,分母越大,这个值就越小,实时性也就越好,当然跟前面所说一样,不能太小点击(此处)折叠或打开
- 1832 //add_integer( "network-caching", CLOCK_FREQ / 1000,
- 1833 // NETWORK_CACHING_TEXT, NETWORK_CACHING_LONGTEXT, true )
- 1834 add_integer( "network-caching", CLOCK_FREQ / 3000,
- 1835 NETWORK_CACHING_TEXT, NETWORK_CACHING_LONGTEXT, true )
最后再编译运行发现延迟时间大概在200ms左右,比修改之前实时性有明显改善,实时性很好,希望这篇文章能给需要相关资料的朋友提供一些帮助。
流媒体技术学习笔记之(九)减少VLC 延迟的方法的更多相关文章
- 流媒体技术学习笔记之(一)nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
参照网址: [1]http://blog.csdn.net/redstarofsleep/article/details/45092147 [2]HLS介绍:http://www.cnblogs.co ...
- 流媒体技术学习笔记之(十)HLS协议直播延时优化(35s到10S)
1.首先要了解HLS延时的机制,也就是为什么会延时,延时主要发生在什么地方. HTTP Live Streaming 并不是一个真正实时的流媒体系统,这是因为对应于媒体分段的大小和持续时间有一定潜在的 ...
- 流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务
FFmpeg推送视频流,Nginx RTMP模块转发,VLC播放器播放,实现整个RTMP直播 查看本机电脑的设备 ffmpeg -list_devices true -f dshow -i dummy ...
- 流媒体技术学习笔记之(十一)Windows环境运行EasyDarwin
流媒体平台框架下载安装 Github下载 下载地址:https://github.com/EasyDarwin/EasyDarwin/releases 解压安装 选择Windows 安装平台的安装包( ...
- 流媒体技术学习笔记之(七)进阶教程OBS参数与清晰度流畅度的关系
源码地址:https://github.com/Tinywan/PHP_Experience 很多主播问过OBS的参数到底什么影响画质,到底什么影响流畅度,那么本篇教程尽量用通俗的语言解释下一些重要参 ...
- 流媒体技术学习笔记之(十八)互联网草案HTTP直播流2017年5月
原文地址:https://tools.ietf.org/html/draft-pantos-http-live-streaming-23 1.HTTP直播流介绍 HTTP实时流媒体提供了一个可靠的,成 ...
- 流媒体技术学习笔记之(十七)FFmpeg 3.3《希尔伯特》-新版本的亮点
FFmpeg 3.3“Hilbert”,一个新的主要版本的一些亮点: 苹果Pixlet解码器 NewTek SpeedHQ解码器 QDMC音频解码器 PSD(Photoshop Document)解码 ...
- 流媒体技术学习笔记之(二)RTMP和HLS分发服务器nginx.conmf配置文件(解决了,只能播放RTMP流而不能够播放HLS流的原因)
user www www; worker_processes ; error_log logs/error.log debug; #pid logs/nginx.pid; events { worke ...
- 流媒体技术学习笔记之(十三)Windows安装FFmpeg
一.下载地址: 网址:https://ffmpeg.org/ 选择Windows版本:https://ffmpeg.org/download.html#build-windows 二.解压安装: 下载 ...
随机推荐
- 按键精灵对APP自动化测试(上)
简单介绍下应用背景:测试安卓app时发现重复点击某一按钮的时候会出现报错,开发修复后提交测试.如果采用手动点击按钮,效率不高,在领导提示下使用按键精灵实现自动操作. 一. 安卓手机按键精灵 ...
- 一种C#泛型方法在lua中表示的设计
在进行lua方法注册的时候, 大多数解决方案直接否定了泛型方法, 因为在lua侧难以表达出泛型, 以及lua的函数重载问题, 函数重载问题可以通过一些特殊方法解决, 而泛型问题是主要问题, 以Unit ...
- React笔记-事件分发
事件分发 之前讲述了事件如何绑定在document上,那么具体事件触发的时候是如何分发到具体的监听者呢?我们接着上次注册的事件代理看.当我点击update counter按钮时,触发注册的click事 ...
- Flink standalone模式作业执行流程
宏观流程如下图: client端 生成StreamGraph env.addSource(new SocketTextStreamFunction(...)) .flatMap(new FlatMap ...
- 数据库——SQL数据连接查询
连接查询 查询结果或条件涉及多个表的查询称为连接查询SQL中连接查询的主要类型 广义笛卡尔积 等值连接(含自然连接) 自身连接查询 外连接查询 一.广义笛卡尔积 不带连 ...
- ajax设置自定义请求头
1, $.ajax({ url:apiUrl, type:"get", timeout : 5000, //超时时间设置,单位毫秒 dataType: "json&quo ...
- linux第三章学习笔记
第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种. 进程管理是所有操作系统的心脏所在. 一.进程 1. 进程是处于执行期的程序.除了可执行程序代码,还包括打开的文件.挂起的信号.内核内部 ...
- oracle not in minus 取到的结果集不同
not in:A not in B B中的集合不能包含空值
- 冲刺Two之站立会议4
在完成了对主界面的设计之后,我们对自己的聊天室界面进行了优化,添加了一些标签和图片按钮等组件让界面更加美观一些.然后还查询了一些关于改进视频和音频质量的资料,准备开展相关工作.
- Citrix Merchandising Server 配置
获取Citrix Merchandising Server虚拟镜像: 我们可以从Citrix官网上下载Citrix Merchandising Server(分为XenServer和vSphere), ...