zoukankan      html  css  js  c++  java
  • 添加VLC录像API

    最近使用VLC播放RTSP数据想在本地截图录像,但libvlc中并不包含录像api,网上找到一些资料,自己添加这个接口并测试成功。接口主要是按照官方网站来做的(https://patches.videolan.org/patch/606/)。我是用的源码是最新的,编译过程中很顺利,前提是安装好各种依赖包。测试代码如下:
    #include <vlc/vlc.h>
    #include <assert.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    #include <unistd.h>
    
    static const char * test_defaults_args[] = {
        "-v",
        "--ignore-config",
        "-I",
        "dummy",
        "--no-media-library"
    };
    
    static const int test_defaults_nargs =
        sizeof (test_defaults_args) / sizeof (test_defaults_args[0]);
    
    int main (void)
    {
    
        libvlc_instance_t *instance;
        libvlc_media_t *media;
        libvlc_media_player_t *player;
        const char * file = "rtsp://192.168.1.68";
    
        //instance = libvlc_new (test_defaults_nargs, test_defaults_args);
        instance = libvlc_new (0, NULL);
        assert (instance != NULL);
    
        //打开文件
        //media = libvlc_media_new_path (instance, file);
        //打开串流
        media = libvlc_media_new_location (instance, file);
        assert (media != NULL);
    
        player = libvlc_media_player_new_from_media (media);
        assert (player != NULL);
    
        libvlc_media_release (media);
    
        libvlc_media_player_play (player);
        printf("play
    ");
        libvlc_media_player_record_start(player, "testfile");
        printf("record
    ");
    
        sleep(10*10);
    
        libvlc_video_take_snapshot(player,0,"test.jpg",0,0);
    
        printf("%d
    ", libvlc_media_player_get_state(player));
        printf("stop record
    ");
        libvlc_media_player_record_stop(player);
        printf("stop play
    ");
        //libvlc_media_player_stop (player);
        printf("player release
    ");
        libvlc_media_player_release (player);
        printf("release
    ");
        libvlc_release (instance);
        return 0;
    }

    很惊讶选项里面竟然没有C...。

    编译:gcc test.c -o test -lvlc

    运行之后截图录像均正常。这里libvlc_media_player_stop()注销是因为有些情况下这个函数会造成死锁,这个涉及到线程安全的一些问题,以后再研究。

  • 相关阅读:
    LUA 协程
    LUA GC 简单测试
    软件重构-笔记
    托管执行过程
    文件夹 加密
    db 文件 查看 打开 工具 db 中文 版 navicat 中文
    qq sid qq sid 是什么 qq sid 怎么用
    windows系统,联系人文件。个性化。
    csdn 音乐 怎么拦截 提交后的程序 csdn 栏目 音乐 csdn 添加 音乐
    CSDN博客栏目设置个性化
  • 原文地址:https://www.cnblogs.com/shulianghe/p/3724127.html
Copyright © 2011-2022 走看看