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. CentOS 6.5安装和配置ngix

    一.安装配置ngix 这里用wget直接拉取并安装资源文件 首先安装必要的库(nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库). ...

  2. OC 数据持久化(数据本地化)- 本地存储

    // // ViewController.m // IOS_0113_本地存储 // // Created by ma c on 16/1/13. // Copyright (c) 2016年 博文科 ...

  3. 解决MySQL workbench的Can't connect to MySQL server on '127.0.0.1'(10061)问题

    如题,今天打开MySQL时,出现了这种问题,无法连接到数据库 问题原因:The error (2003) Can't connect to MySQL server on 'server' (1006 ...

  4. 流程设计器jQuery + svg/vml(Demo5 - 撤消与重做)

    上篇完成了画线,接下来是撤消与重做. 代码:GoFlow_05.zip 演示地址:Demo 微信演示公众号: 另:Silverlight版 Silverlight版Demo

  5. Windows 10 安装 Docker

    下载Docker For Windows 地址:https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.ex ...

  6. memcache+tomcat7.0.37+nginx实现session共享

    一.session工作原理 由于http是无状态的协议,当我们访问了页面A,然后访问页面B,http无法确定这2个页面的访问是来自同一个人.因此,我们要用cookie或session来跟踪用户,根据授 ...

  7. CF1082D:Maximum Diameter Graph (简单构造)

    Graph constructive problems are back! This time the graph you are asked to build should match the fo ...

  8. java面试题11

    第九次面试题 1. GC是什么?为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩 ...

  9. java阳历转农历

    package com.reading.task; import java.text.ParseException;import java.text.SimpleDateFormat;import j ...

  10. 洛谷2473(SCOI2008)奖励关

    题目:https://www.luogu.org/problemnew/show/P2473 因为可不可选此物与之前选过什么物品有关,所以状态可以记录成前面已经选过什么物品. 因为选不选此物与它带来的 ...