C#中用ffmpeg截取视频使用要点

本文介绍了如何使用C#代码通过ffmpeg进行视频剪辑,对比了使用-c:vcopy直接拷贝和-c:vlibx264-crf18重新编码的不同效果,指出vcopy可能导致长度误差和丢帧,而H264编码在处理短时视频时更为稳定。
摘要由CSDN通过智能技术生成

一、代码

string inputFile = "E:\\Test\\1\\5.mp4";
string outputFile = "E:\\Test\\1\\10.mp4";
int startTime = 5; // 开始时间(秒)
int endtime = 10; // 结束时间(秒)

Process p = new Process();
p.StartInfo.FileName = ".\\ffmpeg\\ffmpeg.exe";//ffmpeg.exe路径
p.StartInfo.UseShellExecute = false;
p.StartInfo.Arguments = $"-i {inputFile} -ss {startTime} -to {endtime} -c:v copy {outputFile} ";
p.StartInfo.UseShellExecute = false;//不使用系统外壳程序启动进程
p.StartInfo.CreateNoWindow = true;  //不显示dos程序窗口
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中
p.StartInfo.UseShellExecute = false;
p.Start();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.BeginErrorReadLine();//开始异步读取   
p.WaitForExit();// 
p.Close(); // 关闭进程
p.Dispose(); // 释放资源

二、代码使用解释

       2.1 不使用原因 -c:v copy

             -c:v copy不进行重新编码,直接拷贝原视频中的视频片段,保存为截取视频。视频长度存在较大误差

             经测试,截取10秒长度视频,视频显示长度为10秒,但实际为原视频5秒长度(丢帧)

              截取视频长度过短,如小于5秒,会出现视频不显示画面问题

        2.2 使用原因 -c:v libx264 -crf 18

              指定使用H264标准 crf=18模式对原视频中的视频片段进行重新编码

                    

               

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值