当前位置: 首页> 汽车> 时评 > 网站设计经典案例分析_上海网络推广_百度站长平台app_线上推广宣传方式有哪些

网站设计经典案例分析_上海网络推广_百度站长平台app_线上推广宣传方式有哪些

时间:2025/7/9 11:19:01来源:https://blog.csdn.net/cf8833/article/details/147008242 浏览次数: 2次
网站设计经典案例分析_上海网络推广_百度站长平台app_线上推广宣传方式有哪些

说明:
form+ffmpeg+opus录音压缩音频
效果图:
在这里插入图片描述

step1:opus格式录音
C:\Users\wangrusheng\RiderProjects\WinFormsApp11\WinFormsApp11\Form1.cs

using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;namespace WinFormsApp11
{public partial class Form1 : Form{// FFmpeg配置private readonly string ffmpegPath = @"C:\Users\wangrusheng\AppData\Local\Microsoft\WinGet\Links\ffmpeg.exe";/**输入cmd指令,获取麦克风地址,动态获取,把你的麦克风地址 替换成下面的地址C:\Users\wangrusheng>ffmpeg -list_devices true -f dshow -i dummy[dshow @ 00000205b9227200] "阵列麦克风 (AMD Audio Device)" (audio)[dshow @ 00000205b9227200]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{2D7B50BB-AD6C-4823-8F7F-5552B9D873B9}"*/private const string AudioDevice = @"audio=@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{2D7B50BB-AD6C-4823-8F7F-5552B9D873B9}";private const string OutputFile = "recording.opus";private Process ffmpegProcess;private Label statusLabel;private Button btnStart;private Button btnStop;public Form1(){InitializeComponent();InitializeUI();CheckPrerequisites();}private void InitializeUI(){// 窗体设置this.Text = "音频录音机";this.Size = new System.Drawing.Size(300, 200);// 状态标签statusLabel = new Label{Text = "准备就绪",Location = new System.Drawing.Point(20, 20),AutoSize = true};this.Controls.Add(statusLabel);// 开始按钮btnStart = new Button{Text = "开始录音",Location = new System.Drawing.Point(20, 60),Size = new System.Drawing.Size(100, 40)};btnStart.Click += BtnStart_Click;this.Controls.Add(btnStart);// 停止按钮btnStop = new Button{Text = "停止录音",Location = new System.Drawing.Point(140, 60),Size = new System.Drawing.Size(100, 40),Enabled = false};btnStop.Click += BtnStop_Click;this.Controls.Add(btnStop);// 文件路径显示var pathLabel = new Label{Text = $"保存路径:{Path.Combine(Application.StartupPath, OutputFile)}",Location = new System.Drawing.Point(20, 120),AutoSize = true};this.Controls.Add(pathLabel);}private void CheckPrerequisites(){// 检查FFmpeg是否存在if (!File.Exists(ffmpegPath)){MessageBox.Show($"FFmpeg未找到:{ffmpegPath}");btnStart.Enabled = false;}}private void BtnStart_Click(object sender, EventArgs e){if (ffmpegProcess != null && !ffmpegProcess.HasExited){MessageBox.Show("请先停止当前录音");return;}try{var startInfo = new ProcessStartInfo{FileName = ffmpegPath,// 修改2: 添加opus编码参数Arguments = $"-f dshow -i \"{AudioDevice}\" -c:a libopus -b:a 64k -y \"{OutputFile}\"",UseShellExecute = false,CreateNoWindow = true,RedirectStandardInput = true,RedirectStandardError = true};ffmpegProcess = new Process { StartInfo = startInfo };ffmpegProcess.ErrorDataReceived += (s, args) => Debug.WriteLine($"[FFmpeg] {args.Data}");ffmpegProcess.Start();ffmpegProcess.BeginErrorReadLine();btnStart.Enabled = false;btnStop.Enabled = true;statusLabel.Text = "录音进行中...";}catch (Exception ex){MessageBox.Show($"启动失败:{ex.Message}");ResetControls();}}private void BtnStop_Click(object sender, EventArgs e){if (ffmpegProcess == null || ffmpegProcess.HasExited) return;try{ffmpegProcess.StandardInput.WriteLine("q");if (!ffmpegProcess.WaitForExit(1500)){ffmpegProcess.Kill();}statusLabel.Text = $"录音已保存到:{OutputFile}";}catch (Exception ex){MessageBox.Show($"停止失败:{ex.Message}");}finally{ResetControls();ffmpegProcess?.Dispose();ffmpegProcess = null;}}private void ResetControls(){btnStart.Enabled = true;btnStop.Enabled = false;}protected override void OnFormClosing(FormClosingEventArgs e){if (ffmpegProcess != null && !ffmpegProcess.HasExited){ffmpegProcess.Kill();ffmpegProcess.Dispose();}base.OnFormClosing(e);}}
}

step2:wav格式录音

 至少普通录音可以了using System;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;namespace WinFormsApp11
{public partial class Form1 : Form{// FFmpeg配置private readonly string ffmpegPath = @"C:\Users\wangrusheng\AppData\Local\Microsoft\WinGet\Links\ffmpeg.exe";/**输入cmd指令,获取麦克风地址,动态获取,把你的麦克风地址 替换成下面的地址C:\Users\wangrusheng>ffmpeg -list_devices true -f dshow -i dummy[dshow @ 00000205b9227200] "阵列麦克风 (AMD Audio Device)" (audio)[dshow @ 00000205b9227200]   Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{2D7B50BB-AD6C-4823-8F7F-5552B9D873B9}"*/private const string AudioDevice = @"audio=@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{2D7B50BB-AD6C-4823-8F7F-5552B9D873B9}";private const string OutputFile = "recording.wav";private Process ffmpegProcess;private Label statusLabel;private Button btnStart;private Button btnStop;public Form1(){InitializeComponent();InitializeUI();CheckPrerequisites();}private void InitializeUI(){// 窗体设置this.Text = "音频录音机";this.Size = new System.Drawing.Size(300, 200);// 状态标签statusLabel = new Label{Text = "准备就绪",Location = new System.Drawing.Point(20, 20),AutoSize = true};this.Controls.Add(statusLabel);// 开始按钮btnStart = new Button{Text = "开始录音",Location = new System.Drawing.Point(20, 60),Size = new System.Drawing.Size(100, 40)};btnStart.Click += BtnStart_Click;this.Controls.Add(btnStart);// 停止按钮btnStop = new Button{Text = "停止录音",Location = new System.Drawing.Point(140, 60),Size = new System.Drawing.Size(100, 40),Enabled = false};btnStop.Click += BtnStop_Click;this.Controls.Add(btnStop);// 文件路径显示var pathLabel = new Label{Text = $"保存路径:{Path.Combine(Application.StartupPath, OutputFile)}",Location = new System.Drawing.Point(20, 120),AutoSize = true};this.Controls.Add(pathLabel);}private void CheckPrerequisites(){// 检查FFmpeg是否存在if (!File.Exists(ffmpegPath)){MessageBox.Show($"FFmpeg未找到:{ffmpegPath}");btnStart.Enabled = false;}}private void BtnStart_Click(object sender, EventArgs e){if (ffmpegProcess != null && !ffmpegProcess.HasExited){MessageBox.Show("请先停止当前录音");return;}try{var startInfo = new ProcessStartInfo{FileName = ffmpegPath,Arguments = $"-f dshow -i \"{AudioDevice}\" -y \"{OutputFile}\"",UseShellExecute = false,CreateNoWindow = true,RedirectStandardInput = true,RedirectStandardError = true};ffmpegProcess = new Process { StartInfo = startInfo };ffmpegProcess.ErrorDataReceived += (s, args) => Debug.WriteLine($"[FFmpeg] {args.Data}");ffmpegProcess.Start();ffmpegProcess.BeginErrorReadLine();btnStart.Enabled = false;btnStop.Enabled = true;statusLabel.Text = "录音进行中...";}catch (Exception ex){MessageBox.Show($"启动失败:{ex.Message}");ResetControls();}}private void BtnStop_Click(object sender, EventArgs e){if (ffmpegProcess == null || ffmpegProcess.HasExited) return;try{ffmpegProcess.StandardInput.WriteLine("q");if (!ffmpegProcess.WaitForExit(1500)){ffmpegProcess.Kill();}statusLabel.Text = $"录音已保存到:{OutputFile}";}catch (Exception ex){MessageBox.Show($"停止失败:{ex.Message}");}finally{ResetControls();ffmpegProcess?.Dispose();ffmpegProcess = null;}}private void ResetControls(){btnStart.Enabled = true;btnStop.Enabled = false;}protected override void OnFormClosing(FormClosingEventArgs e){if (ffmpegProcess != null && !ffmpegProcess.HasExited){ffmpegProcess.Kill();ffmpegProcess.Dispose();}base.OnFormClosing(e);}}
}

steo3: 输出文件
同样是11秒的录音文件,保存后的大小,相差20倍

recording.opus 98kb
recording.wav 1895kb
end

关键字:网站设计经典案例分析_上海网络推广_百度站长平台app_线上推广宣传方式有哪些

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: