windows下C++视频加工处理,批量生成视频文件

本文介绍了一种视频处理流程,包括调整分辨率、添加水印、转换到baseline profile、去除B帧及提取ES流等步骤。并通过示例代码展示了如何批量处理视频文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近公司项目测试阶段需要测试数据源,主要是将一个视频文件(标准H264)通过修改分辨率,添加水印,设置自定义GOP,设置profile格式为baseline,将视频中的B帧去除掉,只留下I帧和P帧,最后将文件中的ES流提取出来生成三千个不同的文件。我主要是将文件按照指定的IP区间添加不同的水印,文件名称按照IP区间来定义

命令行:

修改视屏分辨率:
ffmpeg -i input -vf scale=iw/2:-2 output
视屏添加字幕:(srt文件方式)
ffmpeg.exe -i test.avi -vf subtitles=test.srt out.avi
添加文字水印
ffmpeg.exe -i h264Test.mp4 -vf "drawtext=fontfile=arial.ttf:text='27.8-SD':x=1:y=1:fontsize=50:fontcolor=yellow:shadowy=2" drawtext.mp4

 

设置baseline:
ffmpeg.exe -i 1231.mp4 -vcodec libx264 -x264opts keyint=10:min-keyint=10 -an -profile:v baseline -level 3.0 WLL.mp4

 

提取ES流
ffmpeg.exe -i WLL.mp4 -vcodec copy -f rawvideo -vbsf h264_mp4toannexb final.raw

代码实现: 

        CString strDestPath, tmpPath, DestFileName("\\Check_");
	int pos = strSrcFile.ReverseFind('\\');

	strDestPath = strSrcFile.Mid(0, pos);
	tmpPath = strSrcFile.Mid(0, pos);
	DestFileName += strSrcFile.Mid(pos+1);
	strDestPath += DestFileName;
	CString Suffix;
	Suffix = DestFileName.Mid(DestFileName.Find("."));

	//修改分辨率大小为320*240
	param = " -i " + strSrcFile + " -vf scale=320:240 -t 60 " + strDestPath;
	ShellExe(param);
                CString temp,Mark,base;
		temp.Format("%d%s", i, Suffix);
		if (Sufix.IsEmpty())
			Mark.Format("%s.%d", basenum, i);
		else
			Mark.Format("%s.%d_%s", basenum, i, Sufix);
		basenum += temp;

		//添加水印
		param = " -i "+  strDestPath + "  -vf \"drawtext=fontfile=arial.ttf:text = '" + Mark +"':x=1:y=1:fontsize=50:fontcolor=yellow:shadowy=2\" " + tmpPath + "\\" + basenum;
		ShellExe(param);

 

                //将视频转换成baseline模式,并且将GOP设置为10
                CString baseline = "baseline_";
		baseline += basenum;

		param = " -i " + tmpPath + "\\" + basenum + " -vcodec libx264 -x264opts keyint=10:min-keyint=10 -an -profile:v baseline -level 3.0 " + tmpPath + "\\" + baseline;
		ShellExe(param);
//提取ES流
		CString fileName = basenum.Left(basenum.Find("."));
		if (Sufix.IsEmpty())
		{
			fileName += ".raw";
		}
		else
		{
			fileName += "-";
			fileName += Sufix;
			fileName += ".raw";
		}
		param = " -i "+ tmpPath + "\\" + baseline + " -vcodec copy -f rawvideo -vbsf h264_mp4toannexb " + tmpPath + "\\" + fileName;
		ShellExe(param);

 源工程文件可以在这里下载

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RuningPigNO1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值