zoukankan      html  css  js  c++  java
  • VLC和Qt结合编写流媒体rtsp播放器

     
          VLC播放器是一款功能强大且小巧的播放器,它支持多种多样的音视频格式,比如MPEG1,2以及mp3等等。并且通过Qt和VLC的结合能让每个开发者写出自己的视频流媒体播放器。
        Qt与VLC结合编写流媒体播放器主要有两种办法:
          一. 通过VLC-Qt库
        VLC-Qt库是基于libVlc的,后者是VLC 媒体的接口,开发者通过其可以开发出基于VLCMedia的应用。所以VLC-QT具备所以LIBVLC的功能。VLC-Qt库的下载地址是:https://vlc-qt.tano.si/,我选择的是Windows 64bit,当然要选择适合自己电脑的版本。下载安装之后,记住自己的安装目录,之后有用。


         安装好之后,在自己的Qt中项目.pro文件中要添加配置文件。具体来说,如果你的库安装目录为E:vlc-qt,那么就应该在.pro中加入
         LIBS +=E:/vlc-qt/lib -VLCQtCore -VLCQtWidgets
         INCLUDPATH +=E:/vlc-qt/include (注意是斜杠不是反斜杠)这样才能把下载的库添加进去。
         之后,在ntadej大牛的GitHub上面,他已经给出了样例程序(事实上上面那个库也是他做的)。样例程序比较复杂,但是其关键代码还是比较易懂的。代码地址:https://github.com/vlc-qt/examples。在simple player.cpp中,关键代码如下:
     
    1. _instance = new VlcInstance(VlcCommon::args(), this);  //创建VLC媒体示例
    2. _player = new VlcMediaPlayer(_instance);  //创建播放器
    3. _player->setVideoWidget(ui->video);  //把播放器关联ui中的video控件上面,这样就能在video控件上面播放流媒体
    4. _equalizerDialog->setMediaPlayer(_player);  //之后都是关联配置,比如声音等等
    5.   
    6. ui->video->setMediaPlayer(_player);  
    7. ui->volume->setMediaPlayer(_player);  
    8. ui->volume->setVolume(50);  
    9. ui->seek->setMediaPlayer(_player);  
           
       这个和之后直接用libvlc还是很相似的。运行它的样例程序,点击open url 按钮就能播放流媒体了。当然他不只做了播放流媒体,还有播放本地媒体文件,两者大同小异,只是在new VLCMedia函数中,输入的参数一个是rtsp流地址,另一个是本地文件地址而已。
    1. _media = new VlcMedia(file,true,_instance);  //创建播放本地文件的媒体
    2. _media = new VlcMedia(url,_instance);  //而这个是创建播放url的 
    二. 直接调用libvlc      
       libvlc就是为VLC Media提供的函数接口,通过这个库可以方便地创建VLC媒体播放器。
         首先下载LibVLC的SDK库。http://www.videolan.org/这是官网地址。下载好之后仍然把他放在E:sdk中。然后在项目的.pro文件添加配置。
           LIBS += E:sdkliblibvlc.lib 
           LIBS += E:sdkliblibvlccore.lib
           INCLUDEPATH += E:sdkinclude
            此外还需要添加动态运行库.dll文件。需要把你的libvlc.dll  libvlccore.dll 以及include/vlc/plugins这个文件夹放在可执行目录下面,也就是编译之后产生的build文件夹下面的debug文件夹里面,把它和testvideo.exe(我的程序名,需要看你们自己的名字而定)放在一起就行,这样就添加好动态运行库了。
           至于里面的程序,主要部分可以与上面的程序对比来看:
     
    1. libvlc_m = libvlc_media_new_path (libvlc_inst, char_url);//创建一个可以播放的媒体  
    2. libvlc_mp = libvlc_media_player_new_from_media (libvlc_m);//创建一个代表libvlc的示例  
    3.    
    4. libvlc_media_release (libvlc_m);//释放这个可以播放的媒体  
    5. libvlc_media_player_set_hwnd (libvlc_mp,screen_hwnd);//把libVLC的弹出窗口嵌入程序中   
    6. int x=libvlc_media_player_play (libvlc_mp);//播放视频 
              
       会发现两者还是很相近的。
               说到这里, 必须要提的是雷霄骅大神,给了我很大帮助。他自己在博客上面写了很多关于视频流媒体的内容和样例,我的libvlc部分也参考了它的博客。
              雷霄骅博客地址:http://blog.csdn.net/leixiaohua1020/article/details/42363079(最简单示例)
                                           http://blog.csdn.net/leixiaohua1020/article/details/42363593(最简单的播放器GUI)
  • 相关阅读:
    【腾讯敏捷转型NO.1】敏捷是什么鬼?
    【敏捷实用工具】JIRA介绍以及使用方法
    SpringCloud学习总结(三)——案例环境搭建
    SpringCloud学习总结(二)——SpringCloud微服务概述
    SpringCloud学习总结(一)——微服务基础知识
    IDEA jrebel 破解
    IDEA的几个常用配置,日常开发必备。
    java中实体类的区别
    zookeeper 学习总结(四)——基本使用
    zookeeper 学习总结(三)——linux上部署单机以及集群
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/9829030.html
Copyright © 2011-2022 走看看