C++调用libVLC播放视频

1、下载libVLC的sdk

Index of /pub/videolan/vlc/

注意下载.7z结尾的

2、Visual Studio建立C++的windows控制台项目

 3、文件准备

(1)sdk文件夹解压缩到项目文件夹下

(2)在Debug下方压缩包内的几个文件

4、配置项目属性

 注意,别的教程有坑:libvlc.lib、libvlccore.lib

5、写代码

#include <windows.h>
#include <vlc/vlc.h>
#include <time.h>

int main(int argc, char* argv[])
{
    libvlc_instance_t* vlc_ins = NULL;
    libvlc_media_player_t* vlc_player = NULL;
    libvlc_media_t* vlc_media = NULL;

    const char* vlc_args[] =
    {
        "-I",
        "dummy",
        "--ignore-config",
        "--extraintf=logger",
        "--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, "f:\\dljwjt.mp4");
            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);
                // 这里是释放内存,但我测试的时候会有问题,还没仔细研究是为何
                // free(media_tracks);  // crash?

                // 把打开的媒体文件设置给播放器
                libvlc_media_player_set_media(vlc_player, vlc_media);

                // 因为是windows系统,所以需要设置一个HWND给播放器作为窗口,这里就直接使用桌面窗口,这里仅是测试
                libvlc_media_player_set_hwnd(vlc_player, ::GetDesktopWindow());
                // 开始播放视频
                libvlc_media_player_play(vlc_player);

                // 这里仅是为了打印一些信息出来,20秒后退出
                time_t last_time = time(NULL);
                while ((time(NULL) < (last_time + 200)))
                {
                    Sleep(10);
                    // 获取当前播放位置
                    libvlc_time_t play_time = libvlc_media_player_get_time(vlc_player);
                    printf("playing time : %lld ms\r", (__int64)(play_time));

                    // 获取媒体的状态
                    // libvlc_state_t media_state = libvlc_media_get_state(vlc_media);
                    // printf("\nmedia state : %d\n", (int)(media_state));
                }
                // 停止
                libvlc_media_player_stop(vlc_player);
                // 释放
                libvlc_media_release(vlc_media);
            }
            // 释放
            libvlc_media_player_release(vlc_player);
        }
        // 释放
        libvlc_release(vlc_ins);
    }
    return 0;
}

 6、提示:

(1)播放的文件名,自己修改

(2)这个程序是命令行程序,视频显示用桌面句柄

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
在 Android 上使用 libvlc 播放视频文件非常简单。libvlc 是一个强大的开源多媒体框架,它支持几乎所有常见的视频和音频格式。 首先,需要将 libvlc 添加到 Android 项目中。可以通过在项目的 build.gradle 文件中添加以下代码来实现: ```groovy dependencies { implementation 'org.videolan.android:libvlc-all:3.3.0' } ``` 在需要使用 libvlc 的 Activity 中,需要先初始化 libvlc。可以在 onCreate 方法中添加以下代码: ```java LibVLC libVLC = new LibVLC(); ``` 接下来,需要创建一个SurfaceView来显示视频。可以在布局文件中添加一个SurfaceView视图: ```xml <SurfaceView android:id="@+id/surfaceView" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 然后,在 Activity 中获取 SurfaceView 并设置播放器使用它来显示视频: ```java SurfaceView surfaceView = findViewById(R.id.surfaceView); IVLCVout ivlcVout = libVLC.getVLCVout(); ivlcVout.setVideoView(surfaceView); ivlcVout.attachViews(); ``` 最后,需要创建一个 MediaPlayer 实例来控制视频的播放。可以在 Activity 的 onCreate 方法中添加以下代码: ```java String filePath = "/path/to/video/file"; MediaPlayer mediaPlayer = new MediaPlayer(libVLC); mediaPlayer.setMedia(Uri.parse(filePath)); ``` 现在,可以使用 MediaPlayer 对象来控制视频的播放。例如,可以调用 mediaPlayer.play() 方法来开始播放视频。 当不需要播放视频时,可以释放 MediaPlayer 和 libvlc 资源,以释放内存和资源: ```java mediaPlayer.release(); libVLC.release(); ``` 以上就是如何在 Android 上使用 libvlc 播放视频文件的简单步骤。通过使用 libvlc,我们可以轻松实现高度定制的视频播放器,并支持各种视频格式和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值