1、包含必须的头文件。
#include <iostream>
#include <vlc/vlc.h>
#include <SDL2/SDL.h>
2、示例。
int main()
{
// 初始化SDL
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
std::cerr << "无法初始化SDL" << std::endl;
return -1;
}
// 创建窗口
SDL_Window* window = SDL_CreateWindow("Camera Player", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
640, 480, SDL_WINDOW_SHOWN);
if (!window) {
std::cerr << "无法创建窗口" << std::endl;
return -1;
}
// 创建渲染器
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);
if (!renderer) {
std::cerr << "无法创建渲染器" << std::endl;
return -1;
}
// 初始化libVLC
libvlc_instance_t* vlcInstance = libvlc_new(0, NULL);
// 设置要播放的摄像机URL
const char* cameraUrl = "rtsp://your-camera-url";
libvlc_media_player_t* mediaPlayer = NULL;
libvlc_media_t* media = libvlc_media_new_location(vlcInstance, cameraUrl);
if (media) {
// 创建媒体播放器
mediaPlayer = libvlc_media_player_new_from_media(media);
if (mediaPlayer) {
// 将视频输出到指定窗口
libvlc_media_player_set_nsobject(mediaPlayer, SDL_GetWindowID(window));
libvlc_media_player_play(mediaPlayer);
// 播放视频直到收到退出信号
bool quit = false;
while (!quit) {
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
quit = true;
break;
}
}
SDL_Delay(10);
}
// 释放媒体播放器资源
libvlc_media_player_stop(mediaPlayer);
libvlc_media_player_release(mediaPlayer);
}
// 释放媒体资源
libvlc_media_release(media);
}
// 释放libVLC实例
libvlc_release(vlcInstance);
// 释放SDL相关资源
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}