返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#实现视频的批量剪辑功能
  • 870
分享到

C#实现视频的批量剪辑功能

C#视频批量剪辑C#视频剪辑 2023-03-23 11:03:02 870人浏览 独家记忆
摘要

篇首,完全没有技术含量的帖子,高手略过,只为十几年后重新捡起的我爱好玩玩。。。 起因,一个朋友说他下载了很多短视频,但只需要要其中的一小截,去头掐尾,在软件里搞来搞去太麻烦,让我帮忙

篇首,完全没有技术含量的帖子,高手略过,只为十几年后重新捡起的我爱好玩玩。。。

起因,一个朋友说他下载了很多短视频,但只需要要其中的一小截,去头掐尾,在软件里搞来搞去太麻烦,让我帮忙,我这个编程二吊子爽快的接了下来。

还是一二三理清思路,方案就用FFmpeg,命令行剪辑生成新视频,C#做个集成一键处理。。

一,采用预置数据data.txt,记录【视频文件名,起点时间,终止时间】,此为单独一行,多个文件就多行,如下图

二,一个videocut类

class VideoCut
    {
        public string file;
        public string begin;
        public string end;
        public VideoCut(string f,string b,string w)
        {
            file = f;
            begin = b;
            end = w; 
        }
    }

三,解析数据文件data.txt,生成videocut的列表

        count = 0;
            listbox.Items.Clear();
            logno("开始解析数据文件....");
            if (!System.io.File.Exists("data.txt"))
            {
                log("找不到数据文件data.txt");
                return;
            }
            List<VideoCut> list = new List<VideoCut>();
            string[] ary;
            TimeSpan begin;
            TimeSpan end;
            int i = 0;
            foreach (string line in System.IO.File.ReadLines("data.txt"))
            {
                ary = line.Trim().Split(',');
                log("第" + ++i + "行:" + line.Trim());
                if(ary.Length!=3)
                {
                    log("数据:"+line.Trim()+",格式不对");
                        continue;
                }
                if (!System.IO.File.Exists(ary[0]))
                {
                    log("文件:"+ary[0].Trim()+",不存在");
                    continue;
                }
                if (!TimeSpan.TryParse(ary[1].Trim(), out begin))
                {
                    log("起点时间:" + ary[1].Trim() + ",格式不对");
                    continue;
                }
                if (!TimeSpan.TryParse(ary[2].Trim(), out end))
                {
                    log("截止时间:" + ary[2].Trim() + ",格式不对");
                    continue;
                }
                if (end <= begin)
                {
                    log("截止时间应该大于起点时间!!!!!");
                    continue;
                }
                list.Add(new VideoCut(ary[0], ary[1], (end-begin).ToString()));
            }
            logno("解析数据文件完毕,成功解析文件:"+list.Count+"个...");
            if (list.Count < 1)
            {
                log("没有数据,退出");
            }    

 四,一个ffmpeg的剪辑类

class FFMEPG
    {
        //视频切割
        public static string Cut(string OriginFile, string startTime, string endTime)
        {
            string DstFile = OriginFile.Replace(".", "a.");
            string strCmd = " -ss "+ startTime
                +" -i " + OriginFile 
                + " -to " +endTime
                + " -vcodec copy -acodec copy " + DstFile + " -y ";
            if (System.IO.File.Exists(DstFile))System.IO.File.Delete(DstFile);
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "ffmpeg.exe";//要执行的程序名称
            p.StartInfo.Arguments = " " + strCmd;
            p.StartInfo.UseshellExecute = false;
            p.StartInfo.RedirectStandardInput = false;//可能接受来自调用程序的输入信息
            p.StartInfo.RedirectStandardOutput = false;//由调用程序获取输出信息
            p.StartInfo.RedirectStandardError = false;//重定向标准错误输出
            p.StartInfo.CreateNoWindow = false;//不显示程序窗口
 
            p.Start();//启动程序
            p.WaitForExit();//等待程序执行完退出进程
 
            if (System.IO.File.Exists(DstFile))
            {
                return DstFile;
            }
            return "";
        }
    }

五,循环调用videocut列表

VideoCut c;
            string file;
            for (i = 0; i < list.Count; i++)
            {
                logno("开始剪切第【" +i + "】个文件...");
                c=list[i];
                file = FFMEPG.Cut(c.file, c.begin, c.end);
                if (file.Length > 0)
                {
                    log("剪切成功,输出文件:"+file);
                }
                else log("剪切失败.....");
            }
            log("");
            log("");
            log("剪切完成......");

六,大致就这样了,运行如下图

 ffmpeg命令要能够调用哈,放到同目录或都windows系统目录都行。。。

源代码已经上传,可以下载到。。。

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

--结束END--

本文标题: C#实现视频的批量剪辑功能

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

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

