VLC简单创建和错误修复
来源:互联网 发布:男友尺寸知乎 编辑:程序博客网 时间:2024/06/04 21:47
关于VLC SDK的下载
- http://www.videolan.org/vlc/
- window下的开发包、安装文件http://www.videolan.org/vlc/download-windows.html
VLC简单创建借鉴
http://blog.sina.com.cn/s/blog_62949ff40101edml.html
1、在工程中设置好vlc的 include和lib路径,一般VLC sdk路径是C:\Program Files\VideoLAN\VLC\sdk
2、复制C:\Program Files\VideoLAN\VLC下面的 libvlc.dll, libvlccore.dll,plugins目录到工程debug目录,如果是release需要复制到release目录,否侧就会出现下面所说的错误。
#include "stdafx.h"#include <iostream>using namespace std;void test1() { libvlc_instance_t* vlc_ins = NULL; libvlc_media_player_t* vlc_player = NULL; libvlc_media_t* vlc_media = NULL; const char* vlc_args[] = {"-I", "dummy", "--ignore-config", "--extraintf=logger", "--verbose=2"}; //创建一个VLC实例,release版本在此处会crash vlc_ins = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args); if (vlc_ins != NULL) { //创建一个VLC播放器 vlc_player = libvlc_media_player_new(vlc_ins); if (vlc_player != NULL) { //通过文件路径创建一个媒体实例 vlc_media = libvlc_media_new_path(vlc_ins, "D:\\visumotionlogo.mp4"); if (vlc_media != NULL) { //解析媒体实例 libvlc_media_parse(vlc_media); //获取媒体文件的播放长度,返回ms libvlc_time_t duration = libvlc_media_get_duration(vlc_media); //此处是获取媒体包含多个的视频和音频轨以及其它类型的轨道信息 libvlc_media_track_info_t* media_tracks = NULL; int trackCount = libvlc_media_get_tracks_info(vlc_media, &media_tracks); //这里是释放内存,但我测试的时候会有问题,还没仔细研究是为何 //free(media_tracks); //crash? //把打开的媒体文件设置给播放器 libvlc_media_player_set_media(vlc_player, vlc_media); // 因为是windows系统,所以需要设置一个HWND给播放器作为窗口,这里就直接使用桌面窗口,这里仅是测试 libvlc_media_player_set_hwnd(vlc_player, ::GetDesktopWindow()); //开始播放视频 libvlc_media_player_play(vlc_player); //这里仅是为了打印一些信息出来,20秒后退出 time_t last_time = time(NULL); while ((time(NULL) < (last_time + 20))) { Sleep(10); //获取当前播放位置 libvlc_time_t play_time = libvlc_media_player_get_time(vlc_player); printf("playing time : %lld ms\r", (__int64)(play_time)); //获取媒体的状态 //libvlc_state_t media_state = libvlc_media_get_state(vlc_media); //printf("\nmedia state : %d\n", (int)(media_state)); } libvlc_media_player_stop(vlc_player);//停止 libvlc_media_release(vlc_media);//释放 } libvlc_media_player_release(vlc_player);//释放 } libvlc_release(vlc_ins);//释放 } } void test2() { libvlc_instance_t* inst; libvlc_media_player_t* mp; libvlc_media_t* m; //init vlc modules, should be done only once inst = libvlc_new(0, NULL); //Create a new item m = libvlc_media_new_path(inst, "D:\\visumotionlogo.mp4"); //Create a media player playing environment mp = libvlc_media_player_new_from_media(m); libvlc_media_parse(m); libvlc_time_t duration = libvlc_media_get_duration(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_drawable_t drawable = xdrawable; //or on windows void *drawable = &g_hwnd; libvlc_media_player_set_hwnd(mp, drawable); #endif // play the media_player libvlc_media_player_play(mp); Sleep((DWORD)duration); //Let it play a bit //Stop playing libvlc_media_player_stop(mp); // Free the media_player libvlc_media_player_release(mp); libvlc_release(inst); } int main(int argc, char* argv[]){ //test1(); test2(); cout<<"ok!"<<endl; return 0; }
遇到的问题及解决 转文http://blog.csdn.net/qtbmp/article/details/39399733
[0x99e58f0] main libvlc error: No plugins found! Check your VLC installation. 和 函数libvlc_new一直返回空
这两个问题的解决方法是:
(1)由于创建的工程是非安装版的播放器,因此需要VLC的plugins,该文件夹里面包含播放器需要的各种库文件。在编译的时候,把plugins文件夹放在debug的文件夹下。
(2)在初始化的时候,参数设置为vlc_args[vlc_args_num++] = “–ignore-config”;
0 0
- VLC简单创建和错误修复
- 解决IE错误,简单修复IE
- victoria修复和检查磁盘错误
- Android 异常错误收集和修复
- vlc编译错误
- vlc编译错误
- VLC编译错误
- VLC创建http流
- 【VLC】创建管道
- 简单的bug修复和优化
- VLC播放简单流程
- linux编译VLC,常见错误
- linux编译VLC,常见错误
- vlc-nox创建的文件
- ExtJS 4.0.1发布:提高性能和错误修复
- BCD错误的修复和Win7启动备份方法
- BCD错误的修复和Win7启动备份方法
- 《深入浅出MyBatis技术原理与实战》修复错误和歧义
- MyEclipse快捷键大全
- ListView 使用arrayadapter初始化数据
- 通过代码实现---Switch Ribbon Category
- Android-服务与广播接收者实现本地音乐播放
- Android 系统自带输入法的表情显示 -项目总结
- VLC简单创建和错误修复
- Java多线程 -- 线程的调度优先级
- android 编译FFmpeg
- A Round Peg in a Ground Hole(凸包应用POJ 1584)
- Stopwatch 监测一段时间内一个任务是否完成
- RecyclerView添加Header和Footer
- Centos7开放端口
- 一次干掉n个同一个服务启动的进程
- sql注入原理详解(一)