返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >详解C#如何实现分割视频
  • 350
分享到

详解C#如何实现分割视频

C#分割视频C#视频 2022-12-29 12:12:31 350人浏览 独家记忆
摘要

目录文章描述开发环境开发工具实现代码实现效果文章描述 在前面两篇写完了对于GIF动态图片的分割和合成,这一篇来写下将视频文件分割成一帧帧图片的方法。 开发环境 .net Frame

文章描述

在前面两篇写完了对于GIF动态图片的分割和合成,这一篇来写下将视频文件分割成一帧帧图片的方法。

开发环境

.net Framework版本:4.5

开发工具

Visual Studio 2013

实现代码

public static void Run(string cmd)
        {
            try
            {
                string FFmpeg = AppDomain.CurrentDomain.BaseDirectory + "ffmpeg.exe";
                ProcessStartInfo startInfo = new ProcessStartInfo(ffmpeg);
                startInfo.UseshellExecute = false;
                startInfo.CreateNoWindow = true;
                startInfo.windowstyle = ProcessWindowStyle.Hidden;
                startInfo.Arguments = cmd;
                Process process = Process.Start(startInfo);
                process.WaitForExit(5000);
                process.Kill();
            }
            catch { }
        }

        /// <summary>
        /// 分割视频
        /// </summary>
        /// <param name="videoPath">视频路径</param>
        /// <param name="outPath">输出图片路径</param>
        public static void Split(string videoPath, string outPath)
        {
            Run(string.FORMat(" -i {0}  -r 10 -y -f image2 -ss 00:00:01 {1}\\%d.jpg", videoPath, outPath));
        }

        /// <summary>
        /// 按时间获取某帧图片
        /// </summary>
        /// <param name="videoPath">视频路径</param>
        /// <param name="outPath">输出图片路径</param>
        /// <param name="frameTime">时间(格式:00:00:01)</param>
        public static void GetFrame(string videoPath, string outPath, string frameTime)
        {
            Run(string.Format("-ss 00:00:01 -i {1} {2}", frameTime, videoPath, outPath));
        }
