2011-07-06 38 views
15

Tôi biết có rất nhiều câu hỏi như thế này.Cách chụp màn hình để quay video bằng C# .Net?

Nhưng tôi không muốn sử dụng bộ mã hóa phương tiện Windows 9 vì đó là sự cố để nhận một bộ mã hóa và sau đó nó không còn được hỗ trợ.

Tôi biết rằng, một khả năng là chụp nhiều ảnh chụp màn hình và tạo video với ffmpeg nhưng tôi không muốn sử dụng tệp thi hành của bên thứ ba.

Có giải pháp chỉ .net không?

+0

bạn có thể thực hiện việc này với Silverlight 4, không chắc chắn nếu đó là một tùy chọn cho bạn. –

+0

nếu có thể .net 3.5 và winforms chỉ –

+0

bạn đang sử dụng hệ điều hành nào? –

Trả lời

9

câu trả lời là Microsoft Expression Encoder. Đó là theo quan điểm của tôi là cách dễ nhất để ghi lại một cái gì đó trên vista và windows 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) { } 
     } 
+2

Bài đăng cũ nhưng tôi cảm thấy tôi nên đề cập rằng sử dụng Bộ mã hóa biểu thức yêu cầu giấy phép chuyên nghiệp nếu bạn muốn quay video bằng thời lượng trên 10 phút và mã hóa GPU cũng yêu cầu giấy phép chuyên nghiệp. (Cá nhân tôi không thể nhận được bất kỳ đầu ra nào không có mã hóa GPU) – Sakuya

+0

Cảm ơn bạn đã trả lời @ masterchris_99. Tôi cũng muốn sử dụng MEE, nhưng nhận được lỗi dưới đây; Ngoại lệ loại 'System.IO.FileNotFoundException' xảy ra trong PCba.Tests.Repository.dll nhưng không được xử lý trong mã người dùng Thông tin bổ sung: Không thể tải tệp hoặc lắp ráp 'Microsoft.Expression.Encoder, Version = 4.0.0.0 , Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35 'hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy các tập tin được chỉ định. –

2

Sửa Dựa trên Comment phản hồi:

Một nhà phát triển bằng tên baSSiLL đã ân cần chia sẻ một kho lưu trữ mà có một ghi hình màn hình thư viện C# cũng như một dự án mẫu trong C# cho thấy nó có thể được sử dụng như thế nào để chụp màn hình và micrô.

Bắt đầu từ ảnh chụp màn hình bằng cách sử dụng mẫu mã là như thẳng về phía trước như:

recorder = new Recorder(_filePath, 
      KnownFourCCs.Codecs.X264, quality, 
      0, SupportedWaveFormat.WAVE_FORMAT_44S16, true, 160); 

_filePath là đường dẫn của tập tin tôi muốn lưu video vào.

Bạn có thể chuyển nhiều loại codec bao gồm AVI, MotionJPEG, X264, v.v. Trong trường hợp x264 tôi phải cài đặt codec trên máy trước nhưng AVI hoạt động ngoài hộp.

Chất lượng chỉ được phát khi sử dụng AVI hoặc MotionJPEG. Bộ giải mã x264 quản lý cài đặt chất lượng của riêng nó.

0 ở trên là thiết bị âm thanh tôi muốn sử dụng. Mặc định là số không.

Hiện tại, nó hỗ trợ 2 định dạng sóng. 44100 ở 16 bit hoặc stereo hoặc mono.

Thông số thực cho biết rằng tôi muốn âm thanh được mã hóa thành định dạng mp3. Tôi tin rằng điều này là cần thiết khi chọn x264 vì âm thanh không nén được kết hợp trong tệp .mp4 sẽ không phát lại cho tôi.

160 là tốc độ bit để mã hóa âm thanh.

~~~~~

Để ngừng ghi bạn chỉ

recorder.Dispose(); recorder = null;

Tất cả mọi thứ là mã nguồn mở, do đó bạn có thể sửa lại lớp ghi và thay đổi kích thước, khung hình mỗi giây, vv

~~~~

Để thiết lập và chạy với thư viện này, bạn sẽ cần phải tải xuống hoặc kéo từ thư viện github/codeplex bên dưới.Bạn cũng có thể sử dụng NuGet:

Install-Package SharpAvi

Original Post:

Sharp AVI: https://sharpavi.codeplex.com/ hoặc https://github.com/baSSiLL/SharpAvi

Có một dự án mẫu trong thư viện mà có một màn hình ghi tuyệt vời trong đó cùng với một menu cho các thiết lập/etc.

Tôi đã tìm thấy Screna trước từ câu trả lời khác về câu hỏi StackoverFlow này nhưng tôi đã gặp phải một số vấn đề liên quan đến việc mã hóa bộ mã hóa Mp3 Lame hoạt động chính xác. Screna là một trình bao bọc cho SharpAVI. Tôi tìm thấy bằng cách loại bỏ Screna và đi ra khỏi mẫu SharpAvi tôi đã may mắn hơn.

+0

Đã một thời gian nhưng tôi tin rằng SharpAVI có phiên bản LameEncoder mà tôi không thể tạo lại. Tôi quên vấn đề chính xác nhưng suy nghĩ bất cứ khi nào tôi xây dựng LameEncoder nó đã thiếu một số chức năng hoặc nó là một tên phương pháp khác nhau, vv Tôi tìm thấy các tập tin DLL thực tế trong SharpAVI và một khi tôi sử dụng nó Nó đã diễn ra suôn sẻ. – ickydime

+0

Khi tôi cố gắng sử dụng các tập tin dll Lame với Screna có một trận đấu bỏ lỡ trong phương pháp. Như thể Screna đang sử dụng một phiên bản khác của què. Và tôi không thể tái tạo dll què cần thiết. – ickydime

Các vấn đề liên quan