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. 10046event vs 10053event做了哪些操作

    10046 event 告诉我们oracle做了哪些事情,做的怎么样.10053 event 告诉我们oracle优化器怎么想的,再给出成本最低的最终的优化方案,考虑了哪些执行计划拿了哪些统计信息

  2. 操作ACCESS数据库,报INSERT INTO 语句的语法错误

    错误类型:Microsoft JET Database Engine (0x80040E14)INSERT INTO 语句的语法错误. 有时候非常郁闷,明明看起来自己的语句没错,为什么还是报错呢?其实 ...

  3. Assert 类

    Assert 类 使用 true/false 命题验证单元测试中的条件. 继承层次结构     System.Object   Microsoft.VisualStudio.TestTools.Uni ...

  4. hdu 6154 CaoHaha's staff

    CaoHaha's staff Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. I.MX6 7" navigation bar as black bar

    /********************************************************************************* * I.MX6 7" n ...

  6. Python windows ping

    # -*- coding: utf-8 -*- import os # 参考文档: # Ping to a specific IP address using python [duplicate] # ...

  7. 关于cookie和session的使用和理解

    由于项目需要,最近用session容器比较多,传载的同时加上了自己的一些理解,不足之处还请大家补充和纠正. 一.cookie机制和session机制的区别 ********************** ...

  8. 利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏

    [先上一张效果图]: 一.原理: 其实原理很简单: 1.手机投屏到电脑: 2.截取投屏画面的题目部分,进行识别,得到题目和三个答案: 3.将答案按照一定的算法,进行搜索,得出推荐答案: 4.添加了一些 ...

  9. 差分进化算法-python实现

    DEIndividual.py import numpy as np import ObjFunction class DEIndividual: ''' individual of differen ...

  10. [转]JAVA 反射及使用

    <%@page contentType="text/html; charset=GBK"%> <%@page import="java.security ...