我正在尝试为VLC Mozilla插件的嵌入式播放器传递一些选项,但没有任何反应。
<embed
type="application/x-vlc-plugin"
id="vlc"
width="400" height="300"
></embed>
<script type="text/javascript">
var target = "http://example.com/videostream/";
var options = new Array("--video-filter invert");
vlc = document.getElementById("vlc");
var id = vlc.playlist.add(target,"Not Inverted Here",options);
vlc.playlist.playItem(id);
</script>
我尝试使用命令行VLC使用相同的URL和args,它可以正常工作。
vlc http://example.com/videostream/ --video-filter invert
(无论如何,我正在尝试使用独立VLC播放器的各种命令行选项,例如旋转,棕褐色,灰度,模糊,但我失败了。也许我必须为VLC启用或选择一些东西。)
真正的问题是我想通过将--demux=h264
传递给嵌入式播放器(它与从命令行启动的桌面VLC播放器一起工作)来修复视频流格式错误,但首先我要传递嵌入式播放器的任何选项,只是为了看它是否有效。
我正在使用Ubuntu 15.04,Firefox 40.0和VLC Web插件2.2.0(Weatherwax)。
答案 0 :(得分:2)
要设置添加到播放列表的选项,您应使用以下语法:
var options = new Array(":video-filter=invert");
但是这个选项被认为是不安全的,你会得到以下输出(在前台运行firefox):
[00007f801e0fceb8]核心输入错误:不安全选项“video-filter”有 因安全原因被忽略
要设置此选项,您需要修改libvlc或VLC Web插件中的代码。
我尝试将播放列表的视频过滤器选项作为受信任的选项处理,但没有成功。我认为它需要修改libvlc本身。
我验证的一种方法是在npapi-vlc中将视频过滤器选项设置为受信任。
为此,您可以这样处理:
修改npapi-vlc.git / npapi / vlcplugin_base.cpp处理新选项extra
NPError VlcPluginBase::init(int argc, char* const argn[], char* const argv[])
{
....
/* parse plugin arguments */
for( int i = 0; (i < argc) && (ppsz_argc < MAX_PARAMS); i++ )
{
...
else if( !strcmp( argn[i], "extra" ) )
{
ppsz_argv[ppsz_argc++] = argv[i];
}
...
}
构建并安装修改后的npapi-vlc插件。
修改html以设置此新选项:
<embed type="application/x-vlc-plugin" id="vlc" width="400" height="300"
extra="--video-filter=invert" />
像这样你可以设置命令行的任何选项,删除安全选项检查。
答案 1 :(得分:1)
如果您想强制选择分路器,则比设置过滤器更容易。
在vlc的帮助下:
流MRL语法:
[[access] [/ demux]://] URL [#[title] [:chapter] [ - [title] [:chapter]]] [:option = value ...]
然后你应该能够使用:
设置h264解复用器<script type="text/javascript">
var target = "http/h264://example.com/videostream/";
vlc = document.getElementById("vlc");
var id = vlc.playlist.add(target);
vlc.playlist.playItem(id);
</script>