在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

在(Linux)ubuntu下通過GTK調用libvlc開發視頻播放器

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-06-01 15:42 ? 次閱讀

一、項目介紹

本項目實現了一個基于GTK和libvlc的視頻播放器。使用GTK創建GUI界面,使用libvlc播放視頻。用戶可以通過選擇視頻文件,然后啟動播放器來觀看視頻。

image-20230601113711114

image-20230601113645550

二、VLC介紹

VLC是一款自由、開放源代碼的跨平臺媒體播放器,支持播放幾乎所有常見的音頻和視頻格式。最初于2001年由法國學生開發,現在已經成為了一個非常受歡迎的媒體播放器,在Windows、macOS、Linux等多個操作系統上都可用。

libvlc是VLC media player使用的核心庫之一。提供了一組應用程序接口(API),可以讓開發人員輕松地將類似于VLC的媒體播放功能嵌入到他們自己的應用程序中。libvlc可以與多種編程語言和框架(如C、C++PythonJava、.NET等)集成,因此被廣泛應用于各種媒體相關的項目中。

VLC是一個獨立的媒體播放器軟件,而libvlc是VLC media player使用的核心庫之一,可以方便地嵌入到其他應用程序中,以實現類似于VLC的媒體播放功能。

VLC軟件下載(3.X)https://www.videolan.org/vlc/

libVLC最新4.0官網: https://nightlies.videolan.org/

三、GTK介紹

文檔學習地址:https://www.gtk.org/docs/

官網地址:https://www.gtk.org/

GTK是一種開源的跨平臺圖形用戶界面(GUI)工具包。最初是為GNU計劃設計的,現在被廣泛地用于Linux和其他Unix-like操作系統的各種應用程序中。GTK提供了一組用于創建圖形用戶界面的功能庫,包括窗口、按鈕、標簽、文本輸入框等控件,以及用于渲染這些控件的繪圖引擎。GTK還支持國際化和主題定制,可以讓開發者創建符合用戶期望和風格的應用程序界面。

在 Ubuntu 中安裝最新的 GTK 依賴庫的命令:

sudo apt-get update
 sudo apt-get install libgtk-3-dev

這個命令將會安裝 GTK3 庫的開發文件和依賴庫。如果需要在程序中使用 GTK2 庫,則需要安裝 libgtk2.0-dev 包。除此之外,還可以安裝一些其他的GTK擴展包,如GStreamer、WebKit 等。

如果要編譯一個基于 GTK 的程序,可以使用 gcc 或 g++ 來進行編譯,同時需要鏈接 GTK 庫。假設源代碼文件為 example.c,編譯命令可以如下:

gcc -o example example.c `pkg-config --cflags --libs gtk+-3.0`