private void btn_select_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "视频|*.mp4;*.avi";
            ofd.Title = "请选择视频文件";
            ofd.InitialDirectory = Application.StartupPath;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                axWindowsMediaPlayer1.URL = ofd.FileName;
                string outPath = Application.StartupPath + "\\cover.jpg";
                FFmpegUtil.GetFrame(ofd.FileName, outPath, "00:00:01");
                pictureBox1.Image = Image.FromFile(outPath);
            }
        }

        private void btn_split_Click(object sender, EventArgs e)
        {
            if(!File.Exists(axWindowsMediaPlayer1.URL)){
                MessageBox.Show("未选择视频");
                return;
            }
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.Description = "选择存储位置";
            fbd.ShowNewFolderButton = true;
           if (fbd.ShowDialog() == DialogResult.OK)
            {
                string[] files = Directory.GetFiles(fbd.SelectedPath);
                foreach (string file in files)
                {
                    File.Delete(file);
                }
                FFmpegUtil.Split(axWindowsMediaPlayer1.URL, fbd.SelectedPath);
                if (MessageBox.Show("视频分割完成,是否打开文件夹?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    Process.Start(fbd.SelectedPath);
                }
            }

        }

实现效果

代码解析:视频分割技术主要是利用了FFMpeg来实现的,C#在这里其实只是一个调用者。这个在方法Run中可以看的出来,首先是需要将FFMpeg放到debug目录下的,然后使用Process类来调用;这里有个问题需要注意下,就是调用后经常会被卡住,没办法退出来,所以使用了WaitForExit(2000)来处理。并且在等待结束后将该进程给Kill掉了,这个方式可能不太规范,如有更好的方法,感谢指教。

调用的话就直接输入命令就可以了,代码中分别使用了以下两条命令:

  • 获取第一秒的图片作为封面图显示到了图片控件中
  • 将视频分割成一张张图片并保存到了文件夹中

到此这篇关于详解C#如何实现分割视频的文章就介绍到这了,更多相关C#分割视频内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解C#如何实现分割视频

本文链接: https://lsjlt.com/news/176181.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解C#如何实现分割视频
    目录文章描述开发环境开发工具实现代码实现效果文章描述 在前面两篇写完了对于GIF动态图片的分割和合成,这一篇来写下将视频文件分割成一帧帧图片的方法。 开发环境 .NET Frame...
    99+
    2022-12-29
    C#分割视频 C# 视频
  • Python如何实现视频分帧
    这篇文章主要介绍“Python如何实现视频分帧”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何实现视频分帧”文章能帮助大家解决问题。下载依赖pip install ...
    99+
    2023-07-05
  • Python中使用moviepy进行视频分割的实现方法
    场景 moviepy官网: https://pypi.org/project/moviepy/ 是一个用于视频编辑的Python库:切割、连接、标题插入、视频合成、非线性编辑,视频处...
    99+
    2024-04-02
  • Golang与FFmpeg: 如何实现音频合成和分割
    在Golang中,可以使用CGo来调用FFmpeg库来实现音频合成和分割的功能。首先,确保已经安装了FFmpeg库,并且在环境变量中...
    99+
    2023-10-08
    Golang
  • Python实现视频分解成图片+图片合成视频
    目录一、python视频拆分+图片合成(源码一)1.python视频拆分2.python图片合成二、python视频拆分+图片合成(源码二)三、python视频拆分(源码三)一、py...
    99+
    2024-04-02
  • TorchVisionTransformsAPI目标检测实例语义分割视频类
    目录内容导读Transforms 当前的局限性全新的 Transforms API当前的局限性一个端到端示内容导读 TorchVision Transforms API 扩展升级,现...
    99+
    2022-11-13
    TorchVision Transforms API TorchVision Transforms 目标检测
  • C#如何使用NAudio实现音频可视化
    小编给大家分享一下C#如何使用NAudio实现音频可视化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!预览:捕捉声卡输出:实现音频可视化, 第一步就是获得音频采样...
    99+
    2023-06-15
  • C++ Qt如何实现音视频播放功能
    这篇文章将为大家详细讲解有关C++ Qt如何实现音视频播放功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。由于最近着手的Qt项目需要视频播放 自己做的时候踩了很多坑&n...
    99+
    2023-06-21
  • C#实现文件分割和合并的示例详解
    目录实践过程效果代码实践过程 效果 代码 public partial class frmSplit : Form { public frmSplit() { ...
    99+
    2022-12-26
    C#文件分割 合并 C#文件分割 C#文件合并
  • Python实现视频中添加音频工具详解
    目录前言环境依赖主要代码前言 本文提供在在无音频的视频中添加音频的python工具,附上代码。 环境依赖 ffmpeg环境安装,可以参考:windows ffmpeg安装部署 ffm...
    99+
    2024-04-02
  • 使用AVFoundation实现视频录制详解
    目录一、前言二、AVCaptureSession + AVCaptureMovieFileOutput一、前言 AVCaptureSession 是 AVFoundation 的核心...
    99+
    2024-04-02
  • OpenCV+python3实现视频分解成图片
    OpenCV+python3将视频分解成图片,供大家参考,具体内容如下 我们在工作或学习时,偶尔需要将视频分解成图片,只取其中一段的图片就行了,而在网上下载转换工具又3比较麻烦,现在...
    99+
    2024-04-02
  • C#如何实现视频的批量剪辑功能
    今天小编给大家分享一下C#如何实现视频的批量剪辑功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一,采用预置数据data....
    99+
    2023-07-05
  • JavaScript如何实现控制视频
    这篇文章将为大家详细讲解有关JavaScript如何实现控制视频,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体代码如下所示:<html lang=&q...
    99+
    2024-04-02
  • html5如何实现视频播放
    这篇文章主要为大家展示了“html5如何实现视频播放”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5如何实现视频播放”这篇文章吧。一、html5技术优势...
    99+
    2024-04-02
  • Python如何实现视频裁剪
    小编给大家分享一下Python如何实现视频裁剪,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!环境依赖本文主要使用到的不是ffmpeg,而是ffprobe也在上面这...
    99+
    2023-06-28
  • Android如何实现播放视频
    这篇文章将为大家详细讲解有关Android如何实现播放视频,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、通过intent的方式,调用系统自带的播放器  Uri uri&n...
    99+
    2023-05-31
    android
  • Django如何实现视频播放
    这篇文章主要讲解了“Django如何实现视频播放”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Django如何实现视频播放”吧!view视图import reimport ...
    99+
    2023-06-30
  • QT+ffmpeg实现视频解析的示例详解
    目录一、创建QT项目二、引入ffmpeg1、复制头文件和lib2、复制bin文件3、简单测试三、视频解析1、创建线程2、创建自定义绘制控件3、使用自定义控件4、开启线程,进行视频解析...
    99+
    2024-04-02
  • Python怎么实现视频分解成图片及图片合成视频
    这篇文章主要介绍了Python怎么实现视频分解成图片及图片合成视频的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python怎么实现视频分解成图片及图片合成视频文章都会有所收获,下面我们一起来看看吧。一、pyt...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作