VLC3.0.7.1 增加支持录像功能接口

原文链接:https://blog.csdn.net/bersonking/article/details/85267405

原文为vlc3.0.4版本,修改后发现录制会把视频全部缓存到内存,停止录制才会到本地文件,改为3.0.7.1版本则无此问题

具体方法如下:

一、修改源代码

1、修改vlc-3.0.7/lib目录下的video.c文件中新增接口libvlc_video_toggle_record( libvlc_media_player_t *p_mi, const char *psz_filepath,  const char *psz_filename );建议放在libvlc_video_take_snapshot()这个函数后面。

int libvlc_video_toggle_record( libvlc_media_player_t *p_mi,
                                const char *psz_filepath, 
                                const char *psz_filename )
{
    assert( psz_filepath );
    assert( psz_filename );
 
    input_thread_t *p_input = libvlc_get_input_thread( p_mi );
    if(p_input == NULL)
        return -1;    
    var_Create( p_input, "input-record-path", VLC_VAR_STRING );
    var_SetString( p_input, "input-record-path", psz_filepath );    
    var_Create( p_input, "record-video-name", VLC_VAR_STRING );
    var_SetString( p_input, "record-video-name", psz_filename );
    var_ToggleBool( p_input, "record");
    vlc_object_release(p_input);
    return 0;
}
然后,在vlc-3.0.4/vlc/libvlc_media_player.h中添加LIBVLC_API int libvlc_video_toggle_record( libvlc_media_player_t *p_mi, const char *psz_filepath,  const char *psz_filename );

最后,在vlc-3.0.4/lib/libvlc.sym文件中添加libvlc_video_toggle_record。建议放在libvlc_video_take_snapshot之后。这一步不能少,否则在libvlc.dll没有这个函数接口

2、第一,需要修改vlc-3.0.4/modules/stream_filter/record.c文件中Start().在start()中,

把psz_file = input_CreateFilename( s->p_input, psz_path, INPUT_RECORD_PREFIX, psz_extension );

替换为

char *psz_recordVideoFileName = var_CreateGetNonEmptyString( s->p_input, "record-video-name" );
psz_file = input_CreateFilename( s->p_input, psz_path, psz_recordVideoFileName, psz_extension );

------------------------------------------------------

第二,修改vlc-3.0.7/src/input/es_out.c中EsOutSetRecord()函数,把

char *psz_file = input_CreateFilename( p_input, psz_path, INPUT_RECORD_PREFIX, NULL );

替换为

 char *psz_recordVideoFileName = var_CreateGetNonEmptyString( p_input, "record-video-name" );
 char *psz_file = input_CreateFilename( p_input, psz_path, psz_recordVideoFileName, NULL );

若想任意设置录像文件的名称,这一步必须做。若用libvlc默认录像文件名称,这一步可省略。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值