VLC播放器Demo(录像,截图等功能),Android播放器Demo可二次开发。ffmpeg-Kit (录像,截图,合流播放,合流推送,等一些列视频操作功能),可二次开发。

VLC播放器Demo(录像,截图等功能),可二次开发。

ffmpeg-Kit (录像,截图,合流播放,合流推送,等一些列视频操作功能),可二次开发。

如果帮助的到了您,请您不要吝啬你的Star,先谢谢您的点赞(Star),3Q。
如果帮助的到了您,请您不要吝啬你的Star,先谢谢您的点赞(Star),3Q,3Q。
如果帮助的到了您,请您不要吝啬你的Star,先谢谢您的点赞(Star),3Q,3Q,3Q。
  • vlc编译,源库地址是这个博主的:https://github.com/mengzhidaren/Vlc-sdk-lib 可以去star支持下

  • ffmpeg-kit编译,源库地址是这个博主的:https://github.com/arthenica/ffmpeg-kit 可以去star支持下

  • 基于VLC的播放器(Android
    录像,截图),可做二次开发,支持在点播或者直播,播放的时候:录像,截图等等功能。支持RTSP,RTMP,HTTP,HLS,HTTPS等等。支持所有CPU架构。

  • 使用VLC,作为播放器:实现,录像,截图功能(点播,直播都支持!) 特意花时间写了个Demo开源出来,希望能帮助到需要的人!

  • 使用VLC,作为播放器:实现,录像,截图功能(点播,直播都支持!) 特意花时间写了个Demo开源出来,希望能帮助到需要的人!!

  • ffmpeg-Kit 可以执行任何ffmpeg命令行操作,Demo中对直播流(也可以本地文件)进行了:录像,截图等等功能,也可以做任何你想要的操作,比如将直播音频流和视频流合流播放,合流推流等等操作。

  • ffmpeg-Kit,可以实现任何ffmpeg命令行操作, 特意花时间写了个Demo开源出来,希望能帮助到需要的人!

  • ffmpeg-Kit,可以实现任何ffmpeg命令行操作, 特意花时间写了个Demo开源出来,希望能帮助到需要的人!!

动图欣赏

  • 如果看不到gif动图,请科学上网查看gif效果图,或者下载项目之后本地打开。在picture文件夹/gif文件夹/vlc.gif和ffmpeg.gif

  • VLCDemo测试动图欣赏vlc.gif
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zz2VVdKg-1686212328873)(picture/gif/vlc.gif)]

  • FfmpegDemo测试动图欣赏ffmpeg.gif
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hr6V5tbV-1686212328874)(picture/gif/ffmpeg.gif)]

VLC播放器,使用指南
  • 请直接,下载Demo查看,通俗易懂,谢谢。

  • 主要功能(录像,截图),我封装在MyControlVlcVideoView,这个自定义View里面去了,可以直接下载Demo搜索“截图”,“录像”,功能查看代码即可。

  • 主要功能(录像,截图),我封装在MyControlVlcVideoView,这个自定义View里面去了,可以直接下载Demo搜索“截图”,“录像”,功能查看代码即可。

  • VlcPlayerActivity:此界面是播放界面:只做视频的播放 mPlayerView.setStartLive(mPath01);

  • MyControlVlcVideoView:自己封装的播放控制View:我把所有功能都封装在这个View里面。如:截图,录像,设置静音播放,手势触摸调节亮度和声音,切换高清播放,打开相册,全屏显示,锁屏功能,设置播放标题,退出界面等等(
    可以自行添加自己需要的功能)。

ffmpeg-kit,使用指南
  • 请直接,下载Demo查看,通俗易懂,谢谢。

  • 主要功能(录像):

         //电视台直播流
        //private String mVideoPath = "http://220.161.87.62:8800/hls/0/index.m3u8";
        //录像命令
        // private String CMD = "-i http://220.161.87.62:8800/hls/0/index.m3u8 -c copy ";
              //获取uri地址
              Uri uri = FileUtil.createVideoPathUri(MainActivity.this);
              //获取存储mp4文件地址
              String outputVideoPath = FFmpegKitConfig.getSafParameter(MainActivity.this, uri, "rw");
                FFmpegKit.executeAsync(CMD + outputVideoPath, new FFmpegSessionCompleteCallback() {
    
                  @Override
                  public void apply(FFmpegSession session) {
                      /**
                       * returnCode
                       * returnCode=1         说明:录像,失败
                       * returnCode=255       说明:录像,成功
                       * returnCode=0         说明:截图,成功
                       */
                      SessionState state = session.getState();
                      ReturnCode returnCode = session.getReturnCode();        
                      LogUtils.e("FFmpegKit" + "apply====state=" + state);         
                      LogUtils.e("FFmpegKit" + "apply====returnCode=" + returnCode);  
               
    
                  }
              }, new LogCallback() {
    
                  @Override
                  public void apply(com.arthenica.ffmpegkit.Log log) {
    
    
                  }
              }, new StatisticsCallback() {
    
                  @Override
                  public void apply(Statistics statistics) {
              
    
                      // CALLED WHEN SESSION GENERATES STATISTICS
    
                  }
              });
      
      
    
  • 主要功能(截图):

         //电视台直播流
           //private String mVideoPath = "http://220.161.87.62:8800/hls/0/index.m3u8";
           //截图命令
            private String CMD2 = "-i http://220.161.87.62:8800/hls/0/index.m3u8 -y -t 0.001 -ss 1 -f image2 -r 1 ";
           //获取uri地址
           Uri uri = FileUtil.createVideoPathUri(MainActivity.this);
           //获取存储mp4文件地址
           String outputVideoPath = FFmpegKitConfig.getSafParameter(MainActivity.this, uri, "rw");
           FFmpegKit.executeAsync(CMD2 + outputVideoPath, new FFmpegSessionCompleteCallback() {
         
                         @Override
                         public void apply(FFmpegSession session) {
                             SessionState state = session.getState();
                             ReturnCode returnCode = session.getReturnCode();
                             LogUtils.e("FFmpegKit" + "apply====state=" + state);            
                             LogUtils.e("FFmpegKit" + "apply====returnCode=" + returnCode);  
                      
         
                         }
                     }, new LogCallback() {
         
                         @Override
                         public void apply(com.arthenica.ffmpegkit.Log log) {
         
         
                         }
                     }, new StatisticsCallback() {
         
                         @Override
                         public void apply(Statistics statistics) {
                     
         
                             // CALLED WHEN SESSION GENERATES STATISTICS
         
                         }
                     });
      
      
    
  • 其他ffmpeg命令行功能:可以使用任何ffmpeg命令行功能实现你想要的功能。

License

Copyright 2023 LoveLin

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要通过VLC库实现逐帧播放功能,你需要按照以下步骤进行操作: 1. 首先,确保你已经安装了VLC库并且将其添加到你的项目中。你可以从VLC官方网站下载并安装VLC库。 2. 创建一个VLC实例并初始化它。你可以使用`libvlc_new()`函数创建一个实例,并使用`libvlc_media_player_new()`函数初始化它。 3. 加载一个视频文件。使用`libvlc_media_new_path()`函数加载一个视频文件,将其与VLC实例关联起来。 4. 创建一个视频输出窗口。使用`libvlc_media_player_set_hwnd()`函数将视频输出到一个窗口中,这样你就可以观看视频。 5. 设置回调函数。使用`libvlc_video_set_callbacks()`函数和`libvlc_video_set_format()`函数设置回调函数,以便在每一帧播放时执行自定义操作。 6. 开始播放视频。使用`libvlc_media_player_play()`函数开始播放视频。 7. 在回调函数中处理每一帧。在回调函数中,你将收到视频的每一帧数据。你可以对每一帧进行处理,实现逐帧播放功能。 至于VLC库对于VLC播放器的热键开发,你可以通过以下步骤来实现: 1. 获取VLC实例的输入事件管理器。使用`libvlc_media_player_event_manager()`函数获取VLC实例的输入事件管理器。 2. 使用`libvlc_event_attach()`函数将一个事件回调函数附加到输入事件管理器上。 3. 在事件回调函数中处理热键事件。当用户按下热键时,事件回调函数将被触发。你可以在回调函数中检测特定的热键事件,并执行相应的操作。 请注意,以上步骤提供了一个基本的框架来实现逐帧播放和热键开发,具体的实现方式可能会有所不同,取决于你使用的编程语言和操作系统。你需要查阅相关的文档和示例代码来获取更详细的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值