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. UVA-10779 Collectors Problem (网络流建模)

    题目大意:有n个人,已知每人有ki个糖纸,并且知道每张糖纸的颜色.其中,Bob希望能和同伴交换使得手上的糖纸数尽量多.他的同伴只会用手上的重复的交换手上没有的,并且他的同伴们之间不会产生交换.求出Bo ...

  2. UVA-1613 K-Graph Oddity (着色问题)

    题目大意:一张n个顶点.m条边的无向连通图,用k种颜色着色(相邻顶点颜色不能相同),其中k为不小于点的最大度数的最小奇数. 题目分析:水题一道.建张图深搜一下就行了. # include<ios ...

  3. HTML <select> 标签

    定义和用法 select 元素可创建单选或多选菜单. <select&> 元素中的 <option> 标签用于定义列表中的可用选项. HTML 4.01 与 HTML ...

  4. hdu 3689 杭州 10 现场 J - Infinite monkey theorem 概率dp kmp 难度:1

    J - Infinite monkey theorem Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d &am ...

  5. 互评Alpha版本

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2323] 队名:二次元梦之队 组长:刘莹莹 组员:周昊 潘世维  王玉潘 赵美增 ...

  6. Java 反射机制介绍

    参考文章:http://www.cnblogs.com/skywang12345/p/3345205.html Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还 ...

  7. secureCRT连不上虚拟机上的ubuntu

    前些日子我的secureCRT一直连不上虚拟机上的ubuntu,虽然两边的IP都能ping通! 都怪我当初连ssh都没装就在那瞎弄,执行以下第二步即可连接上了. 如何使用SecureCRT连接ubun ...

  8. linux磁盘分区格式化-fdisk命令工具

    本文主要讲述使用fdisk工具对磁盘进行分区和格式化的方法 首先要明确分区是针对磁盘进行的操做,磁盘分区会创建分区表,类似vda,sda的是磁盘,vda1,sda1的是分区 1.查看磁盘分区状态 1. ...

  9. python 安装psutil包报错:

    报错: Failed building wheel for psutil Google得知,需要安装python-devel 和 wheel sudo dnf install python-devel ...

  10. Redis学习笔记-常用命令篇(Centos7)

    redis提供了丰富的命令,这些命令可以在linux终端使用.在各类语言中,这些命令都有对应的方法. 一.键值相关 1.keys 返回满足给定pattern的所有key 127.0.0.1:6379& ...