其中,pkg-config 是一個用來管理編譯時的依賴庫的工具。--cflags 和 --libs 分別是輸出 GTK 庫的頭文件路徑和鏈接庫路徑,包含了命令行返回的路徑。pkg-config --cflags --libs gtk+-3.0` 就是獲取編譯 GTK 程序時需要的參數

四、設計思路

通過GTK調用libvlc來實現視頻播放器,需要執行以下步驟:

(1)下載和安裝libvlc和相關依賴庫,可以使用apt-get或者源碼編譯的方式安裝。

sudo apt-get update
 sudo apt-get install libvlc-dev libgtk-3-dev

libvlc-dev 是 libvlc 的開發庫,包括頭文件和鏈接庫;libgtk-3-dev 是 GTK 庫的開發庫,也包括頭文件和鏈接庫。通過安裝這兩個開發庫,就可以在 Ubuntu 下進行開發基于 GTK 和 libvlc 的視頻播放器了。

(2)在GTK程序中引入libvlc的頭文件和庫文件,以及GTK的頭文件和庫文件:

#include < gtk/gtk.h >
 #include < vlc/vlc.h >

(3)創建GTK窗口和控件:

GtkWidget *window;
 GtkWidget *video_widget;
 GtkBuilder *builder;

GtkBuilder用于動態加載UI文件,可以通過glade工具創建UI文件,然后在程序中使用GtkBuilder加載UI文件。video_widget是用于顯示視頻的GTK控件。

(4)初始化libvlc,并創建libvlc_media_player對象和libvlc_media對象:

libvlc_instance_t *vlc_instance;
 libvlc_media_t *media;
 libvlc_media_player_t *media_player;
 // ...
 vlc_instance = libvlc_new(0, NULL);
 media = libvlc_media_new_path(vlc_instance, "/path/to/video.mp4");
 media_player = libvlc_media_player_new_from_media(media);
 libvlc_media_player_set_xwindow(media_player, GDK_WINDOW_XID(gtk_widget_get_window(video_widget)));
 libvlc_media_player_play(media_player);
 // ...

第三行代碼使用libvlc_media_new_path()函數創建一個libvlc_media對象,用于表示要播放的視頻文件。第四行代碼使用libvlc_media_player_new_from_media()函數創建一個libvlc_media_player對象,用于播放視頻。第五行代碼使用libvlc_media_player_set_xwindow()函數將video_widget的XID綁定到libvlc_media_player對象中,從而能夠將視頻顯示在video_widget中。第六行代碼使用libvlc_media_player_play()函數開始播放視頻。

(5)在GTK窗口中添加視頻控件,并啟動GTK主循環:

builder = gtk_builder_new_from_file("ui.glade");
 window = GTK_WIDGET(gtk_builder_get_object(builder, "main_window"));
 video_widget = GTK_WIDGET(gtk_builder_get_object(builder, "video_widget"));
 // ...
 gtk_container_add(GTK_CONTAINER(window), video_widget);
 gtk_widget_show_all(window);
 gtk_main();

第一行代碼通過GtkBuilder加載UI文件,并獲取main_window和video_widget對象。第三行代碼將video_widget添加到window中,第四行代碼顯示窗口和控件,最后一行代碼啟動GTK主循環。

五、完整的設計代碼

【1】main.c代碼

#include < gtk/gtk.h >
 #include < vlc/vlc.h >
 ?
 int main(int argc, char *argv[])
 {
     GtkWidget *window;
     GtkWidget *video_widget;
     GtkBuilder *builder;
     libvlc_instance_t *vlc_instance;
     libvlc_media_t *media;
     libvlc_media_player_t *media_player;
 ?
     gtk_init(&argc, &argv);
 ?
     builder = gtk_builder_new_from_file("ui.glade");
     window = GTK_WIDGET(gtk_builder_get_object(builder, "main_window"));
     video_widget = GTK_WIDGET(gtk_builder_get_object(builder, "video_widget"));
 ?
     vlc_instance = libvlc_new(0, NULL);
     media = libvlc_media_new_path(vlc_instance, "/path/to/video.mp4");
     media_player = libvlc_media_player_new_from_media(media);
     libvlc_media_player_set_xwindow(media_player,  GDK_WINDOW_XID(gtk_widget_get_window(video_widget)));
     libvlc_media_player_play(media_player);
 ?
     gtk_container_add(GTK_CONTAINER(window), video_widget);
     gtk_widget_show_all(window);
     gtk_main();
 ?
     libvlc_media_player_stop(media_player);
     libvlc_media_player_release(media_player);
     libvlc_release(vlc_instance);
 ?
     return 0;
 }

【2】ui.glade代碼

使用glade工具創建UI文件:

< ?xml version="1.0" encoding="UTF-8"? >
< !-- Generated with glade 3.22.1 -- >
< interface >
  < requires lib="gtk+" version="3.20"/ >
  < object class="GtkWindow" id="main_window" >
    < property name="can_focus" >False< /property >
    < child >
      < object class="GtkDrawingArea" id="video_widget" >
        < property name="can_focus" >False< /property >
      < /object >
    < /child >
  < /object >
< /interface >

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5095

    文章

    19189

    瀏覽量

    307985
  • Linux
    +關注

    關注

    87

    文章

    11351

    瀏覽量

    210504
  • Ubuntu
    +關注

    關注

    5

    文章

    567

    瀏覽量

    30063
  • GUI
    GUI
    +關注

    關注

    3

    文章

    663

    瀏覽量

    39917
  • 視頻播放器
    +關注

    關注

    0

    文章

    33

    瀏覽量

    11898
收藏 人收藏

    評論

    相關推薦

    蛇年煥新,數字標牌播放器點亮新春營銷

    春節期間,商場成為人們歡聚、購物的熱門場所。商場入口處,大型數字標牌展示著精心制作的新春廣告,高清畫質將喜慶氛圍完美呈現,流暢的切換效果瞬間將顧客帶入熱鬧的春節氣氛中。 借助數字標牌播放器
    的頭像 發表于 01-24 11:26 ?124次閱讀
    蛇年煥新,數字標牌<b class='flag-5'>播放器</b>點亮新春營銷

    畢業設計競賽選題推薦 | 嵌入式Linux應用之音樂播放器項目實戰(含文檔及源碼)

    提升了效率和心情。嵌入式Linux開發的音樂播放器,憑借其高效能與低能耗的特點,便攜設備、智能家電以及車載系統等領域中展現出獨特的優勢。它不僅能夠提供高品質的音樂
    的頭像 發表于 12-23 16:50 ?398次閱讀
    畢業設計競賽選題推薦 | 嵌入式<b class='flag-5'>Linux</b>應用之音樂<b class='flag-5'>播放器</b>項目實戰(含文檔及源碼)

    海貝R1便攜音樂播放器開箱

    作為一個愛聽音樂打發時間的玩家,我已經習慣隨身攜帶一款小巧輕便的音樂播放器,從早期的CD播放器到現在的數碼播放器,它總能在不經意間中給我帶來簡單的快樂。不管是逛街等人的時候,還是工作壓力大的時候
    的頭像 發表于 12-09 09:40 ?296次閱讀
    海貝R1便攜音樂<b class='flag-5'>播放器</b>開箱

    深妙科技 室內外LED電源、LED屏多媒體播放器和二合一視頻處理器維修方法

    ?關于室內外LED電源、LED屏多媒體播放器和二合一視頻處理器的維修,您可以考慮以下幾個方面: 1. 常見問題排查 LED電源 檢查電源是否正常供電,使用萬用表測量輸出電壓是否穩定 檢查接線是否松動
    的頭像 發表于 12-05 11:33 ?325次閱讀
    深妙科技 室內外LED電源、LED屏多媒體<b class='flag-5'>播放器</b>和二合一<b class='flag-5'>視頻處理器</b>維修方法

    變速播放器1和2的區別

    的區別。 變速播放器通常允許用戶調整播放速度,以適應不同的觀看或學習需求。這類播放器可能具備以下功能: 變速播放 :用戶可以根據需要加快或減慢播放
    的頭像 發表于 10-14 09:48 ?278次閱讀

    步步高AB915D DVD播放器維修圖紙

    步步高AB915D DVD播放器采用ZIVA-4.1芯片方案
    發表于 09-29 10:18 ?0次下載

    為什么好的播放器還要配解碼

    好的播放器之所以需要配備解碼,是因為音頻和視頻文件的編碼和解碼是一個復雜的過程,涉及到多種技術和標準。解碼的作用是將壓縮的音頻和視頻數據
    的頭像 發表于 09-23 18:02 ?1773次閱讀

    數字播放器和解碼

    數字播放器和解碼的組合能夠提供更優質的音頻體驗。數字播放器負責處理和傳輸音頻數據,而解碼則負責將這些數據轉換為高質量的模擬信號。它們的配合可以確保你聽到的音頻既清晰又真實。
    的頭像 發表于 09-06 17:35 ?1380次閱讀
    數字<b class='flag-5'>播放器</b>和解碼<b class='flag-5'>器</b>

    HarmonyOS開發案例:【視頻播放器

    使用ArkTS語言實現視頻播放器,主要包括主頁面和視頻播放頁面
    的頭像 發表于 04-24 14:52 ?997次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【<b class='flag-5'>視頻</b><b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【視頻播放器

    使用ArkTS語言實現視頻播放器,主要包括主界面和視頻播放界面,
    的頭像 發表于 04-23 17:25 ?793次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【<b class='flag-5'>視頻</b><b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【音樂播放器

    使用ArkTS語言實現了一個簡易的音樂播放器應用
    的頭像 發表于 04-23 15:44 ?1179次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【音樂<b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【視頻播放器

    基于video、swiper和slider組件,實現簡單的視頻播放器,可支持海報輪播、視頻播放等功能。
    的頭像 發表于 04-22 21:06 ?575次閱讀
    HarmonyOS<b class='flag-5'>開發</b>案例:【<b class='flag-5'>視頻</b><b class='flag-5'>播放器</b>】

    【米爾-芯馳D9360商顯板試用評測】使用ffmpeg實現遠程視頻監控

    rtmp方式推送到easydarwin服務。 執行命令后顯示: 4、打開vlc播放器,輸入地址:rtmp://192.168.3.180:10035/live 點連接后就可以實現觀看了: 【總結
    發表于 04-11 13:07

    為什么cycx3_uvcdcsr.c生成的代碼(GUID),視頻播放器解析出來是UYVY?

    我這里設置視頻輸入格式為RAW10 為什么cycx3_uvcdcsr.c生成的代碼(GUID),視頻播放器解析出來是UYVY
    發表于 02-29 06:07

    鴻蒙開發-視頻播放器方案

    HarmonyOS系統中,提供兩種視頻播放開發的方案: [AVPlayer]:功能較完善的音視頻播放ArkTS/JS API,集成了流媒體
    發表于 02-19 17:20
    主站蜘蛛池模板: 亚洲欧美一区二区三区图片 | 神马午夜在线观看 | 国产三级在线免费观看 | 久久久久久人精品免费费看 | 在线免费公开视频 | 久久国产精品99久久久久久老狼 | 四虎成人影院网址 | 天堂网www最新版在线资源 | 日日夜夜狠狠干 | 欧美成人性色 | 国产精品视频第一区二区三区 | 爽爽爽爽爽爽a成人免费视频 | 日本午夜三级 | 深夜在线观看大尺度 | 免费日韩三级 | 中文天堂在线观看 | 亚洲精品综合网在线8050影院 | 亚洲性影院 | 欧美成人伊人十综合色 | 一级毛片视频在线 | 免费网站看av片 | 狠狠五月婷婷 | 91久久另类重口变态 | 国产精品乱码高清在线观看 | 美国三级网 | 日韩免费观看的一级毛片 | 欧美天堂在线视频 | 色老头久久久久 | 4438x成人全国 | 成年免费大片黄在线观看免费 | 国产热| 国产美女一区二区三区 | 视色4setv.com| 日本成片视频 | 亚洲国产网址 | 亚洲视频在线一区二区三区 | 六月丁香啪啪六月激情 | 精品国产免费人成高清 | 色就操 | 四虎在线电影 | 美女张开大腿让男人捅 |