18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在(Linux)ubuntu下通過GTK調(diào)用libvlc開發(fā)視頻播放器

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-06-01 15:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、項(xiàng)目介紹

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

image-20230601113711114

image-20230601113645550

二、VLC介紹

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

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

VLC是一個獨(dú)立的媒體播放器軟件,而libvlc是VLC media player使用的核心庫之一,可以方便地嵌入到其他應(yīng)用程序中,以實(shí)現(xiàn)類似于VLC的媒體播放功能。

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

libVLC最新4.0官網(wǎng): https://nightlies.videolan.org/

三、GTK介紹

文檔學(xué)習(xí)地址:https://www.gtk.org/docs/

官網(wǎng)地址:https://www.gtk.org/

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

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

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

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

如果要編譯一個基于 GTK 的程序,可以使用 gcc 或 g++ 來進(jìn)行編譯,同時需要鏈接 GTK 庫。假設(shè)源代碼文件為 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 程序時需要的參數(shù)。

四、設(shè)計思路

通過GTK調(diào)用libvlc來實(shí)現(xiàn)視頻播放器,需要執(zhí)行以下步驟:

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

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

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

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

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

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

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

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

(4)初始化libvlc,并創(chuàng)建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()函數(shù)創(chuàng)建一個libvlc_media對象,用于表示要播放的視頻文件。第四行代碼使用libvlc_media_player_new_from_media()函數(shù)創(chuàng)建一個libvlc_media_player對象,用于播放視頻。第五行代碼使用libvlc_media_player_set_xwindow()函數(shù)將video_widget的XID綁定到libvlc_media_player對象中,從而能夠?qū)⒁曨l顯示在video_widget中。第六行代碼使用libvlc_media_player_play()函數(shù)開始播放視頻。

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

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主循環(huán)。

五、完整的設(shè)計代碼

