关于c#中录屏的问题

zhang_adrian 2017-03-21 04:56:35
各路大神好,我目前使用Accord.Net中的 Accord.Video 包和 Accord.Video.FFMPEG包,已经实现了录屏的功能,但是想要在录屏的同时,把麦克风的声音也录进去,碰到了麻烦,代码大致如下:

VideoFileWriter writer = new VideoFileWriter();
Rectangle screenArea = Screen.PrimaryScreen.Bounds;
stream = new ScreenCaptureStream(screenArea);
var collection = new AudioDeviceCollection(AudioDeviceCategory.Capture);
source = new AudioCaptureDevice(collection.Last());
source.AudioSourceError += Source_AudioSourceError;
stream.VideoSourceError += Stream_VideoSourceError;
source.NewFrame += Source_NewFrame;
stream.NewFrame += new NewFrameEventHandler(video_NewFrame);
writer.Open("test.mp4", Screen.PrimaryScreen.Bounds.Size.Width, Screen.PrimaryScreen.Bounds.Size.Height,10,VideoCodec.H264,82500,AudioCodec.AAC,32000,16000, source.Channels);
//825000处 是视频的比特率,32000处是音频的比特率,16000处是音频的sampleRate

private void video_NewFrame(object sender, Accord.Video.NewFrameEventArgs eventArgs)
{
// get new frame
Bitmap bitmap = eventArgs.Frame;
writer.WriteVideoFrame(bitmap );
}

private void Source_NewFrame(object sender, Accord.Audio.NewFrameEventArgs eventArgs)
{
// Read current frame...
Signal s = eventArgs.Signal;
writer.WriteAudioFrame(s.RawData);
}

录制结束后,视频文件时间明显长于录制时间,声音都是 兹拉兹拉的电视没台的声音。我怀疑问题出在 几个比特率 的大小上。
请各位大神帮忙解决解决。谢啦。
...全文
737 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzzzzqqqqq123 2018-07-05
  • 打赏
  • 举报
回复 1
楼主,你这个可以录到声音吗。
我这样写一直报错 “Cannot open audio codec”
GD_csdn 2017-08-03
  • 打赏
  • 举报
回复
楼主代码不全,我在同时写入音频和视频,报错”显示音频不能写入内存“!!!
GD_csdn 2017-07-29
  • 打赏
  • 举报
回复
不知道你解决了没有,但好像你写的录制每一帧音频Source_NewFrame()没有运行!!!!
zhang_adrian 2017-03-21
  • 打赏
  • 举报
回复
自己顶一下,别沉啊
zhang_adrian 2017-03-21
  • 打赏
  • 举报
回复
请各位大神帮帮忙,第一次注册发帖,在线等。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