[{"data":1,"prerenderedAt":71},["ShallowReactive",2],{"page-libvlc-1":3,"page-count-libvlc":70},[4],{"id":5,"title":6,"body":7,"date":47,"description":13,"extension":48,"meta":49,"navigation":52,"path":64,"seo":65,"stem":66,"tags":67,"__hash__":69},"blogs\u002F_legacy\u002F2013\u002F2013-02-15-libvlc%e4%bd%bf%e7%94%a8%e4%b8%ad%e7%9a%84%e4%b8%80%e4%ba%9b%e5%b0%8f%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9.md","Libvlc使用中的一些小注意事项",{"type":8,"value":9,"toc":42},"minimark",[10,14,17,20,23,26,29,39],[11,12,13],"p",{},"近日在寻找一个跨平台的视频播放解决方案，最后在libvlc和ffmpeg之间犹豫了许久之后选择了libvlc。",[11,15,16],{},"虽然二者功能上差不多，但是感觉上libvlc对开发者更友好一点。大概是因为ffmpeg遭遇了不遵守开源协议的某些行为之后的愤慨之类的？不过wiki上的内容全都标注着out of date实在是让没接触过这个库的我有点不放心呢。",[11,18,19],{},"libvlc的使用非常简单，到官网下载vlc播放器。里面就会有sdk目录，虽然也能下源码，但是源码是没有办法在vs下编译的。无奈电脑上的ide只有vs，也不想再折腾去搞个mingw了，于是就直接使用编译好的lib和dll来使用。",[11,21,22],{},"libvlc提供的调用接口也很简洁，libvlc_video_set_callbacks直接处理回调就好了。ffmpeg似乎也有类似的功能，但是似乎要自己处理pts之类的东西，不过那是一篇标记为out of date的文章，具体情况就不得而知了。总之整个过程遇到了两个问题：",[11,24,25],{},"首先就是按照通常的过程把dll和lib以及include放好之后，在运行时却出现了内存访问错误。到网上搜索了之后得到解决方案是将plugins目录拷贝到libvlc的同级目录就好。虽然有60多m，但是其实只要根据自己的需求把多余的都去掉就可以了。毕竟又不是要做视频播放器……",[11,27,28],{},"之后在release模式下却出现了意想不到的问题，程序直接报错：无法定位程序输入点 __glewVertexAttribPointer 于动态链接库 libvlc.dll 上。这个错误多少有些让人莫名其妙，因为libvlc怎么会提供glew这类的入口点呢？但是程序在debug模式下运行一切正常，究竟是怎么回事呢？到网上搜索后未果，因为错误实在是有点奇葩。让我怀疑我的vs是不是哪里出问题了，差点想要重做系统……",[11,30,31,32],{},"最后想起来官方有一篇这样的文章",[33,34,38],"a",{"href":35,"rel":36},"http:\u002F\u002Fwiki.videolan.org\u002FGenerateLibFromDll%E4%B8%BB%E8%A6%81%E4%BB%8B%E7%BB%8D%E5%A6%82%E4%BD%95%E7%94%9F%E6%88%90vs%E7%94%A8%E7%9A%84lib%EF%BC%8C%E5%BD%93%E6%97%B6%E7%9C%8B%E5%88%B0sdk%E7%9B%AE%E5%BD%95%E5%B7%B2%E7%BB%8F%E6%9C%89lib%E4%BA%86%E5%B0%B1%E6%B2%A1%E5%8E%BB%E5%AE%9E%E8%A1%8C%E3%80%82%E4%BD%86%E6%98%AF%E4%BA%8B%E5%AE%9E%E8%AF%81%E6%98%8E%E6%88%91%E9%94%99%E4%BA%86%EF%BC%8C%E6%8A%B1%E7%9D%80%E8%AF%95%E4%B8%80%E8%AF%95%E7%9A%84%E6%83%B3%E6%B3%95%E7%85%A7%E7%9D%80%E5%AE%98%E6%96%B9%E7%9A%84%E6%96%B9%E6%B3%95%E5%81%9A%E4%BA%86%E4%B8%80%E9%81%8D%EF%BC%8C%E7%84%B6%E5%90%8E%E6%8A%8A%E7%94%9F%E6%88%90%E7%9A%84lib%E6%8B%B7%E8%B4%9D%E5%88%B0%E9%A1%B9%E7%9B%AE%E9%87%8C%E3%80%82release%E6%A8%A1%E5%BC%8F%E4%B8%8B%E6%89%A7%E8%A1%8C%EF%BC%8C%E5%B1%85%E7%84%B6%E4%B8%8D%E6%8A%A5%E9%94%99%E4%BA%86%E2%80%A6%E2%80%A6",[37],"nofollow","http:\u002F\u002Fwiki.videolan.org\u002FGenerateLibFromDll主要介绍如何生成vs用的lib，当时看到sdk目录已经有lib了就没去实行。但是事实证明我错了，抱着试一试的想法照着官方的方法做了一遍，然后把生成的lib拷贝到项目里。release模式下执行，居然不报错了……",[11,40,41],{},"总结一下就是这样的两个问题，首先，vlc是靠插件运行的，必须抱着libvlc.dll的同级目录下有需要的plugins。其次如果遇到了奇怪的问题，按照官方的说明自己生成一下lib比较好。",{"title":43,"searchDepth":44,"depth":45,"links":46},"",2,3,[],"2013-02-15","md",{"layout":50,"status":51,"published":52,"author":53,"author_login":54,"author_email":55,"author_url":56,"wordpress_id":57,"wordpress_url":58,"date_gmt":59,"excerpt":60},"post","publish",true,{"display_name":54,"login":54,"email":55,"url":56},"chaoshikari","chaoshikari@gmail.com","\u002F",560,"\u002F\u002F?p=560","2013-02-15 07:49:20 +0000",{"type":8,"value":61},[62],[11,63,13],{},"\u002F2013-02-15-libvlc使用中的一些小注意事项",{"title":6,"description":13},"_legacy\u002F2013\u002F2013-02-15-libvlc%e4%bd%bf%e7%94%a8%e4%b8%ad%e7%9a%84%e4%b8%80%e4%ba%9b%e5%b0%8f%e6%b3%a8%e6%84%8f%e4%ba%8b%e9%a1%b9",[68],"libvlc","70Bi2S0_CuvRz7BBqRAGyQwkb20pbwoxyJoVnhUyZsI",1,1788763183072]