更改VLC源码 实现使用libVLC录像功能

        VLC的强大功能我就不赘述了,相信看到这篇文章的朋友都已经有所了解了,如果还不太清楚,可以访问http://www.videolan.org/vlc/features.html.         首先大家需要下载一份VLC的源码,地址http://www.videolan.org/vlc/download-sources.html 编译方法上面也有阐述,不过根据我的经验,希望大家不要去尝试在windows上去编译VLC,而是在buntu/fedora或是其他的linux操作系统上使用cross_compile去编译各个平台上的VLC.这个方法也是VLC官网上推荐的方法.

         进入正题,如何使libVLC支持录像功能(VLC本身带有录像功能,但是我也不知道为什么vlc官方确没有在libVLC中加入这一功能,出于保守?)

          1.添加申明函数:找到include\vlc\libvlc_media_player.h文件,搜索libvlc_video_take_snapshot(实现截图功能的)这个函数,之所以我提到这个函数,是因为实现录像功能的函数与这个函数非常相像,如果想添加另外的功能,也可以参照VLC已有的功能函数去实现.找到libvlc_video_take_snapshot后,在其后面添加名为VLC_PUBLIC_API int libvlc_video_toggle_record( libvlc_media_player_t *p_mi,const char *psz_filepath, const char *psz_fileame );的录像函数,我的录像函数的思想是这样的:调用一次时开始录像,再调用一次时停止录像.所以名为toggle.这样申明函数就添加好了.

          2.添加实现函数:找到src\control\video.c ,然后添加函数实现如下:

int libvlc_video_toggle_record( libvlc_media_player_t *p_mi,
                                const char *psz_filepath, const char *psz_filename )
{
	input_thread_t *p_input = libvlc_get_input_thread( p_mi );
	if(p_input == NULL)
		return -1;	
	var_SetString( p_input, "input-record-path", psz_filepath );	
	var_SetString( p_input, "sout-record-dst-prefix", psz_filename );
	var_ToggleBool( p_input, "record");
	vlc_object_release(p_input);
	return 0;
}

  3.修改好上述文件后,重新编译VLC,这样libvlc.dll中就有了录像函数了.

 

源代码下载:http://download.csdn.net/detail/sooth2008/4735952

  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
使用VLC实现RTP流的下载功能并保存成MP4文件,可以按照以下步骤进行操作: 1. 初始化VLC库。使用`libvlc_new()`函数创建一个VLC实例并初始化。 2. 创建一个媒体。使用`libvlc_media_new_location()`函数创建一个媒体,并将RTP流的URL作为参数传递给它。 3. 创建一个媒体播放器。使用`libvlc_media_player_new_from_media()`函数创建一个媒体播放器,并将上一步创建的媒体作为参数传递给它。 4. 创建一个文件输出流。使用`libvlc_media_add_option()`函数为媒体对象添加一个输出选项,将输出文件的路径和格式设置为MP4。例如,可以添加类似于`--sout=#transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100}:std{access=file,mux=mp4,dst=output.mp4}`的选项。 5. 设置回调函数。使用`libvlc_media_player_set_media()`函数将媒体设置给媒体播放器,并使用`libvlc_media_player_set_callbacks()`函数和`libvlc_media_player_set_format()`函数设置回调函数,以便在下载过程中处理数据。 6. 开始播放。使用`libvlc_media_player_play()`函数开始播放RTP流。 7. 在回调函数中处理数据。在回调函数中,你将收到RTP流的每一帧数据。你可以在回调函数中将数据写入到文件中,实现下载功能。 8. 等待下载完成。可以使用循环来等待下载完成,或者在下载完成时通过回调函数进行通知。 请注意,以上步骤提供了一个基本的框架来实现RTP流的下载功能,并保存成MP4文件。具体的实现方式可能会有所不同,取决于你使用的编程语言和操作系统。你需要查阅相关的文档和示例代码来获取更详细的信息。另外,请确保你了解并遵守相关的法律和使用协议,以便在使用RTP流时不会侵犯版权或违反法律规定。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值