2008-12-29 32 views
19

Có cách nào để ghi lại màn hình, máy tính để bàn hoặc cửa sổ, sử dụng công nghệ .NET hay không.Quay video màn hình bằng công nghệ .NET

Mục tiêu của tôi là miễn phí. Tôi thích ý tưởng sử dụng CPU nhỏ, nhỏ và đơn giản, nhưng sẽ xem xét các tùy chọn khác nếu chúng tạo ra một sản phẩm cuối cùng tốt hơn.

Tóm lại, tôi biết cách chụp ảnh màn hình trong C#, nhưng làm cách nào để ghi lại màn hình hoặc vùng màn hình dưới dạng video?

Cảm ơn rất nhiều về ý tưởng và thời gian của bạn!

Trả lời

20

Không cần cho bên thứ ba DLL. Phương thức đơn giản này sẽ chụp ảnh màn hình hiện tại vào một đối tượng .NET Bitmap.

private Image CaptureScreen() 
    { 
     Rectangle screenSize = Screen.PrimaryScreen.Bounds; 
     Bitmap target = new Bitmap(screenSize.Width,screenSize.Height); 
     using(Graphics g = Graphics.FromImage(target)) 
     { 
      g.CopyFromScreen(0,0,0,0,new Size(screenSize.Width,screenSize.Height)); 
     } 
     return target; 
    } 

Tôi chắc chắn bạn có thể tìm hiểu cách chụp một phần nhỏ hơn của màn hình nếu cần :-).

+2

Cảm ơn, xin lỗi tôi đã không làm cho rõ ràng đủ, mà tôi muốn ghi lại video của màn hình. –

+0

video chỉ là nhiều khung hình duy nhất được ép với nhau, bạn có thể chụp những bức ảnh này và tạo một AVI ra khỏi chúng khá dễ dàng. –

+1

http://www.adp-gmbh.ch/csharp/avi/write_avi.html –

2

Có một dll ở đó có thể làm điều đó. Đừng nhớ tên của nó nhưng nó được sử dụng bởi Jing. Một người bạn của tôi đã triển khai một trình ghi màn hình chỉ trong vài phút bằng cách sử dụng dll đó, chỉ để thử nghiệm. Kiểm tra Jing và có thể bạn sẽ tìm thấy dll họ sử dụng.

+0

Tôi cố gắng để kiểm tra dự án jing. Tôi đã được ấn tượng rằng jing có một giới hạn về thời gian ghi âm mà bạn có thể làm. Có lẽ giới hạn đó được xây dựng ngay vào dll bạn đang nói đến. Ngoài ra, nó có thể không được dưới gpl/lgpl vì vậy nó có thể không được "miễn phí" nói đúng. –

+0

Trong thỏa thuận cấp phép jing: Tách các thành phần - [...] Các bộ phận cấu thành của nó có thể không được tách ra để sử dụng [...]. Lời khuyên của tôi: an toàn. thử tìm kiếm google: C# chụp màn hình –

+0

Chỉ cần đảm bảo mọi người hiểu mục tiêu là quay video màn hình chứ không phải chụp màn hình bitmap đơn giản. –

3

Bạn có thể sử dụng Windows Media Encoder SDK để tạo ứng dụng C# để ghi lại màn hình. Có các tùy chọn tích hợp để ghi lại toàn bộ màn hình, một cửa sổ cụ thể hoặc một phần của màn hình.

0

Bạn có thể sử dụng Media Encoder SDK nhưng nó không được hỗ trợ trên Windows 7.

-1

Bạn có thể thử tiện ích mã nguồn mở này: screenrecord (http://screenrecord.codeplex.com/) nó dựa trên AForge.NET

+1

Chỉ liên kết câu trả lời sẽ được đăng dưới dạng nhận xét. Trong anycase nếu một ngày nào đó liên kết thay đổi, câu trả lời của bạn sẽ trở thành không hợp lệ. Ít nhất phải đề cập đến tên của tiện ích trong câu trả lời để nó có thể được tìm kiếm ngay cả khi liên kết bị hỏng. – NSNoob

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