【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工具創(chuàng)建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 >

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5177

    文章

    19996

    瀏覽量

    325128
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11579

    瀏覽量

    217027
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    601

    瀏覽量

    32578
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    689

    瀏覽量

    42499
  • 視頻播放器
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    12144
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    視頻開發(fā)全棧解析

    Media Kit 讓開發(fā)者可以調(diào)用系統(tǒng)的音視頻能力,涵蓋播放、錄制、錄屏、元數(shù)據(jù)提取與轉(zhuǎn)碼六大核心功能模塊,支撐系統(tǒng)應(yīng)用與第三方應(yīng)用在視頻
    的頭像 發(fā)表于 09-18 14:42 ?361次閱讀
    音<b class='flag-5'>視頻</b><b class='flag-5'>開發(fā)</b>全棧解析

    如何調(diào)用mpp硬解+ffmpeg本地播放視頻,RK3576

    我往rk3576上部署了一個ubuntu系統(tǒng),想測試rkmpp+ffmpeg或者rkmpp+gstreamer硬解,實(shí)現(xiàn)本地播放視頻,有什么思路或者案例可以供我參考嗎? 目前遇到了很多問題: 無法使用rkmpp解碼,如果直接本地
    發(fā)表于 08-23 10:05

    雷卯針對香橙派Orange Pi 4 LTS開發(fā)板防雷防靜電方案

    ? 一、 應(yīng)用場景 小型 Linux 桌面計算機(jī)、Linux 網(wǎng)絡(luò)服務(wù)、游戲機(jī)、高清視頻播放器 二、核心功能參數(shù) 三、擴(kuò)展接口詳情 雷卯專
    的頭像 發(fā)表于 08-22 14:24 ?426次閱讀
    雷卯針對香橙派Orange Pi 4 LTS<b class='flag-5'>開發(fā)</b>板防雷防靜電方案

    創(chuàng)通聯(lián)達(dá)助力飛傲M27革新便攜HiFi播放器體驗(yàn)

    2025年8月15日,飛傲第19屆深圳國際音頻展(SIAS)正式發(fā)布年度旗艦播放器FIIO M27。作為基于創(chuàng)通聯(lián)達(dá)TurboX C6490 SOM打造的標(biāo)桿產(chǎn)品,M27憑借該模塊的卓越性能與飛傲自研聲學(xué)技術(shù)形成協(xié)同突破,為用戶帶來全方位、全場景的優(yōu)秀音頻體驗(yàn),全面革新
    的頭像 發(fā)表于 08-19 16:15 ?1181次閱讀

    基于開源鴻蒙的視頻播放開發(fā)樣例

    開源鴻蒙生態(tài)建設(shè)中,多媒體能力是構(gòu)建豐富用戶體驗(yàn)的核心要素。本開發(fā)樣例針對視頻播放場景,聚焦開源鴻蒙原生媒體框架,通過Video組件實(shí)現(xiàn)
    的頭像 發(fā)表于 08-19 10:41 ?1156次閱讀
    基于開源鴻蒙的<b class='flag-5'>視頻</b><b class='flag-5'>播放開發(fā)</b>樣例

    【EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】使用Linux posix文件讀取接口和LVGL的animimg(圖像動畫)控件實(shí)現(xiàn)動畫播放以及

    【EASY EAI Orin Nano開發(fā)板試用體驗(yàn)】使用Linux posix文件讀取接口和LVGL的animimg(圖像動畫)控件實(shí)現(xiàn)動畫播放以及使用LVGL定時實(shí)現(xiàn)攝像頭圖像顯
    發(fā)表于 07-22 00:34

    Made with KiCad(135):Echo - 開源的音樂播放器

    “? Echo 是一個開源硬件平臺,專為音樂播放器設(shè)計。該項(xiàng)目的目標(biāo)是開發(fā)一款基于開源軟件并采用開源設(shè)計的高品質(zhì)音樂播放器。 ” ? Made with KiCad 系列將支持新的展示方式。直接將以
    的頭像 發(fā)表于 07-16 11:17 ?2526次閱讀
    Made with KiCad(135):Echo - 開源的音樂<b class='flag-5'>播放器</b>

    恒訊科技分析:Ubuntu云服務(wù)數(shù)據(jù)共享高效方案

    在當(dāng)今云計算時代,企業(yè)對于數(shù)據(jù)共享的需求日益增長,尤其是使用Ubuntu云服務(wù)的場景,如何實(shí)現(xiàn)高效、安全的數(shù)據(jù)共享成為關(guān)鍵問題。本文將為您詳細(xì)介紹幾種主流的
    的頭像 發(fā)表于 07-09 21:40 ?1056次閱讀

    Debian和Ubuntu哪個好一些?

    Linux發(fā)行版世界中,Debian與Ubuntu長期占據(jù)服務(wù)開發(fā)者生態(tài)的核心地位。前者以穩(wěn)定性和純粹開源理念著稱,后者則憑借易用性與
    的頭像 發(fā)表于 05-07 10:58 ?673次閱讀

    Made with KiCad:Tangara 便攜式音樂播放器

    、3D 及 BOM,查詢設(shè)計中器件、走線、焊盤的屬性詳情。還可以原理圖中與AI小助手互動,幫您更高效地學(xué)習(xí)設(shè)計細(xì)節(jié): 概覽 Tangara 是一款便攜式音樂播放器。它通過3.5毫米耳機(jī)插孔或
    發(fā)表于 04-16 14:01

    BEM移動端開發(fā)中的應(yīng)用案例

    實(shí)時視頻播放器項(xiàng)目 移動端開發(fā)中,實(shí)時視頻播放器是一個常見的功能組件。
    的頭像 發(fā)表于 02-12 17:13 ?750次閱讀

    蛇年煥新,數(shù)字標(biāo)牌播放器點(diǎn)亮新春營銷

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

    畢業(yè)設(shè)計競賽選題推薦 | 嵌入式Linux應(yīng)用之音樂播放器項(xiàng)目實(shí)戰(zhàn)(含文檔及源碼)

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

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

    作為一個愛聽音樂打發(fā)時間的玩家,我已經(jīng)習(xí)慣隨身攜帶一款小巧輕便的音樂播放器,從早期的CD播放器到現(xiàn)在的數(shù)碼播放器,它總能在不經(jīng)意間中給我?guī)砗唵蔚目鞓贰2还苁枪浣值热说臅r候,還是工作壓力大的時候
    的頭像 發(fā)表于 12-09 09:40 ?1709次閱讀
    海貝R1便攜音樂<b class='flag-5'>播放器</b>開箱

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

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