自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

最新libvlc4.0+Qt設(shè)計(jì)視頻播放器

開(kāi)源
目前VLC已經(jīng)推出了全新的4.0版本,解決了很多3.0里一直存在的問(wèn)題。并且4.0的VLC支持提供了渲染接口,支持opengl、D3D渲染,二次開(kāi)發(fā)非常方便,源碼里提供了很多例子,方便開(kāi)發(fā)者二次開(kāi)發(fā)參考,有Qt的、SDL的、GTK的、OpenGL渲染的、D3D渲染的等等。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

一、前言

VLC是一款簡(jiǎn)單且非常優(yōu)秀的免費(fèi)開(kāi)源軟件,所有開(kāi)源軟件的好處他都有,而且是為數(shù)不多開(kāi)源并長(zhǎng)期更新維護(hù)的播放器,兼容性等各個(gè)方面都很好。VLC提供了libvlc庫(kù),可以很方便進(jìn)行二次開(kāi)發(fā)。

穩(wěn)定版本,3.0 版本官網(wǎng):https://www.videolan.org/。

目前VLC已經(jīng)推出了全新的4.0版本,解決了很多3.0里一直存在的問(wèn)題。并且4.0的VLC支持提供了渲染接口,支持opengl、D3D渲染,二次開(kāi)發(fā)非常方便,源碼里提供了很多例子,方便開(kāi)發(fā)者二次開(kāi)發(fā)參考,有Qt的、SDL的、GTK的、OpenGL渲染的、D3D渲染的等等。

VLC最新的4.0版本官網(wǎng)首頁(yè):https://nightlies.videolan.org/。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

二、VLC4.0源碼和庫(kù)文件下載

1、SDK庫(kù)文件下載

官網(wǎng)地址:https://nightlies.videolan.org/。

打開(kāi)網(wǎng)頁(yè),可以看到各種環(huán)境的下載選項(xiàng)。我的開(kāi)發(fā)環(huán)境是在windows下,我這里就分別下載32位和64位的SDK文件。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

從時(shí)間上來(lái)看,VLC更新的頻率還是很高的。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

下載win64的包,直接下載7z包就行,解壓就能直接使用。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

下載win32的包:

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

這是下載好的win32和win64的庫(kù)文件:

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

打開(kāi)解碼的目錄,可以看到sdk目錄,這個(gè)sdk目錄里有include和lib目錄,二次開(kāi)發(fā)需要用到。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

外面的libvlc.dll和 libvlccore.dll 庫(kù)文件、plugins插件目錄是運(yùn)行過(guò)程中需要使用文件。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

2、vlc源碼下載

通過(guò)git克隆一份最新的源碼下來(lái)。 源碼里包含了vlc4.0的使用示例代碼,通過(guò)例子代碼可以快速運(yùn)行。

git clone https://code.videolan.org/videolan/vlc.git

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

克隆成功: 在vlc\doc\libvlc 目錄下有很多例子。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

這里面可以看到QtGL和QtPlayer兩個(gè)Qt例子,我這里就分別運(yùn)行這兩個(gè)例子完成測(cè)試。

QtGL是采用OpenGL渲染,QtPlayer是窗口句柄嵌入方式渲染。

3、拷貝庫(kù)文件

為了方便運(yùn)行例子代碼,將剛才下載下來(lái)的庫(kù)文件里的lib文庫(kù)、插件目錄、dll文件拷貝到項(xiàng)目目錄下,建立一個(gè)vlc40_win32和vlc40_win64目錄。

以QtGL項(xiàng)目為例:

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

將下載的壓縮包解碼目錄下的相關(guān)文件拷貝過(guò)來(lái):

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

拷貝到項(xiàng)目下:

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

64位的庫(kù)操作方法一樣:

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

4、運(yùn)行項(xiàng)目(QtGL)

(1)打開(kāi)項(xiàng)目

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

(2)修改pro文件

根據(jù)32位編譯器 和 64位編譯器分別設(shè)置庫(kù)文件和頭文件的路徑。

TEMPLATE = app
TARGET = qtglvlc

CONFIG += c++14 #link_pkgconfig force_debug_info
PKGCONFIG = libvlc
QT += widgets
SOURCES += main.cpp qtvlcwidget.cpp
HEADERS += qtvlcwidget.h
#打印當(dāng)前Qt構(gòu)建套件的信息
message($$QT_ARCH)
#表示32位的構(gòu)建套件
contains(QT_ARCH, i386)
{
INCLUDEPATH += $$PWD\vlc40_win32\sdk\include #VLC頭文件包含目錄
INCLUDEPATH += $$PWD\vlc40_win32\sdk\include\vlc #VLC頭文件包含目錄
LIBS +=$$PWD\vlc40_win32\sdk\lib\libvlc.lib #VLC庫(kù)文件路徑
LIBS +=$$PWD\vlc40_win32\sdk\lib\libvlccore.lib
}
#表示64位的構(gòu)建套件
contains(QT_ARCH, x86_64)
{
INCLUDEPATH += $$PWD\vlc40_win64\sdk\include #VLC頭文件包含目錄
INCLUDEPATH += $$PWD\vlc40_win64\sdk\include\vlc #VLC頭文件包含目錄
LIBS +=$$PWD\vlc40_win64\sdk\lib\libvlc.lib #VLC庫(kù)文件路徑
LIBS +=$$PWD\vlc40_win64\sdk\lib\libvlccore.lib
}

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

5、編譯運(yùn)行(QtGL)

