zoukankan      html  css  js  c++  java
  • CentOS 6.2 下编译使用Libvlc

    总的来说把VLC内嵌入自己的应用有4种途径:
    •直接调用VLC进程
    •VLC的plugin for Mozilla
    •VLC的ActiveX插件
    •调用libvlc

    最近需要VLC动态库做开发,故需要编译vlc,并修改VLC 将自己的API借口添加到Lib动态库中。

    下面来编译VLC2.0.1,从官网下载最新VLC。(新版本的VLC需要gcc和glibc的支持,所以使用centOS 6.2或者ubunt10.0版本)

    如果想要加载全部功能,需要安装如下库

    yum install a52dec a52dec-devel caca-utils dirac dirac-devel expat expat-devel faac faac-devel faad2 faad2-devel ffmpeg \
      ffmpeg-libs flac flac-devel fribidi-devel gettext gnutls gnutls-devel gnutls-utils lame lame-devel live555 live555-devel \
      libass libass-devel libcaca libcaca-devel libcddb libcddb-devel libcdio libcdio-devel libdap libdap-devel libdca-devel \
      libdvbpsi libdvbpsi-devel libdvdnav libdvdnav-devel libdvdread libebml libebml-devel freetype freetype-devel fribidi \
      libgcrypt libgcrypt-devel libgpg-error libgpg-error-devel libjpeg-turbo libmad libmad-devel libmatroska libmatroska-devel \
      libmodplug libmodplug-devel libmpcdec-devel libmpeg2-devel libogg-devel liboil-devel libpng libpng-devel libshout \
      libshout-devel libtheora-devel libtiff libupnp libupnp-devel libvorbis-devel libX11 libX11-devel libxcb libxcb-devel \
      libxml2 libxml2-devel mpeg2dec portaudio-devel qt4 qt4-devel schroedinger-devel SDL-devel SDL_image SDL_image-devel speex \
      speex-devel taglib-devel twolame twolame-devel vcdimager vcdimager-devel vcdimager-libs x264 x264-devel yasm zlib \
      lua xcb-util-devel libsamplerate-devel


    那这里有好多是我不想要的,所以在configure时将不需要的屏蔽掉了

    ./configure --disable-nls --disable-dbus --disable-lua --disable-mad --disable-avcodec --disable-swscale --disable-postproc --disable-a52 --disable-xcb --disable-alsa --disable-libgcrypt

    生成makefile后,make;make install;

    可能make 是缺少gcc++ yum之,安装后,记得重新configure。

    增加自定义API接口: 

    需求:增加VLC视频存储功能

    1)在libvlc_media_play.h文件中声明为LIBVLC_API类型的接口函数

    2)并将接口在lib/libvlc.sym 文件中添加,否则make编译时会在连接进动态库时变为静态,不可被外部调用。

    include\vlc\libvlc_media_player.h文件,

    搜索 libvlc_video_take_snapshot(实现截图功能的)这个函数,找到libvlc_video_take_snapshot后,在其后面添加名

      1. int libvlc_video_toggle_record( libvlc_media_player_t *p_mi,  
      2.                                 const char *psz_filepath, const char *psz_filename )  
      3. {  
      4.     input_thread_t *p_input = libvlc_get_input_thread( p_mi );  
      5.     if(p_input == NULL)  
      6.         return -1;    
      7.     var_SetString( p_input, "input-record-path", psz_filepath );      
      8.     var_SetString( p_input, "sout-record-dst-prefix", psz_filename );  
      9.     var_ToggleBool( p_input, "record");  
      10.     vlc_object_release(p_input);  
      11.     return 0;  

    3)编译自己程序时指定连接动态库-lvlc

    安装成功!

  • 相关阅读:
    随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比
    stringstream读入每行数据
    java Log4j封装,程序任何位置调用
    Oracle 归档模式和非归档模式
    为什么需要 RPC 服务?
    JFrame windowbuiler的使用基础
    Eclipse安装windowsbuilder
    字符串反转
    static{}静态代码块与{}普通代码块之间的区别
    jQuery EasyUI 数据网格
  • 原文地址:https://www.cnblogs.com/xiaOt119/p/2538836.html
Copyright © 2011-2022 走看看