欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++利用VLC庫(kù)制作音視頻的示例代碼

 更新時(shí)間:2024年01月23日 13:57:37   作者:yy_xzz  
這篇文章主要為大家詳細(xì)介紹了C++如何利用VLC庫(kù)制作音視頻,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下

VLC支持情況

操作系統(tǒng):Windows、WinCE、Linux、MacOSX、BEOS、BSD、Android

訪問形式:文件、DVD/VCD/CD、http、ftp、mms、TCP、UDP、RTP、IP組播、IPv6、rtsp

編碼格式:MPEG*、DIVX、WMV、MOV、3GP、FLV、H.263、H.264、FLAC

視頻字幕:DVD、DVB、Text、Vobsub

視頻輸出:DirectX、X11、XVideo、SDL、FrameBuffer、ASCII

控制界面:WxWidgets、QT4/5、Web、Telnet

缺點(diǎn):對(duì)Real Video支持不算好,需要額外的插件;不支持3GP的AMR音頻格式

VLC庫(kù)的基本使用

關(guān)鍵的庫(kù)函數(shù):

創(chuàng)建實(shí)例

libvlc_new()

加載媒體

libvlc_media_new_path()/libvlc_media_new_location()(file:///、http://、rtsp://、screen://)

創(chuàng)建播放器

libvlc_media_player_new_from_media()

設(shè)置播放窗口

libvlc_media_player_set_hwnd()

開始播放

libvlc_media_player_play()

獲取播放長(zhǎng)度---需要播放之后才能獲取

libvlc_media_player_get_length()

獲取播放媒體的寬/高

libvlc_video_get_width()/libvlc_video_get_height()

獲取播放音量

libvlc_audio_get_volume()

設(shè)置播放的音量

libvlc_audio_set_volume()

獲取播放位置

libvlc_media_player_get_position()

設(shè)置播放位置

libvlc_media_player_set_position()

暫停播放

libvlc_media_player_pause()

停止播放

libvlc_media_player_stop()

釋放播放器

libvlc_media_player_release()

釋放媒體

libvlc_media_release()

釋放實(shí)例

libvlc_release()

創(chuàng)建流程

實(shí)例-->媒體-->播放器-->播放(播放后各種操作)-->釋放播放器-->釋放媒體-->釋放實(shí)例

案例代碼

#include <iostream>
#include "vlc.h"
#include <conio.h>
 
//編碼轉(zhuǎn)換
#include <Windows.h>
std::string Unicode2Utf8(const std::wstring& strIn)
{
	std::string str;
	int length = ::WideCharToMultiByte(CP_UTF8, 0, strIn.c_str(), strIn.size(), NULL, 0, NULL, NULL);
	str.resize(length + 1);
	::WideCharToMultiByte(CP_UTF8, 0, strIn.c_str(), strIn.size(), (LPSTR)str.c_str(), length, NULL, NULL);
	return str;
}
 
int main()
{
	int argc = 1;
	char* argv[2];
	argv[0] = (char*)"--ignore-config";  //忽略配置
	libvlc_instance_t* vlc_ins = libvlc_new(argc, argv);  //①創(chuàng)建實(shí)例
	std::string path = Unicode2Utf8(L"file:///D:\\C++Project\\VideoPlay\\VideoPlay\\音樂.mp4");
	libvlc_media_t* media = libvlc_media_new_location(vlc_ins, path.c_str());
	//libvlc_media_t* media = libvlc_media_new_path(vlc_ins, "音樂.mp4");  //②創(chuàng)建媒體
	//media = libvlc_media_new_location(vlc_ins, "file:///D:\\C++Project\\VideoPlay\\VideoPlay\\音樂.mp4");
	libvlc_media_player_t* player = libvlc_media_player_new_from_media(media); //③創(chuàng)建播放器
	do
	{
		int ret = libvlc_media_player_play(player);  //④播放 返回值0開始 -1錯(cuò)誤
		if (ret == -1) {
			printf("error found!\r\n");
			break;
		}
		int vol = -1;
		while (vol == -1)
		{
			Sleep(10);
			vol = libvlc_audio_get_volume(player);  //獲取音量 默認(rèn)100
		}
		//只有media解析加載完成,才會(huì)有下面的參數(shù)
		printf("volume is %d\r\n", vol);
		libvlc_audio_set_volume(player, 10);  //將音量設(shè)置到10
		libvlc_time_t tm = libvlc_media_player_get_length(player);  //獲取長(zhǎng)度(毫秒數(shù))
		printf("%02d:%02d:%02d\r\n", int(tm / 1000 / 3600), int((tm / 1000 / 60) % 60), int(tm / 1000 % 60));
		int width = libvlc_video_get_width(player);  //獲取寬和高
		int height = libvlc_video_get_height(player);
		printf("width = %d height = %d\r\n", width, height);
		while (!_kbhit()) {  //檢驗(yàn)鍵盤是否按下  按下為1
			printf("%f%%\r", 100.0 * libvlc_media_player_get_position(player));  //獲取播放進(jìn)度
			Sleep(500);
		}
		getchar();
		libvlc_media_player_pause(player);  //暫停
		getchar();
		libvlc_media_player_play(player);  //繼續(xù)
		getchar();
		libvlc_media_player_stop(player);  //停止
	} while (0);
	libvlc_media_player_release(player); //⑤釋放播放器
	libvlc_media_release(media);  //⑥釋放媒體
	libvlc_release(vlc_ins);  //⑦釋放實(shí)例
 
	return 0;
}

到此這篇關(guān)于C++利用VLC庫(kù)制作音視頻的示例代碼的文章就介紹到這了,更多相關(guān)C++ VLC制作音視頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++空間命名的使用

    C++空間命名的使用

    本文主要介紹了C++空間命名的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Qt實(shí)現(xiàn)獲取文件大小與磁盤空間大小

    Qt實(shí)現(xiàn)獲取文件大小與磁盤空間大小

    這篇文章主要為大家詳細(xì)介紹了如何使用Qt實(shí)現(xiàn)獲取文件大小與磁盤空間大小,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • C語言使用mciSendString實(shí)現(xiàn)播放音樂功能

    C語言使用mciSendString實(shí)現(xiàn)播放音樂功能

    mciSendString?支持?mp3、wma、wav、mid?等多種媒體格式,使用非常簡(jiǎn)單。這篇文章就來為大家介紹一下C語言如何使用mciSendString實(shí)現(xiàn)播放音樂功能,需要的可以參考一下
    2023-02-02
  • C++開發(fā)之CRC校驗(yàn)實(shí)例詳解

    C++開發(fā)之CRC校驗(yàn)實(shí)例詳解

    這篇文章主要介紹了C++開發(fā)之CRC校驗(yàn)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • visual studio 2015下boost庫(kù)配置教程

    visual studio 2015下boost庫(kù)配置教程

    這篇文章主要為大家詳細(xì)介紹了visual studio 2015下boost庫(kù)的配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Qt實(shí)現(xiàn)SqlTableModel映射組件應(yīng)用小結(jié)

    Qt實(shí)現(xiàn)SqlTableModel映射組件應(yīng)用小結(jié)

    在Qt中提供了QSqlTableModel模型類,它為開發(fā)者提供了一種直觀的方式來與數(shù)據(jù)庫(kù)表格進(jìn)行交互,本文就來介紹一下Qt實(shí)現(xiàn)SqlTableModel映射組件應(yīng)用小結(jié),感興趣的可以了解一下
    2023-12-12
  • 詳解C++中的左值,純右值和將亡值

    詳解C++中的左值,純右值和將亡值

    C++中本身是存在左值,右值的概念,但是在C11中又出現(xiàn)了左值,純右值,將亡值得概念;這里我們主要介紹這些值的概念,感興趣的可以了解一下
    2022-09-09
  • C語言深入探究程序的編譯之預(yù)處理

    C語言深入探究程序的編譯之預(yù)處理

    在C語言的程序中包括各種以符號(hào)#開頭的編譯指令,這些指令稱為預(yù)處理命令。預(yù)處理命令屬于C語言編譯器,而不是C語言的組成部分,通過預(yù)處理命令可擴(kuò)展C語言程序設(shè)計(jì)的環(huán)境
    2022-05-05
  • c++遞歸解數(shù)獨(dú)方法示例

    c++遞歸解數(shù)獨(dú)方法示例

    這篇文章主要介紹了c++遞歸解數(shù)獨(dú)方法示例,需要的朋友可以參考下
    2014-03-03
  • C語言 以字符形式讀寫文件詳解及示例代碼

    C語言 以字符形式讀寫文件詳解及示例代碼

    本文主要介紹C語言 以字符形式讀寫文件,這里整理了讀寫文件的一些資料并附示例代碼,供大家學(xué)習(xí)參考,有需要的小伙伴可以參考下
    2016-08-08

最新評(píng)論