最近研究FFmpeg,看到用FFmpeg写的VLC播放器很牛X,我打算学习一下,网上找了很多的资料发现都是在VS IDE基础上开发的,本人对VS IDE不感冒,因为一直从事java开发,对eclipse还是很有偏爱的,打算用eclipse来搭建C/C++开发环境。本人其实对C/C++其实也只懂一些皮毛。在搭建过程中遇到过很多的问题。为了让初学者在学习的过程中少走弯路,特此写一下本篇文章。
环境:
OS: Windows 7 32位旗舰版
IDE: Eclipse indigo
LIB: VLC2.1.0 SDK
1、下载eclipse
下载地址:http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers-includes-incubating-components/indigosr2 下载对应操作系统版本即可,里面包含了CDT(C/C++ 开发工具)。解压即可。
2、安装MinGW
下载地址: http://sourceforge.net/projects/mingw/files/ (需要fanqiang) 下载后点击安装即可。因为sourceforge被qiang了,在安装的过程中出现N多的错误,这是需要用到代理,去网上随便找一个HTTP代理IP配置到IE的LAN Setting里即可。
安装:一路next即可,选择安装组件需选择g++ compiler.
配置环境变量:把MinGW目录下的bin目录配置到环境Path环境环境变量中。
测试MinGW是否配置成功:Win+R弹出运行窗口,然后敲入“cmd”打开命令行窗口,敲入“gcc”测试即可。
3、创建C/C++工程
打开eclipse,new C project ,选择Hello World ANSI C Project, 右边选择MinGW GCC,如果Path中没配置MinGW则不会出现此选项。
Project type分为两种,“Executeble”和“Makefile project”,其中“Executeble”为Managed C Project,即自动编译的C工程;而“Makefile project”是通过写makefile来手动编译的C工程,新手建议使用自动编译的C工程。
①新建项目
② 点击完成。打开后默认是这个样子的:
③自动生成的代码如下:
代码如下:
/*
============================================================================
Name : Demo.c
Author :
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
int main( void) {
puts( "!!!Hello World!!!"); /* prints !!!Hello World!!! */
return EXIT_SUCCESS;
}
|
④如果直接点运行会报错:
⑤必须先构建build,再运行。点小锤子或在项目右键 build Project。如下图
⑥编译结果:
⑦然后在运行:
4、下载VLC
安装vlc:正常的window程序安装。无需多说。
5、加入VLC库文件和头文件
① 加入头文件
项目右键 点 properties,展开C/C++ Build ,点击Settings:
选择GCC C Compiler下的Includes:
加入VLC的include path,这里需要加MinGW和vlc的include文件,点右边的添加按钮,把路径填入点ok即可
加入VLC的lib ,在Library search path中填入VLC sdk lib路径,在Libraries中加入lib文件名(不要.lib后缀):
SDKlib目录截图:
配置截图:
6、运行VLC官方教程代码
打开LibVLC tutorial 找到Sample LibVLC Code部分,拷贝代码到Demo.c中。
如果你马上运行代码会出现如下错误:
解决此问题需要在头部加入如下代码:
#ifdef __unix__
# include <unistd.h>
#elif defined _WIN32
# include <windows.h>
#define sleep(x) Sleep(1000 * x)
#endif
|
完整代码如下
#include <stdio.h>
#include <stdlib.h>
#include <vlc/vlc.h>
#ifdef __unix__
# include <unistd.h>
#elif defined _WIN32
# include <windows.h>
#define sleep(x) Sleep(1000 * x)
#endif
int main (int argc, char* argv[])
{
libvlc_instance_t * inst;
libvlc_media_player_t *mp;
libvlc_media_t *m;
/* Load the VLC engine */
inst = libvlc_new (0, NULL);
/* Create a new item */
//m = libvlc_media_new_location (inst, "E:/test_video/jidu.mp4"); //network video file
m = libvlc_media_new_path (inst, "E:\\test_video\\jidu.mp4"); //local video file
/* Create a media player playing environement */
mp = libvlc_media_player_new_from_media (m);
/* No need to keep the media now */
libvlc_media_release (m);
#if 0
/* This is a non working code that show how to hooks into a window,
* if we have a window around */
libvlc_media_player_set_xwindow (mp, xid);
/* or on windows */
libvlc_media_player_set_hwnd (mp, hwnd);
/* or on mac os */
libvlc_media_player_set_nsobject (mp, view);
#endif
/* play the media_player */
libvlc_media_player_play (mp);
sleep (20); /* Let it play a bit */ //Sleep takes a time in milliseconds;sleep takes a time in seconds.
/* Stop playing */
libvlc_media_player_stop (mp);
/* Free the media_player */
libvlc_media_player_release (mp);
libvlc_release (inst);
return 0;
}
|
说明一下:libvlc_media_new_location是播放网络视频文件,libvlc_media_new_path 是播放本地视频文件。
sleep (20)是播放器20秒后自动关闭,Sleep 单位是毫秒
最后:
编译build project -->运行,出现如下截屏:
至此Eclipse搭建VLC SDK开发环境讲解完毕。
参考资料:
相关推荐
通过以上详细说明,我们可以清晰地了解如何在Linux环境下搭建VLC-android的编译环境,并顺利完成整个编译流程。此外,通过对特定文件的更新操作,可以确保最终编译出的应用程序具有良好的视频播放功能。这对于那些...
4. **开发移动应用程序**:Fedora 10 提供了多种开发工具,如 Android SDK 和 Qt Creator,使开发者能够轻松开发移动应用程序。 5. **远程桌面访问**:通过 VNC 或 SSH 远程桌面协议,用户可以从任何地方访问他们的 ...
基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档~ 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 基于TypeScript+three.js 实现的三维地质模型剖切,以及剖面的补充+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档
内容概要:本文详细介绍了利用虚拟惯性控制技术,使双馈风机参与到三机九节点电力系统的一次调频过程中。首先,文章阐述了双馈风机的基本特性和虚拟惯性控制的工作原理,即通过调节转速响应模块,在电网频率波动时快速提供有功功率支持。接着,构建了一个包含两个双馈风机、一个常规发电机及相关无功源的三机九节点系统模型,并详细描述了各组件之间的连接方式及其参数配置。随后,展示了具体的Matlab/Simulink模型搭建步骤,包括系统结构、模块连接、参数设定等方面的内容。通过仿真实验,验证了所提出的虚拟惯性控制方法在电网频率波动情况下的有效性,结果显示该方法能够在频率波动范围内提供有效的有功功率调节,显著提高了系统的调频效率。 适合人群:对电力系统调频技术和双馈风机控制感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于希望深入了解双馈风机在电力系统中发挥调频作用的研究者,旨在探索如何通过改进控制策略提升电力系统的稳定性和可靠性。 其他说明:文中提供了详细的仿真代码片段和关键算法解析,有助于读者更好地理解和复现研究成果。同时,强调了参数调整的重要性,并给出了优化建议。
内容概要:本文详细介绍了下垂控制的两电平三相桥式逆变器的工作原理、控制策略及MATLAB仿真实现。首先解释了逆变器能够根据负载变化自动调整输出电压的频率和幅值,确保输出稳定。文中重点讨论了ABC到dq坐标系的解耦变换方法,以及电压电流双闭环控制的具体实现步骤。此外,还深入探讨了下垂控制的作用及其核心方程,展示了如何通过MATLAB进行仿真测试,验证控制策略的有效性。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对逆变器控制策略感兴趣的读者。 使用场景及目标:适用于研究和开发微电网和分布式电源系统中的逆变器控制策略。主要目标是帮助读者理解下垂控制的工作机制,掌握电压电流双闭环控制的设计方法,并能够在MATLAB环境中进行相关仿真。 其他说明:文中提供的MATLAB代码和仿真模型可以作为实际项目的参考,有助于提高逆变器系统的稳定性和响应速度。同时,文中提到的调试经验和常见问题也为实际应用提供了宝贵的指导。
内容概要:本文详细介绍了直驱式永磁风电并网控制系统在Simulink中的建模与实现,尤其是最大功率追踪(MPPT)控制。首先,文章讲解了风机建模的基本原理,包括风力机特性方程及其关键参数如空气密度、扫掠面积、风速和风能利用系数等。接着,讨论了最大功率追踪控制的方法,特别是爬山法的具体实现步骤。最后,文章展示了如何将这两部分内容整合成完整的最大功率追踪运行程序,并提到了一些实用技巧,如永磁同步电机参数设置、锁相环设计、仿真步长选择等。 适合人群:从事风力发电系统设计与仿真的工程师和技术人员,以及对新能源技术和电力电子感兴趣的科研人员。 使用场景及目标:适用于希望深入了解直驱式永磁风电并网控制原理的研究者,或者正在参与相关项目开发的技术团队。主要目标是帮助读者掌握基于Simulink的最大功率追踪控制方法,提高风力发电系统的效率和可靠性。 其他说明:文中提供了大量具体的Matlab/Simulink代码片段和配置建议,便于读者快速上手实践。同时强调了理论与实际相结合的重要性,鼓励读者根据实际情况调整模型参数,确保仿真结果贴近现实工况。
内容概要:本文详细介绍了基于Matlab/Simulink平台构建的DSTATCOM无功补偿风电并网模型。该模型包括两种不同类型的风力发电机(双馈风机DFIG和感应风机),并通过DSTATCOM装置对风电并网过程中可能出现的电压波动进行有效补偿。文中通过具体的仿真案例展示了在风速突变情况下,DSTATCOM如何迅速响应并稳定电压,确保电力系统的可靠运行。此外,文章还探讨了DSTATCOM在低电压穿越方面的应用及其控制策略。 适合人群:从事风电并网研究的技术人员、电力系统工程师以及相关领域的研究人员。 使用场景及目标:适用于希望深入了解风电并网技术细节的研究者和技术开发者,旨在帮助他们掌握DSTATCOM的工作原理及其在实际工程中的应用方法。 其他说明:文章提供了详细的仿真代码示例和参数调整技巧,有助于读者更好地理解和实践DSTATCOM在风电并网中的重要作用。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!
本电路默认最大功率追踪电压为18V。 太阳能板最大功率点电压VMPPT=1.205×(1+(Rmh1+Rmh2)/Rml)。 充电电压不能大于25V,最大充电电流小于等于4A
一类四正则小世界网络的生成树数目的算法.pdf
内容概要:本文详细介绍了基于Matlab 2021a的异步电机矢量控制系统中电流滞环控制的实现过程。首先,文章解释了电流环的整体结构,包括定子电流的坐标变换、转矩分量和励磁分量的分离以及旋转变压器模块的应用。接着,展示了电流滞环控制的核心代码,强调了带积分修正的滞环控制机制,并讨论了SVPWM模块的实现技巧。此外,文章探讨了速度环PI参数的自整定设计、谐波分析、磁链观测器的改进方案以及仿真加速技巧。最后,分享了一些实用的调试经验和仿真优化方法,如参数自适应调整、变步长求解器的选择和数据存储格式的优化。 适合人群:从事电机控制领域的研究人员和技术人员,尤其是对异步电机矢量控制和电流滞环控制感兴趣的读者。 使用场景及目标:适用于希望深入了解异步电机矢量控制系统中电流滞环控制实现细节的研究人员和技术人员。目标是帮助读者掌握电流滞环控制的关键技术和调试技巧,提高仿真实践能力。 其他说明:文中提供了丰富的代码片段和调试经验,有助于读者更好地理解和应用所介绍的技术。同时,报告中还包括详细的故障分析和解决方案,确保读者能够避免常见陷阱并顺利进行仿真。
内容概要:本文详细探讨了储能系统中双向DC/DC变换器并联运行时的下垂控制技术及其电流分配优化方法。首先介绍了下垂控制的基本概念,即通过虚拟电阻实现电流按比例分配,避免个别模块过载或欠载。接着讨论了电压补偿机制,防止负载变化引起母线电压大幅波动。文中提供了具体的Python代码示例,展示了如何模拟和实现下垂控制以及电压补偿。此外,还涉及了参数整定技巧,如虚拟电阻的选择、下垂系数的调整,并提出了动态虚拟阻抗的概念。最后,强调了实际调试过程中需要注意的问题,如线路阻抗的影响、低频振荡的抑制等。 适合人群:从事电力电子、储能系统设计与维护的技术人员,对下垂控制感兴趣的科研人员。 使用场景及目标:适用于储能系统的设计与优化,特别是多个双向DC/DC变换器并联运行的场合。主要目标是提高系统的稳定性和效率,确保电流均匀分配,同时保持良好的电压质量。 其他说明:文中提供的代码片段和调试经验有助于理解和实施下垂控制技术,对于实际工程项目具有较高的参考价值。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
内容概要:本文详细介绍了威纶通触摸屏与施耐德ATV12变频器之间的Modbus通讯方法,涵盖硬件接线、参数设置、控制程序编写以及调试技巧。首先,文章讲解了正确的硬件连接方式,强调了接线规范和注意事项,如使用带屏蔽的双绞线并确保正确接地。接着,针对ATV12变频器的具体参数设置进行了详尽说明,包括通信模式的选择、波特率、校验位等重要参数的配置。随后,文章展示了如何在威纶通触摸屏上创建Modbus RTU设备,并提供了具体的配置参数和控制命令示例。此外,文中还分享了一些常见的调试问题及其解决办法,如通讯超时、频率设定异常等。最后,给出了实用的调试建议,如使用串口助手抓包分析和加入通讯心跳检测等功能。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些负责PLC编程、HMI界面开发以及设备集成工作的专业人员。 使用场景及目标:适用于需要将威纶通触摸屏与施耐德ATV12变频器进行Modbus通讯连接的实际工程项目中,帮助技术人员顺利完成设备间的通讯配置,确保系统稳定可靠运行。 其他说明:本文不仅提供了详细的理论指导,还结合了丰富的实践经验,能够有效地提高读者在实际工作中解决问题的能力。同时提醒读者,在进行相关操作前务必仔细阅读官方文档,避免因误操作造成不必要的损失。
内容概要:本文详细记录了BLDC(无刷直流电机)在空载和带载条件下的转速阶跃响应及抗负载扰动的实验过程和结果。通过对不同条件下电机转速的变化进行模拟和实际测量,探讨了电机在不同工况下的表现及其背后的控制机制。文中不仅提供了具体的Python和C代码片段用于解释控制逻辑,还讨论了PID控制器的参数调整方法及其对电机性能的影响。此外,作者还分享了一些实验中遇到的问题及解决方案,如霍尔信号处理、PWM占空比控制、电流环检测等。 适合人群:从事电机控制研究的技术人员、电子工程专业的学生、对BLDC电机有兴趣的研究爱好者。 使用场景及目标:①理解BLDC电机在不同负载条件下的动态特性;②掌握PID控制器参数调整技巧;③学习如何处理电机控制中的常见问题,如霍尔信号处理、PWM控制等。 其他说明:文章通过生动的比喻和详细的代码解析,使复杂的电机控制概念变得易于理解。同时,作者分享了许多实践经验,有助于读者更好地理解和应用相关知识。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 编译闪电般迅速,并发性能卓越,部署轻松简单!Go 语言以极简设计理念和出色工程性能,成为云原生时代的首选编程语言。从 Docker 到 Kubernetes,全球顶尖科技企业都在采用 Go。点击了解 Go 语言的核心优势、实战窍门和未来走向,开启高效编程的全新体验!
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!
互联网大厂裁员背后的经济规律与增长天花板.mp4