无法从 JS 传递 VLC Mozilla 插件的选项
Can't pass options for VLC Mozilla plugin from JS
我正在尝试为 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 启用或 select 某些东西。 )
真正的问题是我想通过将 --demux=h264
传递给嵌入式播放器来修复视频流格式错误(它适用于从命令行启动的桌面 VLC 播放器),但首先我想传递 嵌入播放器的任何选项,看看它是否有效。
我正在使用 Ubuntu 15.04、Firefox 40.0 和 VLC Web 插件 2.2.0 (Weatherwax)。
为了设置添加到播放列表的选项,您应该使用如下语法:
var options = new Array(":video-filter=invert");
但是这个选项被认为是不安全的,你将得到以下输出(运行 firefox 在前台):
[00007f801e0fceb8] core input error: unsafe option "video-filter" has
been ignored for security reasons
为了设置此选项,您需要修改 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" />
像这样你可以设置,我猜,命令行的任何选项,删除安全选项检查。
如果您想强制选择多路分离器,这比设置过滤器更容易。
来自vlc的帮助:
Stream MRL syntax:
[[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>
我正在尝试为 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 启用或 select 某些东西。 )
真正的问题是我想通过将 --demux=h264
传递给嵌入式播放器来修复视频流格式错误(它适用于从命令行启动的桌面 VLC 播放器),但首先我想传递 嵌入播放器的任何选项,看看它是否有效。
我正在使用 Ubuntu 15.04、Firefox 40.0 和 VLC Web 插件 2.2.0 (Weatherwax)。
为了设置添加到播放列表的选项,您应该使用如下语法:
var options = new Array(":video-filter=invert");
但是这个选项被认为是不安全的,你将得到以下输出(运行 firefox 在前台):
[00007f801e0fceb8] core input error: unsafe option "video-filter" has been ignored for security reasons
为了设置此选项,您需要修改 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" />
像这样你可以设置,我猜,命令行的任何选项,删除安全选项检查。
如果您想强制选择多路分离器,这比设置过滤器更容易。
来自vlc的帮助:
Stream MRL syntax:
[[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>