zoukankan      html  css  js  c++  java
  • vlc相关命令行设置

    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  

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

  • 相关阅读:
    Python pynput监听键盘
    ProceedingJoinPoint pjp 获取不到方法上
    springcloud- FeginClient 调用统一拦截添加请求头 RequestInterceptor ,被调用服务获取请求头
    多线程-Thread、Runnable 创建线程和调用过程分析
    spring --解析自定义注解SpringAOP(配合@Aspect)
    spring 核心接口之 Ordered
    图标文字
    文字展开和收起
    查找字符串中给定字符串的所有位置
    随机函数与JSON
  • 原文地址:https://www.cnblogs.com/wainiwann/p/3860165.html
Copyright © 2011-2022 走看看