<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          最簡單的 libVLC 播放器

          共 2120字,需瀏覽 5分鐘

           ·

          2020-08-21 08:59

          libVLC 非常的強大,利用它可以很容易地實現(xiàn) VLC Media Player 中的任何功能,比如:快速播放媒體、從中提取元數(shù)據,甚至是提取單個視頻幀 ......


          由于 libVLC 是跨平臺的,因此在編寫程序時,應盡可能的兼容多個系統(tǒng)。除此之外,我們后續(xù)還會添加一些 GUI 交互。所以從本節(jié)開始,會逐漸引入 Qt(當然了,你也可以選擇自己擅長的其他 GUI 框架)。


          為了介紹 libVLC 的用法,我們從最簡單的播放器開始著手,來播放一個本地媒體或者網絡串流,同時也能了解它的主要工作流程。



          1

          基本配置


          配置 libVLC 比較簡單,只需要引入相關庫和頭文件的路徑就行了。但是在后續(xù)的示例中,這部分配置會被頻繁的使用,所以為了方便起見,可以將其定義到一個獨立的 pri 文件中(例如:libVLC.pri):


          #?vlc?相關配置
          win32?{
          ????INCLUDEPATH?+=?$$PWD/../vlc-3.0.8/sdk/include
          ????LIBS?+=?-L$$PWD/../vlc-3.0.8/sdk/lib?-llibvlc?-llibvlccore
          }?else?{
          ????INCLUDEPATH?+=?/usr/local/include
          ????LIBS?+=?-L/usr/local/lib?-lvlc?-lvlccore
          }


          然后在使用時,只需要在 pro 文件中包含這個 pri 就可以了:


          include($$PWD/../libVLC.pri)



          2

          工作流程


          在使用 VLC API 之前,需要先將 vlc/vlc.h 頭文件包含進來:


          #include?
          #include?

          using?namespace?std;

          int?main()
          {
          ????//?vlc?播放相關代碼

          ????return?0;
          }


          對于使用 libVLC 的程序來說,必須先通過 libvlc_new() 函數(shù)初始化一個 VLC 實例。


          當然了,還需要創(chuàng)建一個媒體以及播放器,媒體分為兩類:


          • 本地媒體:libvlc_media_new_path() 創(chuàng)建,參數(shù)為本地媒體路徑。

          • 網絡媒體:由?libvlc_media_new_location() 創(chuàng)建,網絡流可以是 HTTP、RTSP 等。


          const?char?*?localMrl?=?"F:\\Videos\\Sample.mkv";
          const?char?*?rtspMrl?=?"http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8";

          libvlc_instance_t?*instance;
          libvlc_media_player_t?*player;
          libvlc_media_t?*media;

          //?創(chuàng)建并初始化?libvlc?實例
          instance?=?libvlc_new(0,?nullptr);

          //?創(chuàng)建一個媒體
          media?=?libvlc_media_new_path(instance,?localMrl);
          //?media?=?libvlc_media_new_location(instance,?rtspMrl);

          //?創(chuàng)建一個媒體播放器
          player?=?libvlc_media_player_new_from_media(media);


          一旦準備就緒,就可以開始播放了:


          libvlc_media_player_play(player);


          但是這里有個問題,播放是異步的,因此要想辦法等一會兒,否則程序很快就會退出:


          waitPlaying(player);


          注意:這里是等待播放結束(完整播放),你也可以使用 sleep() 等待若干秒。


          最后,在程序結束之前,建議釋放下 libVLC 的相關資源:


          //?釋放?media
          libvlc_media_release(media);

          //?釋放?media?player
          libvlc_media_player_release(player);

          //?釋放?libvlc?實例
          libvlc_release(instance);


          切記,這是一個很好的習慣!


          等待的具體實現(xiàn)如下,只要不出錯、不結束,就一直等著吧:


          void?waitPlaying(libvlc_media_player_t?*mp)
          {
          ????libvlc_state_t?state;
          ????do?{
          ????????state?=?libvlc_media_player_get_state(mp);
          ????}?while?(state?!=?libvlc_Error?&&?state?!=?libvlc_Ended);
          }



          3

          測試程序


          運行程序,來看看效果吧:



          看什么看,沒想到你是這樣的大熊兔 O(∩_∩)O哈哈~!


          ·END·
          ?

          作者:一去、二三里
          愛學習,愛編程,愛生活。
          歡迎來撩,一起暢談程序人生!

          點個在看,么么噠!

          瀏覽 172
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产女人操逼视屏免费播 | 成人淫色| 久久久久麻豆V国产 | 亚洲二页 | 婷婷五月导航 |