使用vlc sdk播放rtsp视频流

  • Post author:
  • Post category:其他


Vc6.0环境下:

1 工具—》选项—》目录—》include files:指定vlc安装目录;用于#include <include\vlc\vlc.h>

–》library files:指定vlc安装目录;用于#pragma comment(lib, “libvlc.lib”)

2 包含头文件会报错,需要在文件头加上:#define WIN32_LEAN_AND_MEAN

3 在工程目录debug下放入一下文件,在vlc安装目录下拷贝过来;

4 到此,配置完成。开始播放停止源代码;

Vs2010环境下:

1 在所建立工程 –》属性 –》VC++目录 包含目录和库目录下分别指定vlc安装目录下的头文件和库文件路径;

2 关于数据类型会报错。需要在文件中加入:

#define int64_t long

#define uint32_t int

3在工程目录debug或者release下放入文件,在vlc安装目录下拷贝过来;

plugins文件夹

libvlc.dll

libvlc.lib

libvlccore.dll

libvlccore.lib

4 到此,配置完成。开始播放停止源代码;

引用:http://blog.sina.com.cn/s/blog_62a8419a01014eey.html  《阿东的程序人生》

源代码:

#define WIN32_LEAN_AND_MEAN

#include <stdio.h>

#include <tchar.h>

#include <time.h>

#include <windows.h>

#include <include\vlc\vlc.h>

#pragma comment(lib, “libvlc.lib”)

#pragma comment(lib, “libvlccore.lib”)

libvlc_media_player_t * vlc_player = NULL;

libvlc_instance_t *     vlc_ins    = NULL;

libvlc_media_t *        vlc_media  = NULL;

//打开视频流

int fun()

{




//RTSP


地址



char play_address[]=”rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp”;



FreeConsole();



const char * vlc_args[] =



{




“-I”,



“dummy”,



“–ignore-config”,

//


“–extraintf=logger”,//dos打印信息 关掉



“–verbose=2”,



};



// 创建一个VLC实例



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, play_address);



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);



// 把打开的媒体文件设置给播放器



libvlc_media_player_set_media(vlc_player, vlc_media);



// 因为是windows系统,所以需要设置一个HWND给播放器作为窗口,这里就直接使用桌面窗口,这里仅是测试



libvlc_media_player_set_hwnd(vlc_player,  ::GetDesktopWindow());//::GetDesktopWindow()使用具体窗口代替



// 开始播放视频



libvlc_media_player_play(vlc_player);



}



}



}



return 0;

}


//关闭视频流

int funclose()

{




libvlc_media_player_stop(vlc_player);



libvlc_media_release(vlc_media);



libvlc_media_player_release(vlc_player);



libvlc_release(vlc_ins);



return 0;

}

int main(int argc, char* argv[])

{




fun();



Sleep(10000);



funclose();

}



版权声明:本文为qin5016原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。