1:改变VLC模块参数  

http://tianxiaoma.blog.51cto.com/1501174/309519

========================================

========================================   

改变VLC模块参数
一、动态改变参数:     查询得到对象,直接设置参数。 1、filter参数
        libvlc_media_player_t *p_mediaplayer; // 输入播放器指针         vout_thread_t *p_vout = GetVout( p_mediaplayer, p_e );
        if( p_vout )         {                 filter_t *p_filter = filter_chain_GetFilter( p_vout->p->p_vf2_chain, 0, psz_filter_name );
                if ( p_filter )                 {     // .....     int i_ret = var_Set( p_filter, psz_param, val); }         }
 
2、subfilter参数
        libvlc_media_player_t *p_mediaplayer; // 输入播放器指针         input_thread_t *p_input;         vlc_object_t *p_obj;         vlc_value_t val;         p_input = libvlc_get_input_thread( p_mi, p_e );         if( !p_input )                 return;
        p_obj    = vlc_object_find_name( p_input, psz_filter_name, FIND_CHILD );         if( p_obj )         {                 // .....     int i_ret = var_Set( p_obj , psz_param, val);         }
 
3、Media player参数   
    vout_thread_t *p_vout = GetVout( p_mi, p_e );         if(p_vout)          {                 // .....     int i_ret = var_Set(p_vout , psz_param, val);         }
 
4、Instance参数(实例参数)  
        libvlc_instance_t *p_instance;    // 输入实例指针          libvlc_int_t *p_libvlc = p_instance->p_libvlc_int;          if (p_libvlc)          {                 // .....     int i_ret = var_Set(p_libvlc, psz_param, val);         }
 
二、改变默认参数: 模块调用前(例如打开媒体前),静态设置。 (1) 可以通过VLC.exe的命令行传入默认参数;
vlc.exe -vvv --extraintf=logger
 
(2) 也可以在调用libvlc_new函数创建实例时,传入默认参数;
          const char* vlc_args[32] = {};     int vlc_args_num =0;
      vlc_args[vlc_args_num++] = "-vvv";          // 日志输出的级别       vlc_args[vlc_args_num++] = "--extraintf=logger";  // 日志输出
    /* init vlc modules, should be done only once */     m_pInstance = libvlc_new (vlc_args_num , vlc_args, &ex);
 
(3)  也可以在打开媒体前,传入默认参数; 
      szOption = ":deinterlace-mode=blend";            // Deinterlace滤镜参数:反交错参数       libvlc_media_add_option(m,szOption ,&ex);
    /* Create a media player playing environement */     m_pMediaPlayer = libvlc_media_player_new_from_media (m, &ex);
 
(4) 也可以运行时程序改变;
默认参数存储在模块树中。用程序改变默认参数,可使用下列函数:
#define config_GetType(a,b) __config_GetType(VLC_OBJECT(a),b) #define config_GetInt(a,b) __config_GetInt(VLC_OBJECT(a),b) #define config_PutInt(a,b,c) __config_PutInt(VLC_OBJECT(a),b,c) #define config_GetFloat(a,b) __config_GetFloat(VLC_OBJECT(a),b) #define config_PutFloat(a,b,c) __config_PutFloat(VLC_OBJECT(a),b,c) #define config_GetPsz(a,b) __config_GetPsz(VLC_OBJECT(a),b) #define config_PutPsz(a,b,c) __config_PutPsz(VLC_OBJECT(a),b,c)
程序示例:

        libvlc_instance_t *p_instance;    // 输入实例指针          vlc_value_t value;        // 输入值          libvlc_int_t *p_libvlc = p_instance->p_libvlc_int;          if (p_libvlc)          {                 // .....     config_PutInt(p_libvlc, psz_param, value.i_int);         }
三、说明 1、如果要动态改变参数,VLC模块中最好创建为“实例参数”(VLC Instance Param)。    例如:Demux模块中,创建"my-log-receive"模块参数:

bool b_log_receive = var_CreateGetBool( p_demux->p_libvlc, "my-log-receive");
 
2、模块中创建参数的流程如下:    (1) 对象是否已创建该参数?有则返回。    (2) 访问父对象或Instance对象,如果有则引用,并返回。    (3) 访问模块的默认参数,判断是否是模块参数?是则创建。
=====================================================================================================================
 
【2:用vlc搭建简单的流媒体代理服务器】
================================================================
================================================================
===================================================================
这段时间涉及到     RTSP     代理的问题,感觉     VLC     做这方面的     demo     比较好,这里总结下,也方便我以后查阅。

环境:     DarwinStreamingServer 6.0.3 + VLC 2.0.3

我之前的一篇文章(     http://www.cnblogs.com/MikeZhang/archive/2012/09/09/vlcStreamingServer20120909.html          )中介绍过怎样用     vlc     搭建简单流媒体服务器,其实这里也只是把     sample1.avi     替换成     rtsp     链接罢了,本文中只以     RSTP     的方式示例。

界面操作方式

这里主要介绍下服务器的搭建,客户端就不介绍了,不懂的朋友参考我这篇文章:     http://www.cnblogs.com/MikeZhang/archive/2012/09/09/vlcStreamingServer20120909.html

1     、     打开“媒体——                 打开网络串流(                       N          )                          ”选项,如图所示:

2     、输入     RTSP     链接,并选择“串流”,如图所示:

3     、在弹出的界面中点击“下一个”,进入如下界面:

4     、选择一种格式(比如     RTSP     ),点击“添加”按钮,选择好相应的编码档案后,点击“串流”即可:

命令行方式

这里介绍命令行方式,主要是为了在批量测试的环境中用脚本进行操作。

假设     DSS     服务器     IP     地址为     192.168.1.100     ,有如下     RTSP     链接:

rtsp://192.168.1.100/test.mp4

则     vlc     访问如下:

vlc -vvv rtsp://192.168.1.100/test.mp4

如果要作为     RTSP     代理服务器使用的话,则需如下调用:

vlc -vvv rtsp://192.168.1.100/test.mp4       --sout                       "#transcode{vcodec=h264,vb=0,scale=0,acodec=mpga,ab=128,channels=2,samplerate=44100}:rtp{sdp=rtsp://:8554/test}"

比如代理服务器的     ip     为     192.168.1.101     ,并且执行了上述命令,则在客户端访问如下:

vlc -vvv rtsp://192.168.1.101:8554/test

好,就这些了,希望对你有帮助。

vlc相关命令行设置的更多相关文章

  1. Linux下修改IP、DNS、路由命令行设置

    本文最后修改时间:20180313 一.快速修改,重启后设置就没了 ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up route add defa ...

  2. i针对网段开放端口 (命令行设置)

    针对网段开放端口 -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 1234 -j ACCEPT 命令行设置iptables iptables -I I ...

  3. 使用命令行设置MySql编码格式

    使用命令行设置MySql编码格式 1.登录mysql 2.输入 SHOW VARIABLES LIKE 'character_set_%'; 3.查看 value值是否为utf8,如果不是,则使用SE ...

  4. VirtualBox 相关命令行

    简介 由于之前项目有一个需求,则是自动化创建虚拟机并加载相关配置,创建虚拟机无法避免对于虚拟机系统的设置,因此采用导入虚拟机的方式,并通过查阅virtualbox相关手册,知晓virtualbox可以 ...

  5. Windows下使用命令行设置ip地址的DNS服务器

    使用命令行或者编写bat批处理设置网络连接的IP地址以及DNS服务器地址有时候会比手动更加方便,IP地址和DNS的设置一般是配合的,常用到的几个状态是: 1.IP地址动态获取,DNS也动态 2.IP地 ...

  6. 使用命令行设置svn忽略列表

    Windows 上的 TortoiseSVN 设置 svn 的忽略列表是非常方便的,但是在Mac OS X上,好用的图形化 svn 客户端都有点儿贵,比如 Versions 和 CornerStone ...

  7. 通过命令行设置Windows 时区

    我们在进行自动测试的时候,不同的测试程序对于时区的要求不同,所以在开始的时候需要根据测试程序的要求了设置时区. Windows 提供了一个工具来进行时区设置.tzutil.exe. 目录:C:\Win ...

  8. 使用npm安装webpack失败时,可能被墙要为cmd命令行设置代理

    一.搜索到的相关概念: Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. npm是 Node packaged Modules(node的包管理工具).本身用n ...

  9. Windows 通过命令行设置固定ip地址

    Winserver1709 之后 windows系统取消了GUI界面 设置ip地址 需要使用命令行界面进行 这里简单记录一下 打开win1709的虚拟机 进入命令行控制台 输入 ipconfig 查看 ...

随机推荐

  1. css样式中position和_position的区别

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3IAAAEUCAIAAADhh5PYAAAgAElEQVR4nO3dPa/rNoLGcX6dW6UL+B ...

  2. Java 调用 php接口(Ajax)(二)

    由于项目里面需要用到Java调用PHP的充值接口,所以学习了一下,以下这个Demo是个小小的例子,写下来做个笔记> jsp页面: <%@ page language="java& ...

  3. poj3666&&bzoj1592

    题解: 和bzoj1367差不多 然后a[i]-i不用加 然后我再另一个地方加了这句话 然后poj ac,bzoj wa poj数据水啊 代码: #include<cstdio> #inc ...

  4. [批处理]批量提取MKV资源

    最初是下了部没字幕的动漫,是720P MKV格式的,当时没注意,下完了以后才发现是没字幕的 后来去射手上找没有,百度了半天也没有 最后只能求救与已经下了这部动漫是MKV格式且是内挂字幕的人来帮忙 最后 ...

  5. Alpha冲刺(11/10)

    拖鞋旅游队团队事后诸葛亮会议 前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10054510.html 时间:2018-12-1 20:00 地 ...

  6. 40道Java基础常见面试题及详细答案

    最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案. 为此我业余时间整理了40道Java基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可. 八种基 ...

  7. 用 Python 快速实现 HTTP 和 FTP 服务器

      用 Python 快速实现 HTTP 服务器 有时你需临时搭建一个简单的 Web Server,但你又不想去安装 Apache.Nginx 等这类功能较复杂的 HTTP 服务程序时.这时可以使用  ...

  8. Html页面Dom对象之Event

    HTML DOM Event 对象 实例 哪个鼠标按钮被点击? 光标的坐标是? 被按的按键的 unicode 是? 相对于屏幕,光标的坐标是? shift 键被按了吗? 哪个元素被点击了? 哪个事件类 ...

  9. /sys/kernel/debug/usb/devices解析

    1.概述 USB设备通过debugfs导出/sys/kernel/debug/usb/devices显示内核已知的每个USB设备及其配置描述符.此文件对于用户模式下的状态查看工具非常方便,可以扫描文本 ...

  10. 获取 graphql schema 信息

    模块 npm install -g get-graphql-schema get-graphql-schema GRAPHQL_URL > schema.graphql 简单使用 使用prism ...