나는 이렇게 많은 질문을 알고있다.C# .Net을 사용하여 화면을 캡쳐하는 방법은 무엇입니까?
Windows Media 인코더 9를 사용하고 싶지는 않지만, 문제가있어 더 이상 지원되지 않으므로 사용하지 않으려합니다.
나는 하나의 가능성은 많은 스크린 샷을 캡처하고 ffmpeg
으로 비디오를 만드는 것이지만 제 3 자 실행 파일을 사용하고 싶지 않다는 것을 알고 있습니다.
.net
유일한 해결책이 있습니까?
나는 이렇게 많은 질문을 알고있다.C# .Net을 사용하여 화면을 캡쳐하는 방법은 무엇입니까?
Windows Media 인코더 9를 사용하고 싶지는 않지만, 문제가있어 더 이상 지원되지 않으므로 사용하지 않으려합니다.
나는 하나의 가능성은 많은 스크린 샷을 캡처하고 ffmpeg
으로 비디오를 만드는 것이지만 제 3 자 실행 파일을 사용하고 싶지 않다는 것을 알고 있습니다.
.net
유일한 해결책이 있습니까?
대답은 Microsoft Expression Encoder입니다. 그것은 내 의견에 가장 쉬운 비스타에 뭔가를 기록하는 방법과 창을 따라한다 코멘트 피드백을 바탕으로 7
private void CaptureMoni()
{
try
{
Rectangle _screenRectangle = Screen.PrimaryScreen.Bounds;
_screenCaptureJob = new ScreenCaptureJob();
_screenCaptureJob.CaptureRectangle = _screenRectangle;
_screenCaptureJob.ShowFlashingBoundary = true;
_screenCaptureJob.ScreenCaptureVideoProfile.FrameRate = 20;
_screenCaptureJob.CaptureMouseCursor = true;
_screenCaptureJob.OutputScreenCaptureFileName = string.Format(@"C:\test.wmv");
if (File.Exists(_screenCaptureJob.OutputScreenCaptureFileName))
{
File.Delete(_screenCaptureJob.OutputScreenCaptureFileName);
}
_screenCaptureJob.Start();
}
catch(Exception e) { }
}
을 확인할 수 있습니다. 이전 게시물이지만 Expression Encoder를 사용하려면 Pro 라이센스가 필요합니다. 10 분 이상의 지속 시간, GPU 인코딩에는 프로 라이센스가 필요합니다. (개인적으로 GPU 인코딩을 사용하지 않으면 출력이 나오지 않습니다.) – Sakuya
@ masterchris_99 답변 해 주셔서 감사합니다. 나는 MEE도 사용하고 싶지만, 아래의 오류를 얻는다; PCba.Tests.Repository.dll에서 'System.IO.FileNotFoundException'유형의 예외가 발생했지만 사용자 코드에서 처리되지 않았습니다. 추가 정보 : 파일 또는 어셈블리를로드 할 수 없습니다. 'Microsoft.Expression.Encoder, Version = 4.0.0.0 , 문화 = 중립, PublicKeyToken = 31bf3856ad364e35 '또는 그것의 의존성 중 하나. 시스템이 지정된 파일을 찾을 수 없습니다. –
편집 : 이름의 개발자는 baSSiLL이있다 저장소를 공유 우아하고있다
스크린 레코딩 C# 라이브러리뿐만 아니라 C#의 샘플 프로젝트를 사용하여 스크린과 마이크를 캡처하는 방법을 보여줍니다.
recorder = new Recorder(_filePath,
KnownFourCCs.Codecs.X264, quality,
0, SupportedWaveFormat.WAVE_FORMAT_44S16, true, 160);
_filePath 내가에 비디오를 저장하려는 파일의 경로입니다 : 샘플 코드를 사용하여 화면 캡처를 시작
는로 정직 등이다.
AVI, MotionJPEG, X264 등 다양한 코덱을 전달할 수 있습니다. x264의 경우 먼저 내 컴퓨터에 코덱을 설치해야했지만 AVI는 기본적으로 작동합니다.
품질은 AVI 또는 MotionJPEG를 사용할 때만 적용됩니다. x264 코덱은 자체 품질 설정을 관리합니다.
위의 0은 내가 사용하고자하는 오디오 장치입니다. 기본값은 0입니다.
현재 두 가지 웨이브 형식을 지원합니다. 스테레오 또는 모노 중 하나 인 16bit에서 44100.
true 매개 변수는 오디오를 mp3 형식으로 인코딩하려는 것을 나타냅니다. 저는 이것이 .mp4 파일로 결합 된 비 압축 오디오가 나를 위해 재생되지 않기 때문에 x264를 선택할 때 필요하다고 생각합니다.
160은 오디오를 인코딩 할 비트 레이트입니다. 당신이 등 초당 프레임,
을 치수를 레코더 클래스를 편집하고 변경할 수 있도록~~~~~
는 단지
recorder.Dispose(); recorder = null;
모든 오픈 소스 당신에게 녹화를 중지하려면
~~~~
이 라이브러리를 사용하려면 다운로드하거나 다운로드해야합니다. 아래 github/codeplex 라이브러리.또한 NuGet을 사용할 수 있습니다
설치 패키지 SharpAvi
원래의 게시물 :
샤프 AVI를 : https://sharpavi.codeplex.com/ 또는 https://github.com/baSSiLL/SharpAvi
가 해당 라이브러리 내에서 샘플 프로젝트가있다 설정/등을위한 메뉴와 함께 멋진 스크린 레코더.
이 StackoverFlow 질문에 대한 다른 대답으로 Screna를 처음 발견했지만 올바르게 작동하려면 Mp3 Lame 엔코더 가져 오는 것과 관련된 몇 가지 문제가 발생했습니다. Screna는 SharpAVI의 래퍼입니다. 나는 Screna를 제거하고 SharpAvi의 샘플에서 벗어나서 더 좋은 행운을 찾았습니다.
잠깐이지만 SharpAVI에는 내가 만들 수없는 LameEncoder 버전이 있다고 생각합니다. 정확한 문제는 잊어 버렸지만 LameEncoder를 만들 때마다 일부 기능이 누락되었거나 다른 메서드 이름 등으로 생각됩니다. SharpAVI 내에서 실제 DLL 파일을 찾았고 한 번 사용 했더니 원활하게 처리되었습니다. – ickydime
Scalea와 함께 절름발이 dll 파일을 사용하려고 시도했을 때 메서드에서 일치하지 않았습니다. 마치 Screna가 다른 버전의 절름발이를 사용하고있는 것처럼 보입니다. 그리고 필요한 불충분 한 DLL을 다시 만들 수 없습니다. – ickydime
Silverlight 4를 사용하면이 옵션을 사용할 수 있습니다. –
가능하면 .net 3.5이고 winforms는 –
어떤 OS를 사용하고 있습니까? –