我需要在 C++ 中创建一个使用 VLC 播放 YouTube 视频的函数。 当我播放视频时,没有任何反应,没有窗口打开,视频没有播放,也没有出现错误。 (我确信我正确下载了 VLC 和库,并将它们正确连接到我的项目,因为我创建了一个播放本地视频(下载到计算机的视频)的函数,并且运行良好)。 非常感谢。
这是我的代码:
#include <iostream>
#include <vlc/vlc.h>
static void handleVLCEvents(const libvlc_event_t* event, void* userData) {
switch (event->type) {
case libvlc_MediaPlayerEndReached:
std::cout << "End of video reached." << std::endl;
break;
default:
break;
}
}
int playVideo() {
libvlc_instance_t* vlcInstance = libvlc_new(0, nullptr);
libvlc_media_player_t* vlcMediaPlayer = libvlc_media_player_new(vlcInstance);
libvlc_event_manager_t* vlcEventManager = libvlc_media_player_event_manager(vlcMediaPlayer);
libvlc_event_attach(vlcEventManager, libvlc_MediaPlayerEndReached, handleVLCEvents, nullptr);
// Open a YouTube video
std::string youtubeURL = "https://www.youtube.com/watch?v=BZP1rYjoBgI";
libvlc_media_t* vlcMedia = libvlc_media_new_location(vlcInstance, youtubeURL.c_str());
libvlc_media_player_set_media(vlcMediaPlayer, vlcMedia);
libvlc_media_release(vlcMedia);
// Play the video
libvlc_media_player_play(vlcMediaPlayer);
// Keep the program running to display the video
std::cin.get();
// Clean up
libvlc_media_player_stop(vlcMediaPlayer);
libvlc_media_player_release(vlcMediaPlayer);
libvlc_release(vlcInstance);
return 0;
}
您已经差不多完成了,但是播放 YouTube 视频(或 m3u 播放列表)只需要几行代码。
您现在向 LibVLC 提供的是 YouTube 视频的 HTML 页面,而不是 YouTube 托管的视频文件的直接 URL。
为此,您需要解析媒体并播放其子项目(它指向实际的 URL,由 VLC 的 lua 脚本解码)。以下是伪代码中缺少的函数。
libvlc_media_parse_with_options(vlcMedia, libvlc_media_parse_network, -1);
libvlc_media_subitems(vlcMedia);
libvlc_media_player_set_media(vlcMediaPlayer, vlcMediaSubItem);