我正在尝试为VLC构建“树外”插件。
电脑规格: Intel x64 Ubuntu 12.04
VLC规格: VLC媒体播放器2.0.8
为了解决这个问题
有效!转到“工具”->“首选项”->“视频”->“输出”时,我可以在VLC中看到我的模块。
我想做“树外”的事情,在这里我独立于VLC树构建模块,然后将生成的共享库复制到VLC可以读取并由VLC检测到的地方。
我按照此处的说明进行操作:VLC树外编译
SConstruct
根据上面的说明以及http://wiki.videolan.org/Documentation:VLC_Modules_Loading/上的说明编写了文件以进行构建这是该模块的简化版本:
#define DOMAIN "vlc-nysa"
#define _(str) dgettext(DOMAIN, str)
#define N_(str) (str)
#define MODULE_STRING "nysa-video"
vlc_module_begin()
/* VLC Uses these to identify the module */
set_text_domain (DOMAIN)
set_description (N_("Nysa Video Output" ))
set_shortname (N_("Nysa Video" ))
set_category (CAT_VIDEO )
set_subcategory (SUBCAT_VIDEO_VOUT )
set_capability ("vout display", 1 )
/* Options left out for brevity */
/* Add Callbacks */
set_callbacks (Open, Close )
vlc_module_end()
/* implementation here */
输出
因此,人们不必弄清楚scons语法,这里是构建输出:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o src/nysa_video.os -c -std=gnu99 -Wall -Wextra -O2 -fPIC -fPIC -D__PLUGIN__ -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE -DPIC -I/usr/include/vlc -I/usr/include/vlc/plugins -Iinclude src/nysa_video.c
gcc -o build/libnysa_video_plugin.so -Wl,-no-undefined,-z,defs -shared src/nysa_video.os -L/usr/lib -L/usr/local/lib -lvlc -lvlccore
scons: `install' is up to date.
scons: done building targets.
结果
我确实得到了一个名为的文件libnysa_video_plugin.so
,该文件已复制到/usr/lib/vlc/plugins/video_output
目录中
当我运行VLC时,出现段错误:
VLC媒体播放器2.0.8 Twoflower(修订版2.0.8a-0-g68cf50b)分段错误(核心已转储)
dmesg | tail
打印出:
[141376.468964] vlc [27609]:libvlccore.so.5.1.1中的88 ip 00007f06ccd6a4db sp 00007fff029a6310错误6出现段错误[7f06ccce4000 + db000]
这是该项目的git仓库的链接:Nysa Video Git仓库
要构建,需要scons并在基本目录中:
scons
/usr/lib/vlc/plugins/video_output
):sudo scons install
我发现我的代码中有一个错误
vlc_module_begin()
/* VLC Uses these to identify the module */
set_text_domain (DOMAIN) //THIS SHOULDN'T BE HERE
set_description (N_("Nysa Video Output" ))
当这只是一个bug时,我对于发布这个问题感到很不好,所以我创建了一个git repo,希望可以帮助希望为VLC构建树外插件的人。
自述文件中有说明
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句