libvlc的录像功能

最近看到http://blog.csdn.net/sooth2008/article/details/6787459这位网友的博客实现libvlc的录像功能,但是照这篇博客确实做不出来。下面有网友问他为什么做不出来,他也没有回答。我自己实践了一下发现需要注意几点。

1、添加libvlc_video_toggle_record的时候在include/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 );

注意前面的LIBVLC_API不能缺。

还有video.c是在lib/video.c目录。添加libvlc_video_toggle_record的实现部分。

光有以上这些是没有用的,重新编译后发现libvlc.dll中包含了libvlc_video_toggle_record的,但是libvlc.lib文件中不包含该函数,这样会提示连接器无法找到该函数。通过dll生成lib文件的方法发现生成的文件中也没有该函数。通过比较和实验发现还需要在lib/libvlc.sym文件中添加libvlc_video_toggle_record的声明。这样重新编译出来的lib文件就包含该函数。

2、可是按照这篇博客做出来的还是不能实现录像的功能,只有再分析一下这个函数了。待续....

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
//创建初始化播放器资源 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] extern public static IntPtr libvlc_new(int argc, IntPtr argv); //创建播放器实例 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr libvlc_media_player_new(IntPtr libvlc_instance); // 释放libvlc实例 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern void libvlc_release(IntPtr libvlc_instance); //获取库版本信息 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern String libvlc_get_version(); // 从视频来源(例如Url)构建一个libvlc_meida RTSP [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr libvlc_media_new_location(IntPtr libvlc_instance, IntPtr path); // 从本地文件路径构建一个libvlc_media rtsp串流不适合调用此接口 // [MarshalAs(UnmanagedType.LPStr)] string path [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr libvlc_media_new_path(IntPtr libvlc_instance, IntPtr path); /// /// 影片长度 /// /// /// [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr libvlc_media_player_get_length(IntPtr libvlc_media_player); //释放对象 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern void libvlc_media_release(IntPtr libvlc_media_inst); // 将视频(libvlc_media)绑定到播放器上 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern void libvlc_media_player_set_media(IntPtr libvlc_media_player, IntPtr libvlc_media); //创建(libvlc_media)播放窗口 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] publ
### 回答1: Android libvlc 是一个用于在 Android 平台上实现视频和音频播放的库。它是基于 VideoLAN 组织的开源项目 VLC 的移植版本。使用 Android libvlc,开发者可以在自己的应用程序中实现流畅的视频和音频的播放。 Android libvlc 提供了丰富的功能和灵活的接口。它支持多种视频和音频格式,包括常见的 MP4、AVI、MKV、MP3、AAC 等。并且,它还支持流媒体协议,如 RTSP、HLS、RTP、UDP 等,使开发者能够播放来自网络的流媒体内容。 在使用 Android libvlc 进行开发时,我们可以使用 libvlc 库提供的 API 进行视频和音频的播放控制。我们可以控制媒体的播放、暂停、停止、快进、快退等操作。此外,我们还可以设置播放器的音量、播放器的视频显示位置、视频的缩放比例等。 Android libvlc 还支持字幕和视频滤镜功能。开发者可以实现对视频的亮度、对比度、饱和度等参数进行调整,以及添加字幕文件到视频中。 总结来说,Android libvlc 是一个功能强大且易于使用的库,适用于需要在 Android 应用程序中实现视频和音频播放的开发者。无论是播放本地存储的媒体文件,还是从网络上获取的流媒体内容,都可以通过 Android libvlc 来实现。 ### 回答2: Android LibVLC是一个开源的多媒体框架,它提供了许多功能强大的多媒体播放器的API。使用Android LibVLC,开发者可以在Android设备上轻松地实现视频和音频播放功能。 Android LibVLC主要由两个部分组成:VLC核心引擎和Android的JNI封装。VLC核心引擎是由C/C++编写的,具有高度的可移植性和跨平台性。它可以在各种操作系统上运行,并支持多种格式的音频和视频文件。Android的JNI封装则是为了方便开发者在Android平台上调用和使用VLC核心引擎提供的功能。 通过Android LibVLC,开发者可以实现以下功能: 1. 视频播放:可以播放本地和远程的视频文件,支持常见的视频格式,如MP4、AVI、MKV等。 2. 音频播放:可以播放本地和远程的音频文件,支持常见的音频格式,如MP3、WAV、FLAC等。 3. 媒体控制:可以实现媒体的播放、暂停、停止、快进、快退等控制操作。 4. UI自定义:可以根据需要自定义播放器的UI界面,包括播放按钮、进度条、音量控制等。 5. 弹幕功能:可以实现弹幕的显示和发送,增加了对视频观看体验的互动性。 6. 跳转功能:可以实现定位到视频或音频的指定时间点,方便用户快速查找想要的内容。 总之,Android LibVLC是一个功能强大的框架,可以帮助开发者轻松实现多媒体播放功能,并提供了丰富的接口供开发者进行定制化开发。无论是开发视频播放器还是音频播放器,Android LibVLC都是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值