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

一、代码

cs 复制代码
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模式对原视频中的视频片段进行重新编码

相关推荐
blanks20203 天前
ffmpeg 学习笔记 通过命令行采集音频
ffmpeg
RTC实战笔记3 天前
实时互动数字人怎么做,才不是一个只会说话的视频?
音视频·数字人·rtc·数字人接入
Mahut7 天前
我用 Electron + FFmpeg 做了一个本地视频处理工作站 ClipForge
前端·ffmpeg·electron
RTC实战笔记15 天前
Android 实时音视频接入教程:媒体补充增强信息(SEI)
音视频·媒体·rtc
潜创微科技16 天前
HDMI1.3 无线传输芯片方案 空旷 150 米量产级音视频方案
音视频
VidDown16 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
换个昵称都难16 天前
音频格式之WAV
音视频
AI创界者16 天前
PilotTTS 一键整合包(Win/Mac):8G 显存畅跑,实测解锁情绪与副语言的精准控制
人工智能·macos·aigc·音视频
u1521096484916 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
VidDown16 天前
显卡处理视频技术详解:从硬解码到 NVENC,GPU 如何让视频处理起飞?
javascript·编辑器·音视频·视频编解码·视频