vlc-3.0.8添加录像接口及rtsp流断流后内存暴涨问题解决

一、添加录像接口

  1. vlc-3.0.8/include/vlc/libvlc_media_player.h 中添加
LIBVLC_API int libvlc_media_player_recorder_start(libvlc_media_player_t *p_mi, const char* pFilePath, const char* pFileName);
LIBVLC_API int libvlc_media_player_recorder_stop(libvlc_media_player_t *p_mi);
  1. vlc-3.0.8/lib/media_player.c 中添加,也可在vlc-3.0.8/lib/video.c 中添加
int libvlc_media_player_recorder_start( libvlc_media_player_t *p_mi, const char* pFilePath, const char* pFileName )
{
    input_thread_t *p_input = libvlc_get_input_thread( p_mi );  
    if(p_input == NULL) return -1;    
 
    var_CreateGetString(p_input, "input-record-path");
    var_SetString( p_input, "input-record-path", pFilePath );	

    var_CreateGetString(p_input, "record-video-name");
    var_SetString( p_input, "record-video-name", pFileName );
   
    var_SetBool( p_input, "record", true);      
    vlc_object_release(p_input);  
    return 0;
}
int libvlc_media_player_recorder_stop( libvlc_media_player_t *p_mi )  
{  
    input_thread_t *p_input_thread;  
  
    p_input_thread = libvlc_get_input_thread( p_mi );  
    if( !p_input_thread ) return -1;  
  
    var_SetBool( p_input_thread, "record", false );  
  
    vlc_object_release( p_input_thread );  
    return 0;  
}
  1. 修改vlc-3.0.8/modules/stream_filter/record.c
把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 );
  1. 修改vlc-3.0.8/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 );
  1. 修改vlc-3.0.8/lib/libvlc.sym文件,添加libvlc_media_player_recorder_start 和
    libvlc_media_player_recorder_stop 建议放在libvlc_media_list_player_stop后面:
libvlc_media_list_player_stop
libvlc_media_player_recorder_start
libvlc_media_player_recorder_stop

二、解决rtsp流断流时内存暴涨问题。

  1. 修改vlc-3.0.8/modules/access/live555.cpp,TimeoutPrevention 函数直接返回,即函数内第一行 return;
static void TimeoutPrevention( void *p_data )
{
    return;
    demux_t *p_demux = (demux_t *) p_data;
    demux_sys_t *p_sys = p_demux->p_sys;
    char *bye = NULL;
    ...
}

参考:

  1. 录像接口添加
  2. 内存暴涨问题解决
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

水笙赵

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

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

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

打赏作者

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

抵扣说明:

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

余额充值