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  

好,就這些了,希望對你有幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM