来源:微信公众号「编程学习基地」

简介

  • VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。
  • 由于VLC是完全开源的,所以我们可以获得所有的项目源码,并在此基础上进行二次开发

VLC的官网:http://www.videolan.org/

VLC源码下载地址:http://download.videolan.org/pub/videolan/vlc/2.2.4/

测试代码参考雷神的博客:http://blog.csdn.net/leixiaohua1020/article/details/42363079

qt配置vlc环境

qt环境搭建教程

下载vlc源码

点击下载地址选择win64/win32,我选的是win64,下载.7z结尾的,我下载的是vlc-2.2.4-win64.7z



下载解压之后是下面这个样子



解压后找到sdk文件夹,这个文件夹非常重要

simple_libvlc_qt_player

第一次提交代码,最简单的libvlc播放器

  1. 创建控制台项目(参考qt环境搭建教程

  2. 配置.pro文件

在底部添加如下代码

win32{
INCLUDEPATH += $$PWD/sdk/include
LIBS += -L$$PWD/sdk/lib -llibvlc -llibvlccore
}else{
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib -lvlc -lvlccore
}
  1. 配置sdk

将解压后的sdk文件夹复制到main.cpp文件夹下即可



测试代码见simple_libvlc_qt_player

运行结果播放cuc_ieschool.flv这个视频

  1. 测试代码
#include <QCoreApplication>
#include <Windows.h>
#include "vlc/vlc.h" using namespace std; int main(int argc, char* argv[])
{
libvlc_instance_t* inst;
libvlc_media_player_t* mp;
libvlc_media_t* m; libvlc_time_t length;
int width;
int height;
int wait_time = 5000; const char* version;
version = libvlc_get_version();
printf("version: %s\n", version);
inst = libvlc_new(NULL, NULL); char filename[1024] = "../simple_libvlc_qt_player/cuc_ieschool.flv";
//m = libvlc_media_new_location (inst,"rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov" );
m = libvlc_media_new_path (inst,filename);
mp = libvlc_media_player_new_from_media(m);
libvlc_media_release(m);
libvlc_media_player_play(mp); //wait until the tracks are created
_sleep(wait_time);
length = libvlc_media_player_get_length(mp);
width = libvlc_video_get_width(mp);
height = libvlc_video_get_height(mp);
printf("Stream Duration: %ds\n", length / 1000);
printf("Resolution: %d x %d\n", width, height);
//Let it play
_sleep(length - wait_time); // Stop playing
libvlc_media_player_stop(mp);
libvlc_media_player_release(mp);
libvlc_release(inst); return 0;
}
  1. 程序发布

simple_libvlc_qt_player文件夹下有一个release文件夹将里面的动态链接库放到打包的程序目录下即可发布

项目地址

GitHub项目地址:https://github.com/ADeRoy/libvlc_qt_demo

如果帮助到你,可以给个star

vlc音视频开发(一)环境搭建(qt篇)的更多相关文章

  1. vlc音视频开发(二)环境搭建(VS篇)

    来源:微信公众号「编程学习基地」 目录 简介 VS配置vlc开发环境 下载vlc源码 创建vlc环境 测试vlc代码 运行vlc程序 完成项目文件获取 简介 VLC 是一款自由.开源的跨平台多媒体播放 ...

  2. 【秒懂音视频开发】02_Windows开发环境搭建

    音视频开发库的选择 每个主流平台基本都有自己的音视频开发库(API),用以处理音视频数据,比如: iOS:AVFoundation.AudioUnit等 Android:MediaPlayer.Med ...

  3. Android音视频开发(1):H264 基本原理

    前言 H264 视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的.随着 x264/openh264 以及 ffmpeg 等开源库的推出,大多数使用者无需再对H264的细节做过多的研究,这大 ...

  4. WebRTC 音视频开发

    WebRTC 音视频开发 webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译 ...

  5. Android 音视频开发学习思路

    Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...

  6. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...

  7. Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  8. Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  9. 音视频开发-FFmpeg

    音视频开发是个非常复杂的,庞大的开发话题,初涉其中,先看一下结合 OEIP(开源项目) 新增例子. 可以打开flv,mp4类型文件,以及rtmp协议音视频数据,声音的播放使用SDL. 把采集的麦/声卡 ...

随机推荐

  1. 【Python】部署上手App后端服务器 - Linux环境搭建安装Python、Tornado、SQLAlchemy

    基于阿里云服务器端环境搭建 文章目录 基于阿里云服务器端环境搭建 配置开发环境 安装 Python 3.8.2 安装 Tornado 安装 MySQL 安装 mysqlclient 安装 SQLAlc ...

  2. ctfhub技能树—sql注入—Cookie注入

    手注 打开靶机 查看页面信息 查找cookie 测试是否为cookie注入 抓包 尝试注入 成功查询到数据库名 查询表名 查询字段名 查询字段信息 成功拿到flag sqlmap 查询数据库名 pyt ...

  3. Linux删除文件后磁盘目录不释放

    今天测试oracle数据库的时候,把表空间连带内容和数据文件一并删除了,但是删除之后,查看数据文件不存在了,但是目录的带下没有释放 SQL> drop tablespace users incl ...

  4. 定制个性化的GUI

    你现在还在使用SAP GUI710或者是GUI720,又或者更早的640等吗?那么古董先生,推荐您使用GUI730吧,您可能会730好在哪?那我建议您去百度或者Google问吧.对于新的GUI730, ...

  5. Ice系列--强大如我IceGrid

    前言 IceGrid是一个提供服务定位和服务激活的组件,但它的功能远不止于此.从它的命名可以看出它的设计理念-网格计算(grid computing).网格计算被定义为由一系列关联的廉价计算机组成的计 ...

  6. SparkStreaming和Kafka基于Direct Approach如何管理offset实现exactly once

    在之前的文章<解析SparkStreaming和Kafka集成的两种方式>中已详细介绍SparkStreaming和Kafka集成主要有Receiver based Approach和Di ...

  7. Certbot CA 证书 https

    certbot (base) a@test:~# certbot --help - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...

  8. 强制杀死进程后,进程相关的socket未必发送RST

    强制杀死进程后,进程相关的socket未必发送RST

  9. luoguP2657 [SCOI2009] windy 数

    目录 luoguP2657 [SCOI2009] windy 数 简述题意: Solution: luoguP2657 [SCOI2009] windy 数 简述题意: 不含前导零且相邻两个数字之差至 ...

  10. Java——序列化与反序列化

    序列化 序列化 序列化是什么 如何实现对象序列化 实战练习 Serializable 反序列化 总结 使用Reader读取文件内容1 使用Reader读取文件内容2 序列化是什么? 将对象的状态存储到 ...