(1)修改視頻路徑,方便測(cè)試

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

glWidget->playMedia()里調(diào)用的是libvlc_media_new_location函數(shù)打開(kāi)媒體文件,libvlc_media_new_location 函數(shù)用于打開(kāi)協(xié)議,這個(gè)函數(shù)更加強(qiáng)大,可以支持很多協(xié)議,本地視頻也可以使用該函數(shù)打開(kāi),更加通用一點(diǎn),而且使用該函數(shù)時(shí),路徑斜杠使用常規(guī)左斜杠就行(linux風(fēng)格),不需要進(jìn)行轉(zhuǎn)換。

下面介紹幾個(gè)常用的使用示例:

打開(kāi)本地文件: libvlc_media_new_location (inst, "file:///D:/work/test.mp4");
打開(kāi)RTSP流媒體:libvlc_media_new_location (inst, "rtsp://10.0.0.4:554/cam");
打開(kāi)RTMP流媒體:libvlc_media_new_location (inst, "rtmp://10.0.0.4:554/cam");
播放當(dāng)前桌面屏幕: libvlc_media_new_location (inst, "screen://");

(2)編譯器選擇

我當(dāng)前采用的編譯器是,MSVC_VS2017_32位 和 MSVC_VS2017_64位 。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

(3)構(gòu)建項(xiàng)目

點(diǎn)擊左下角垂直構(gòu)建項(xiàng)目。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

構(gòu)建完成之后,將vlc的插件目錄和相關(guān)的dll文件拷貝到構(gòu)建的影子目錄下。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

(4)最終運(yùn)行效果

拷貝之后,再點(diǎn)擊左下角的綠色三角形運(yùn)行程序。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

6、運(yùn)行項(xiàng)目(QtPlayer)

(1)打開(kāi)項(xiàng)目

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

(2)修改pro文件

#打印當(dāng)前Qt構(gòu)建套件的信息
message($$QT_ARCH)

#表示32位的構(gòu)建套件
contains(QT_ARCH, i386)
{
INCLUDEPATH += $$PWD\vlc40_win32\sdk\include #VLC頭文件包含目錄
INCLUDEPATH += $$PWD\vlc40_win32\sdk\include\vlc #VLC頭文件包含目錄
LIBS +=$$PWD\vlc40_win32\sdk\lib\libvlc.lib #VLC庫(kù)文件路徑
LIBS +=$$PWD\vlc40_win32\sdk\lib\libvlccore.lib
}

#表示64位的構(gòu)建套件
contains(QT_ARCH, x86_64)
{
INCLUDEPATH += $$PWD\vlc40_win64\sdk\include #VLC頭文件包含目錄
INCLUDEPATH += $$PWD\vlc40_win64\sdk\include\vlc #VLC頭文件包含目錄
LIBS +=$$PWD\vlc40_win64\sdk\lib\libvlc.lib #VLC庫(kù)文件路徑
LIBS +=$$PWD\vlc40_win64\sdk\lib\libvlccore.lib
}

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

(3)修改代碼

例子代碼里采用libvlc_media_new_path 函數(shù)加載媒體文件,需要轉(zhuǎn)換一下路徑的斜杠。

windows下使用libvlc_media_new_path 函數(shù)傳入的路徑要注意斜杠問(wèn)題,必須保證傳入的是雙右斜杠,如果默認(rèn)選擇的路徑是左斜杠,可以使用std::replace函數(shù)轉(zhuǎn)換一下。

std::replace(fileOpen.begin(), fileOpen.end(), QChar('/'), QChar('\\'));

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

(4)運(yùn)行項(xiàng)目

注意:需要將VLC的插件目錄和相關(guān)的dll文件拷貝到運(yùn)行目錄,否則程序無(wú)法正常運(yùn)行,具體步驟參考前面的2.5小節(jié)說(shuō)明。

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

加載視頻播放:

#創(chuàng)作者激勵(lì)#  最新libvlc4.0+Qt設(shè)計(jì)視頻播放器-開(kāi)源基礎(chǔ)軟件社區(qū)

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

責(zé)任編輯:jianghua 來(lái)源: 51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2011-06-13 09:33:04

2011-06-27 11:23:21

Qt 音樂(lè)播放器

2022-08-16 17:37:06

視頻播放器鴻蒙

2011-07-20 16:21:20

iPhone 視頻 播放器

2015-05-21 15:25:42

VLC播放器

2022-06-21 14:41:38

播放器適配西瓜視頻

2011-09-06 11:25:08

2011-09-06 10:46:19

QT播放器

2011-06-24 10:21:11

Qt phonon 多媒體

2021-10-19 14:27:07

鴻蒙HarmonyOS應(yīng)用

2021-10-21 16:00:07

鴻蒙HarmonyOS應(yīng)用

2022-11-12 08:26:04

VLC視頻播放器裁剪視頻

2011-09-06 11:08:21

QT播放器Mplayer

2018-05-25 14:37:58

2023-03-28 09:38:34

開(kāi)發(fā)應(yīng)用鴻蒙

2023-03-28 09:44:02

開(kāi)發(fā)應(yīng)用鴻蒙

2023-03-29 09:37:49

視頻播放器應(yīng)用鴻蒙

2023-03-29 09:32:15

視頻播放器應(yīng)用鴻蒙

2015-09-01 16:48:44

ios暴風(fēng)視頻播放器

2023-08-26 19:07:40

VLC旋轉(zhuǎn)視頻
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)