关键词:
文章目录
❓什么是VLC
VLC 是 Video Lan Client 的缩写,原先是几个法国的大学生做的项目,后来他们把 VLC 作为了一个开源的项目,吸引了来自世界各国的很多优秀程序员来共同编写和维护 VLC,才逐渐变成了现在这个样子。
它的支持情况
操作系统: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、Command line、MFC
浏览器插件:ActiveX、Mozilla(firefox)
缺点:对 Real Video 支持不算好,需要额外的插件;不支持 3GP 的 AMR 音频格式
VLC 有一个理念:一切都是流的播放
🚀VLC 库的集成
VLC 的git下载地址
可以将它下载下来然后在Linux下编译生成我们所需要的库,但是这样还是有点小麻烦的,所以在这我提供了使用VLC所需要的资源库和头文件(直接下载拿来用就可以了)👇
我的VLC资源下载地址[已经编译过的win64和win32两个版本而且还有一个MP4文件可以拿来等下用]
提取码:yxwi
⭐VLC环境配置演示【win10系统+vs2017+win64】
如果是win32的话就下载win32的包,步骤是一样的【github上win32版本的项目源码下载地址】
1.下载刚刚分享的地址上的资源
2.在vs2017新建控制台项目
3.打开刚刚新建的项目地址并将相关资源添加(dll后面再加,这里只加这三个文件夹)
4.在项目内部配置include路径和lib库(右键项目属性)
5.添加头文件#include "vlc.h"再生成解决方案
6.将vlc的两个dll和plugins放到可执行文件同级目录
到此我们就可以使用vlc的各种库函数了(๑•̀ㅂ•́)و✧
🍎VLC 库的基本使用
可以认真看看下面VLC的关键函数,想知道怎么用,可以参考最后提供的播放器源码
创建实例
libvlc_new()
加载媒体
libvlc_media_new_path()也可以用libvlc_media_new_location()(file:///、http://、rtsp://、screen://)
创建播放器
libvlc_media_player_new_from_media()
设置播放窗口
libvlc_media_player_set_hwnd()
开始播放
libvlc_media_player_play()
获取播放长度
libvlc_media_player_get_length()
获取播放媒体的宽/高
libvlc_video_get_width()/libvlc_video_get_height()
获取播放音量
libvlc_audio_get_volume()
设置播放的音量
libvlc_audio_set_volume()
获取播放位置
libvlc_media_player_get_position()
设置播放位置
libvlc_media_player_set_position()
暂停播放
libvlc_media_player_pause()
停止播放
libvlc_media_player_stop()
释放播放器
libvlc_media_player_release()
释放媒体
libvlc_media_release()
释放实例
libvlc_release()
🎂视频播放器实现
将刚刚网盘下载下来的MP4文件放到解决方案同级目录
.cpp文件:
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include "vlc.h"
//将unicode转换为utf-8的编码(如果你的MP4文件使用中文那么就得用这个函数进行转换,要不然会出问题)
std::string Unicode2Utf8(const std::wstring& strIn)
std::string str;
//获取转义以后的长度的length
int length = ::WideCharToMultiByte(CP_UTF8, 0, strIn.c_str(), strIn.size(), NULL, 0, NULL, NULL);
//设置str的length
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";
//拿到vlc实例
libvlc_instance_t*vlc_ins = libvlc_new(argc, argv);
//拿到media实例
//std::wstring str = L"foreman.mp4";//获取到unicode编码的string
libvlc_media_t*media = libvlc_media_new_path(vlc_ins, "vlcTest.mp4");
//media = libvlc_media_new_location(vlc_ins, "files:///E:\\\\Windows_MyselfProject\\\\vlcVedioPlayer\\\\foreman.mp4");
//获得player
libvlc_media_player_t* player = libvlc_media_player_new_from_media(media);
do
int ret = libvlc_media_player_play(player);
if (ret == -1)
std::cout << "error player" << std::endl;
break;
//预防音量获取失败
int vol = -1;
while (vol == -1)
Sleep(200);
vol = libvlc_audio_get_volume(player);
Sleep(500);//休眠300毫秒,必须media解析加载完成才会有下面这些参数
//打印音量
printf("volume:%d\\n", vol);
//设置音量
//10表示的是10%比例的正常,100表示正常,0表示静音
system("pause");
//缩小音量
libvlc_audio_set_volume(player, 10);
system("pause");
//放大音量(做好心理准备)
libvlc_audio_set_volume(player, 100);
//拿长度(其实是视频的毫秒数)
libvlc_time_t timel = libvlc_media_player_get_length(player);
printf("%02d:%02d:%02d:%03d\\r\\n", int(timel / 3600000), int((timel / 60000) % 60), int((timel / 1000) % 60), int(timel % 1000));
int width = libvlc_video_get_width(player);
int height = libvlc_video_get_height(player);
printf("width=%d,height=%d\\r\\n", width, height);
//包含头文件#include <conio.h>
while (!_kbhit()) //输入不为空
//获取视频播放进度
printf("%f%%\\r", 100.0*libvlc_media_player_get_position(player));//"\\r"“回车”,告诉打字机把打印头定位在左边界;
Sleep(500);
//把刚刚退出来的控制符吃掉
getchar();
//暂停player(暂停播放视频)
libvlc_media_player_pause(player);
system("pause");
//继续播放视频
libvlc_media_player_play(player);
system("pause");
//不播放视频
libvlc_media_player_stop(player);
while (0);
//释放播放器
libvlc_media_player_release(player);
//释放媒体
libvlc_media_release(media);
//释放实例
libvlc_release(vlc_ins);
return 0;
运行效果(后面背景就是播放的那个MP4视频):
⭐自定义函数Unicode2Utf8讲解
std::string Unicode2Utf8(const std::wstring& strIn)
std::string str;
//获取转义以后的长度的length
int length = ::WideCharToMultiByte(CP_UTF8, 0, strIn.c_str(), strIn.size(), NULL, 0, NULL, NULL);
//设置str的length
str.resize(length + 1);
::WideCharToMultiByte(CP_UTF8, 0, strIn.c_str(), strIn.size(), (LPSTR)str.c_str(), length, NULL, NULL);
return str;
如果我们用的MP4文件的名字为中文,比如:测试.mp4
,那么我们不能直接用,我们得把这个字符串转换成utf-8才可以用。(当然最好还是别用中文,哈哈哈)
//将"测试.mp4"转换成unicode编码的字符串
std::wstring wStr = L"测试.mp4";
//利用自定义的函数将unicode字符串编程utf-8字符串
std::string str = Unicode2Utf8(wStr);
🏠总结
VLC的简易视频播放器到此结束,希望这一篇文章能够对您有所帮助,如果在看这篇文章的过程中有任何问题请和我沟通交流,只要我有看到评论一定会尽快回复😀
基于vlc-qt的视频播放器(支持添加视频列表单曲循环等)(代码片段)
基于libvlc和Qt实现了一个视频播放器,可实现列表循环播放,单曲播放等,效果好于Qt自带的视频播放库。网上已有诸多基于vlc库的视频播放器,但设计列表播放的资源较少,基于vlc实现列表播放主要利... 查看详情
音视频开发第一课-使用c语言开发视频播放器650元it外包开发全程记录(代码片段)
...;或者直接使用项目模板主要选择64位平台。拖放控件设置播放器区域的背景把资源bg.bmp拷贝到项目目录的res目录下。把bg.bmp添加当项目的资源中把图片控件的类型修改为Bitmap,并设置为刚添加的图片资源。重新调整布局。添加播... 查看详情
如何用vlc播放器的网络串流
参考技术A1、安装并运行VLC播放器程序,点击媒体打开网络串流项,然后输入要录制的电视地址,点击转换,设置一下相应参数,点击开始即可观看网络视频;2、在打开的打开媒体窗口中,将磁力链接或视频地址粘贴到URL地址栏... 查看详情
python+vlc实现视频播放,需要安装这个vlc这个模块,使用pipinstallvlc安装,出现无法找到模块错误解决方法(代码片段)
python+vlc实现视频播放,需要安装这个vlc这个模块,使用pipinstallvlc安装,出现无法找到模块错误解决方法问题描述——pipinstallvlc安装,出现无法找到模块错误,这个模块如何安装呢?问题原因这个模块不能通过模... 查看详情
opensuse播放使用vlc播放视频
openSUSE使用VLC播放视频linux视频播放为什么通常我们在安装号vlc后,由于版权的原因,是无法获取视频的解码器的。我们需要下载第三方的解码器帮助我们进行解码。过程如下:添加packman地址sudozypperar-cfp90http://ftp.gwdg.de/pub/linux/misc... 查看详情
vlc媒体播放器(代码片段)
VLC媒体播放器VLC媒体播放器是一个便携式、免费、开源、跨平台的媒体播放器。VideoLAN项目的流式媒体服务器。分为WindowsPhone版本和Android版本。下载地址:https://get.videolan.org/vlc/3.0.3/win64/vlc-3.0.3-win64.exe RTMP流媒体播放过程本... 查看详情
视频播放器:qtcreator运行vlc-qt官方示例代码(代码片段)
...用于媒体播放的核心类,以及用于更快速地进行媒体播放器开发的一些GUI类。VLC-Qt集成了整个libVLC,因此具备libVLC的所有特性;采用VLC-Qt可以快速的开发一款播放器。二、VLC-Qt下载官网地址:https://vlc-qt.tano.si/Git 查看详情
vlc播放器(代码片段)
为了将多个视频放在一个窗口,最开始想用的是windowsmediaplayer,6个视频,把整个电脑卡得不动了(显卡太弱,是多输出口的,没法换),于是又想把视频压缩成一个,网上的大部分软件要收费,还是研究播放,就弄了VLC。 ... 查看详情
用vlc串流推流?
用vlc串流推流,拉流的时候蓝色变红色,红色变蓝色参考技术A回到本文主题,使用RTSP推流桌面视频数据,需要演示的过程包含2个,即:推流,意思就是通过VLC播放器,将桌面的实时录制视频,采用RTSP协议推送到指定IP的端口上。拉... 查看详情
有没有关于使用c#用vlc编写视频播放器的资料
参考技术AC#下利用vlc库实现播放多视频源的播放器第一步:创建一个C#工程。在Form1中拖一个3个plane(上下布局)、2个label、2个text、1个button控件。第二步:把vlc的plugins文件夹和libvlccore.dlllibvlc.dll放入DEBUG文件夹内。第三步:编... 查看详情
vlc播放器如何录制
vlc播放器如何录制的方法。如下参考:1.点击左下角的电脑位置集合,然后选择终端,不同的桌面环境打开终端的方法不太一样,大致一样。稍微搜索一下就可以了,如下图。2.然后在终端输入命令sudoapt-getinstallVLC,输入密... 查看详情
html中嵌入vlc播放器
先下载安装VLC的插件,然后写一个页面,页面中,指定好对应的rtsp视频地址就好了。去VLC的官网下载对应的插件,目前插件的最新版本是2.2.4.下载完成后,安装到磁盘指定位置,比如:D:VLC注册VLC插件(否则视频无法正常显示)... 查看详情
vlc入门(代码片段)
利用VLC自制一个java视频播放器1.下载相关文件1.1下载vlc播放器1.1.1必须匹配Java虚拟机的CPU体系结构和本机LibVLC库-如果使用32位JVM,则必须使用32位版本的VLC;如果使用64位JVM,则必须使用64位版本的VLC。你不能混合CPU架构,它不会... 查看详情
从远程终端用 X11 中的 VLC 播放视频
】从远程终端用X11中的VLC播放视频【英文标题】:PlayavideowithVLCinX11fromremoteterminal【发布时间】:2012-03-2700:49:35【问题描述】:我有一些带有Linux的超薄终端,每次启动时都会启动一个小脚本。该脚本有一个cvlc命令行,如下所示... 查看详情
如何使用python创建一个自定义视频播放器(代码片段)
...问题,解决方式如下:这个例子使用VLC作为视频播放器,并且使用tkinter创建了一个简单的GUI界面,其中包括一个Canvas用于播放视频,几个按钮用于控制视频播放,以及一个滑动条用于控制音量。你可以根... 查看详情
c/c++视频播放器开发(代码片段)
...f0c;本文以当前流行的VLC开源库为基础,开发一个视频播放器。一、下载VLC库最新库的下载地址点这里可选择自己需要的版本,我下载的为win64下载压缩包,解压,将图中两个dll和一个文件夹复制到项目文件中进入s... 查看详情
vlc播放流程分析
...放的文件后,vlc会执行一系列的流程。 首先需要了解视频以及流媒体处理及播放的流程,由链接中的描述,视频以及流媒体处理时,首先要解协议(http,rtmp,rtsp等),然后是解封装(mp4,mkv,avi等),获得音频码流和视频... 查看详情
qt编写安防视频监控系统2-视频播放(代码片段)
一、前言视频播放功能是核心功能之一,为了统一管理接口,统一封装成一个控件,对外提供seturlopenclose方法即可,不用去管内部的具体处理,这样就可以提供多种接口来实现统一的管理,比如vlc内核+ffmpeg内核+海康sdk内核等,... 查看详情