Asp.Net WebAPI + ffmpeg 对视频进行切片和加密

1. 下载ffmpeg

去我的另一篇博客,ffmpeg 下载和安装

2. 使用 openssl 生成密钥文件

去我的另一篇博客 Windows 中使用 OpenSSL 生成用于加密的密钥文件

3. Asp.Net WebAPI 中代码示例

将上面的ffmpeg.exe 、 enc.key 、enc.keyinfo 文件丢到自己的项目中的 资源文件目录中 一般是 Content 文件夹下面
因为这里时weiapi中的代码,所有的路径建议为物理路径(因为本人用相对路径测试的时候没通过)


/// <summary>
/// 视频切片加密
/// </summary>
/// <returns>返回加密文件的路径</returns>
 public string VideoSlicerEncrpty()
{
	using (Process process = new Process())
	{
		// 进程信息
		ProcessStartInfo startInfo = new ProcessStartInfo();
	 
		// ffmpeg  工具的文件路径
		startInfo.FileName = Server.MapPath($"ffmpeg.exe");
		// 源文件的路径
		string videoInput = Server.MapPath($"input.mp4");
		// 加密信息文件
		string keyinfoFile = Server.MapPath($"enc.keyinfo");
		// 加密切片的文件名称的前缀
		string prefixNameFile = Server.MapPath($"output");
		// 指令参数
		startInfo.Arguments = $"-i {videoInput} " + //  -i 指定输入的视频
			$"-c:v h264 " + // -c:v 指定视频的编码格式
			$"-b:v 2M " + // -b:v 指定视频的码率,这里是2M比特率
			$"-hls_time 15 " + // 指定分片的时间,单位是秒 
			$"-hls_list_size 0 " +// -hls_list_size 指定hls列表的数量,(0:不限制)
			$"-hls_key_info_file {keyinfoFile} " + // -hls_key_info_file  加密的信息文件  (enc.keyinfo)
			$"-hls_segment_filename {prefixNameFile}_%03d.ts " + // -hls_segment_filename 指定输出的ts文件名字,这里表示是output_ + 3位数字
			$"{prefixNameFile}.m3u8 " + // output.m3u8指定输出m3u8文件的名字
			$"-y "; // -y有些场景,比如是否覆盖,直接选择是,避免程序卡住

		startInfo.RedirectStandardOutput = true;// 将标准输出重定向到Process.StandardOutput属性 
		startInfo.UseShellExecute = false; // 不使用操作系统外壳程序启动线程 
		startInfo.CreateNoWindow = true; // 不创建进程窗口

		process.StartInfo = startInfo;
		process.Start(); // 启动进程
		process.WaitForExit(); // 线程阻塞
		string output = process.StandardOutput.ReadToEnd(); // 读取输出内容
		Debug.WriteLine("读取输出内容: \n" + output);
		process.Close();
		process.Dispose();

		string outVideoPath = $"{prefixName}.m3u8";
		return outVideoPath;
	}
}
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值