猜你喜欢
  • C#实现视频的批量剪辑功能
    篇首,完全没有技术含量的帖子,高手略过,只为十几年后重新捡起的我爱好玩玩。。。 起因,一个朋友说他下载了很多短视频,但只需要要其中的一小截,去头掐尾,在软件里搞来搞去太麻烦,让我帮忙...
    99+
    2023-03-23
    C#视频批量剪辑 C#视频剪辑
  • C#如何实现视频的批量剪辑功能
    今天小编给大家分享一下C#如何实现视频的批量剪辑功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一,采用预置数据data....
    99+
    2023-07-05
  • 实现快剪辑功能的短视频应用
    超级简单易用的短视频SDK,为开发者提供短视频编辑、视频直播、特效、录屏、编解码、视频转换,等多种解决方案,涵盖PC、iOS、Android多平台。以市场为导向,不断打磨并创新技术,在稳定性,兼容性,硬件设备效率优化上千捶百炼。使产品技术一...
    99+
    2023-06-04
  • Python实现Youku视频批量下载功能
    前段时间由于收集视频数据的需要,自己捣鼓了一个YouKu视频批量下载的程序。东西虽然简单,但还挺实用的,拿出来分享给大家。   版本:Python2.7+BeautifulSoup3.2.1 impor...
    99+
    2022-06-04
    批量 功能 视频
  • Java实现视频自定义裁剪功能
    目录前言Maven依赖代码验证一下前言 本文提供将视频按照自定义尺寸进行裁剪的Java工具类,一如既往的实用主义。 Maven依赖 <dependency>...
    99+
    2024-04-02
  • python基于moviepy实现音视频剪辑
    目录实践步骤完整代码参考实践步骤 寻找合适的Python库(安装是否麻烦、使用是否简便、执行会不会太久) moviepy 音视频库。分析需要用的API:代码示例 定义输入输出 输入:...
    99+
    2022-06-02
    python moviepy python 音频剪辑 python 视频剪辑
  • 视频剪辑小程序需要开发哪些功能
    这篇文章主要介绍视频剪辑小程序需要开发哪些功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 视频剪辑小程序开发的基本功能有哪些? 1。 用户登录注册:为了保护每个用户帐户的安全,用户需要在使用迷你程序之前预先注册。...
    99+
    2023-06-27
  • 视频剪辑小程序开发需要什么功能
    这篇“视频剪辑小程序开发需要什么功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“视频剪辑小程序开发需要什么功能”文章吧。 ...
    99+
    2023-06-26
  • python实现bilibili动画下载视频批量改名功能
    bilib应用 在微软商店中下载哔哩哔哩动画,虽然软件UI古老,但是贵在稳定和支持下载 安装以后搜索自己想要的视频,然后缓存下载 下载后进入下载的路径 视频文件重命名 打开自动...
    99+
    2024-04-02
  • 使用Golang和FFmpeg实现视频剪辑的方法
    要使用Golang和FFmpeg实现视频剪辑,可以通过调用FFmpeg的命令行工具来完成操作。下面是一个示例的代码:gopackag...
    99+
    2023-10-20
    Golang
  • Java怎么实现视频自定义裁剪功能
    今天就跟大家聊聊有关Java怎么实现视频自定义裁剪功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言下面提供将视频按照自定义尺寸进行裁剪的Java工具类,一如既往的实用主义。Ma...
    99+
    2023-06-28
  • 基于Python实现丝滑换装视频剪辑
    目录软硬件、技能需求颜色变换说明Python 应用插件思路流程MiVOS 模块交互式看到人家用PR什么编辑软件做这种丝滑一键换装的视频,自己也想尝试一下。不过PR这破玩意太难用了,还...
    99+
    2024-04-02
  • C++ Qt实现音视频播放功能
    由于最近着手的Qt项目需要视频播放 自己做的时候踩了很多坑 避免以后踩坑 故在此记录实现过程  Qt版本 5.9 基于C++11 Qt核心组件与附加组件安装时请打钩 否则可能出现项目...
    99+
    2024-04-02
  • python如何实现bilibili动画下载视频批量改名功能
    这篇文章主要讲解了“python如何实现bilibili动画下载视频批量改名功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python如何实现bilibili动画下载视频批量改名功能”吧...
    99+
    2023-06-21
  • 使用Golang和FFmpeg实现视频片段剪辑的技巧
    要使用Golang和FFmpeg实现视频片段剪辑,可以使用以下技巧:1. 安装FFmpeg并确保它可以在命令行中使用。2. 在Gol...
    99+
    2023-10-10
    Golang
  • 基于Python怎么实现丝滑换装视频剪辑
    本篇内容介绍了“基于Python怎么实现丝滑换装视频剪辑”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!软硬件、技能需求CPU最好是I7-87...
    99+
    2023-06-29
  • 织梦dedecms默认编辑器实现上传视频功能
    织梦默认的编辑器采用的是ckeditor厂商提供的,只可以上传Flash,今天我们进行二次改进,使之可以上传视频文件如MP4文件进行播放,方法比较简单,无需去更换编辑器,下面就言归正传。 第一步:后台系统–添加MP...
    99+
    2024-04-02
  • C++ Qt如何实现音视频播放功能
    这篇文章将为大家详细讲解有关C++ Qt如何实现音视频播放功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。由于最近着手的Qt项目需要视频播放 自己做的时候踩了很多坑&n...
    99+
    2023-06-21
  • Python实现视频下载功能
    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容。如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站上,增...
    99+
    2022-06-04
    视频下载 功能 Python
  • vue实现视频上传功能
    本文实例为大家分享了vue实现视频上传功能的具体代码,供大家参考,具体内容如下 环境:vue + TS 上传视频 + 上传到阿里云 主要处理前端在vue下上传视频 使用的是阿里云的视...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作