首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LIBVLC保存视频

使用LIBVLC保存视频
EN

Stack Overflow用户
提问于 2019-03-22 19:09:59
回答 1查看 1.9K关注 0票数 0

我需要流一个视频文件并使用LIBVLC保存它。以下是我迄今所做的工作:

代码语言:javascript
复制
libvlc_media_t* vlcMedia = nullptr;
libvlc_instance_t* vlcInstance = libvlc_new(0, nullptr);
vlcMedia = libvlc_media_new_location(vlcInstance, aUri);
if(nullptr != vlcMedia)
{
    libvlc_media_player_t* vlcMediaPlayer = libvlc_media_player_new_from_media(vlcMedia);
    if(nullptr != vlcMediaPlayer)
    {
        libvlc_media_release(vlcMedia);
        libvlc_event_manager_t* vlcMediaManager = libvlc_media_player_event_manager(vlcMediaPlayer);
        if(nullptr != vlcMediaManager)
            libvlc_event_attach(vlcMediaManager, libvlc_MediaPlayerEndReached, OnStopped, this);
        libvlc_media_player_set_hwnd(vlcMediaPlayer, Handle);
        libvlc_media_player_play(vlcMediaPlayer);
    }
}

这将连接到远程媒体并开始播放视频。问题是我如何指导它来保存视频?我找不到API调用。

谢谢

相同的

由于@mtz,解决方案是添加:

代码语言:javascript
复制
libvlc_media_add_option(vlcMedia,":sout=#duplicate{dst=display,dst=std{access=file,mux=mp4,dst=xyz.mp4}");

在打电话给libvlc_media_new_location之后。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-25 16:58:28

这里有一个C#版本,您可以很容易地适应C/C++

代码语言:javascript
复制
var currentDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
var destination = Path.Combine(currentDirectory, "record.ts");

// Load native libvlc library
Core.Initialize();

using (var libvlc = new LibVLC())
using (var mediaPlayer = new MediaPlayer(libvlc))
{
    // Redirect log output to the console
    libvlc.Log += (sender, e) => Console.WriteLine($"[{e.Level}] {e.Module}:{e.Message}");

    // Create new media with HLS link
    var media = new Media(libvlc, "http://hls1.addictradio.net/addictrock_aac_hls/playlist.m3u8", FromType.FromLocation);

    // Define stream output options. 
    // In this case stream to a file with the given path and play locally the stream while streaming it.
    media.AddOption(":sout=#file{dst=" + destination + "}");
    media.AddOption(":sout-keep");

    // Start recording
    mediaPlayer.Play(media);

    Console.WriteLine($"Recording in {destination}");
    Console.WriteLine("Press any key to exit");
    Console.ReadKey();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55306361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档