在一个进程中使用和不使用代理运行VLC

时间:2014-03-26 12:53:23

标签: c++ qt vlc libvlc

我有Qt 5.2.1项目,可通过互联网和局域网查看少数IP摄像机。其中一些需要代理,其中一些不需要代理。我使用libVLC 2.1.4播放视频。

所以,问题是: 当我想通过代理服务器观看摄像头时,我启动我的程序,检查QCheckButton"使用代理" (然后设置代理)并按"开始",然后使用

创建VLC实例
vlcArgs << QString("--http-proxy=http://%1:%2/").arg(host).arg(port);
...
vlcInstance_ = libvlc_new(argsCounter, vlc_args); // vlc_args is vlcArgs with char* type

但是,如果我打开相机而不是通过代理查看相机,则相机无法显示任何内容,因为VLC通过代理传递所有网络流量。

我无法创建两个VLC实例,因为我使用单例类(出于某些原因)。

我开始这样玩:

// libvlc_media_player_t *vlcPlayer_;
libvlc_media_t* media = libvlc_media_new_location( vlc()->instance(), videoUrl.toEncoded() );
libvlc_media_player_set_media(vlcPlayer_, media);
libvlc_media_player_play(vlcPlayer_);

有没有办法将代理设置直接传递给vlc媒体或vlc媒体播放器?我已经听说过libvlc_media_add_option,但不确定它是否适用于代理设置。

抱歉我的英文。

1 个答案:

答案 0 :(得分:4)

您可以将网络代理设置以及其他选项传递给任何libvlc_media_t。这里唯一需要注意的是你应该使用冒号而不是双击作为分隔符:

libvlc_media_t* media = libvlc_media_new_location( vlc()->instance(), video_url);
libvlc_media_add_option(media, ":http-proxy=http://proxy-host:proxy-port/");