基于Libvlc库的视频录制功能简述(C#)

最近在学习libvlc库,如下讲述如何播放网络或本地视频并进行视频录制的功能:
一、先看效果:
1-1、主界面:首先Init环境初始化,然后可选择播放网络流或是本地视频文件;


1-2、若播放网络流,则在Network左边的textbox中输入网络流地址,并通过Select Save Path选择录像的存储目录;


1-3、点击REC即可进行录制,录制存储的地址即选择的存储目录,如下图:


1-4、点击RECing...后,可在存储目录下找到刚才存储的视频;

1-5、也可点击Location进行本地视频播放;


二、详细:
2-1:需要使用带有视频录制的libvlc库,可参考:https://download.csdn.net/download/avsuper/9919212;
2-2:MediaPlyaer接口编写,可参考:https://blog.csdn.net/lassewang/article/details/52240894,但是需要进行改写,如下:
①导入库函数进行添加:
     [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, CharSet = CharSet.Ansi)]
     internal static extern int libvlc_media_player_recorder_start(libvlc_media_player_t libvlc_media_player, IntPtr path);

     [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
     internal static extern int libvlc_media_player_recorder_stop(libvlc_media_player_t libvlc_media_player);
如果喜欢改的话还可添加另一个函数(对于本例可不添加):
     [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
     internal static extern void libvlc_media_add_option(libvlc_media_t p_md, String psz_option);
②共有函数中进行添加功能函数:

        /// <summary>
        /// 视频存储开始
        /// </summary>
        /// <param name="libvlc_media_player"></param>
        /// <param name="url"></param>
        public static void Save_MediaPlayer(libvlc_media_player_t libvlc_media_player, string url)
        {
            IntPtr pMrl = IntPtr.Zero;
            try
            {
                if (url == null ||
                    libvlc_media_player == IntPtr.Zero ||
                    libvlc_media_player == null)
                {
                    return;
                }
                pMrl = StrToIntPtr(url);
                if (pMrl == null || pMrl == IntPtr.Zero)
                {
                    return;
                }
                SafeNativeMethods.libvlc_media_player_recorder_start(libvlc_media_player, pMrl);
            }
            catch (Exception)
            {
                
            }
        }
        /// <summary>
        /// 停止录像功能,存储
        /// </summary>
        /// <param name="libvlc_media_player"></param>
        public static void UnSave_MediaPlayer(libvlc_media_player_t libvlc_media_player)
        {
            try
            {
                if (libvlc_media_player == IntPtr.Zero ||
                    libvlc_media_player == null)
                {
                    return;
                }
                SafeNativeMethods.libvlc_media_player_recorder_stop(libvlc_media_player);
            }
            catch (Exception)
            {
                throw;
            }
        }
这样就可以使用,libvlc的录像功能了,只需调用Save_MediaPlaye和UnSave_MediaPlaye即可,(注:调用Save_MediaPlaye后并不会立即出现存储的视频,调用UnSave_MediaPlaye后就会在存储视频的地址找到存储好的视频)。

第一次写,有很多“规矩不了解,以后逐步进行完善。

源码:https://download.csdn.net/download/hopeless123/10311625
--------------------- 
 
原文:https://blog.csdn.net/hopeless123/article/details/79715298 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: libvlc是一个开源的跨平台多媒体框架,提供了许多功能,包括录制视频和音频的能力。 在使用libvlc进行录制的过程中,我们需要进行一些基本的操作。首先,我们需要创建一个libvlc实例,然后使用该实例来创建一个媒体对象。接下来,我们可以设置媒体对象的输入源,可以是摄像头、屏幕或者媒体文件。 一旦我们完成了设置,就可以开始录制了。我们可以调用libvlc_media_player_record_start函数来启动录制过程,该函数会将媒体流写入指定的文件或输出流中。我们还可以指定录制的格式、编码器和其他参数。 在录制过程中,我们可以使用libvlc_media_player_record_pause和libvlc_media_player_record_resume函数来暂停和恢复录制。我们还可以调用libvlc_media_player_record_stop函数来停止录制并释放相关资源。 值得注意的是,libvlc录制功能的可用性取决于所使用的平台和操作系统。一些平台可能不支持录制功能,或者只支持特定的输入源或格式。因此,在使用libvlc进行录制时,我们需要检查文档或参考相关示例代码,并根据需要进行适当的配置和调整。 总的来说,libvlc提供了一个简单而强大的录制功能,可以帮助开发者在跨平台环境中方便地进行视频和音频的录制操作。 ### 回答2: Libvlc是一个功能强大的多媒体框架,可以用于录制音频和视频。使用libvlc录制音频和视频非常简单。 首先,需要调用libvlc的初始化函数,创建一个libvlc实例。接下来,我们需要为录制配置一个媒体输出对象。通过设置输出格式、编码器、文件路径等参数,我们可以指定录制的详细信息和目的地。 在录制之前,我们还需要创建一个媒体对象,并设置其源。可以是一个本地文件、网络媒体流或者屏幕采集。然后,我们可以调用libvlc录制函数,开始录制。 在录制过程中,可以根据需要进行一些操作,比如暂停、继续、停止等。可以通过调用相应的libvlc函数来实现这些功能。 最后,在录制完成之后,我们需要释放资源,关闭libvlc实例。 总结起来,使用libvlc录制音频和视频只需几个简单的步骤:初始化libvlc实例,配置录制参数,创建媒体对象并设置源,开始录制,根据需要进行一些操作,并在录制结束后释放资源。这样,我们就可以轻松地实现音频和视频录制功能。 ### 回答3: libvlc是一个用C语言编写的开源多媒体框架,用于视频和音频的录制和播放。 在使用libvlc进行录制时,首先需要通过libvlc实例化一个播放器。然后,使用libvlc_media_new_path函数创建一个新的媒体文件。接下来,通过libvlc_media_player_set_media将媒体文件设置给播放器。然后,通过libvlc_media_player_play函数开始播放录制的内容。 在录制过程中,可以使用libvlc_video_set_format和libvlc_audio_set_format函数设置想要的视频和音频格式。还可以使用libvlc_video_set_callbacks和libvlc_audio_set_callbacks函数指定回调函数,用于处理视频和音频数据。通过回调函数,可以对录制视频和音频进行处理,例如压缩或加密。 在录制完成后,可以使用libvlc_capture_stop函数停止录制。然后,通过libvlc_media_release和libvlc_instance_release函数释放资源。 总结来说,使用libvlc录制视频和音频需要实例化一个播放器、创建媒体文件、设置格式和回调函数,然后开始录制,最后停止录制并释放资源。libvlc提供了丰富的功能和灵活性,可以满足各种录制需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值