1、包含必须的头文件。
#include <vlc/vlc.h>
#include <SDL2/SDL.h>
2、示例。
int main() {
// 初始化SDL
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
SDL_Log("无法初始化SDL: %s", SDL_GetError());
return -1;
}
// 创建窗口和渲染器
SDL_Window* window = SDL_CreateWindow("Camera Player", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
640, 480, SDL_WINDOW_SHOWN);
if (!window) {
SDL_Log("无法创建窗口: %s", SDL_GetError());
return -1;
}
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (!renderer) {
SDL_Log("无法创建渲染器: %s", SDL_GetError());
return -1;
}
// 创建libVLC实例
libvlc_instance_t* vlcInstance = libvlc_new(0, NULL);
if (!vlcInstance) {
SDL_Log("无法创建libVLC实例");
return -1;
}
// 设置视频输出回调函数
libvlc_video_set_callbacks(vlcInstance, NULL, NULL, NULL, NULL);
// 创建媒体播放器
libvlc_media_player_t* mediaPlayer = libvlc_media_player_new(vlcInstance);
if (!mediaPlayer) {
SDL_Log("无法创建媒体播放器");
return -1;
}
// 指定要播放的视频地址
const char* url = "rtsp://your_camera_url";
libvlc_media_t* media = libvlc_media_new_location(vlcInstance, url);
libvlc_media_player_set_media(mediaPlayer, media);
// 将视频输出到SDL的渲染器
libvlc_media_player_set_nsobject(mediaPlayer, (void*)renderer);
// 开始播放
libvlc_media_release(media);
libvlc_media_player_play(mediaPlayer);
// 进入主循环
SDL_Event event;
bool quit = false;
while (!quit) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
quit = true;
}
}
// 清空并更新渲染器
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}
// 释放资源
libvlc_media_player_stop(mediaPlayer);
libvlc_media_player_release(mediaPlayer);
libvlc_release(vlcInstance);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}