2015-01-23 16 views
7

Tôi đang tìm cách thêm lớp phủ vào một trò chơi Windows, như OBS (một ứng dụng phát trực tuyến trò chơi, được sử dụng cho Twitch).Chia sẻ màn hình theo thời gian thực sang ứng dụng Java (localhost)

tôi mặc dù về việc sử dụng lớp Robot để tận 25/30 chụp màn hình mỗi giây và hiển thị chúng, nhưng tôi không chắc chắn đó là giải pháp phù hợp ..

Vì vậy, câu hỏi của tôi là như sau: Làm thế nào tôi có thể screenshare một ứng dụng đang chạy cho một ứng dụng Java (localhost, cùng một máy tính), để thêm một lớp phủ ở phía trước nó?

EDIT: Tôi cố gắng sử dụng VLC Truyền nhưng mà làm cho máy tính thực sự bị lag (i7/8GB) ... Tôi đã thử với FFMpeg quá, sử dụng screen-capture-recordergdigrab, máy tính không bị lag, nhưng đoạn video xuống như 5/10 FPS trong thời gian thực.
Trong FFMpeg, tôi đã sử dụng lệnh sau: ffplay -f dshow -f gdigrab -i title="<NAME>" -framerate 30.

Tôi muốn có một FPS 25/30 với một máy tính chơi game (i7/8Gb) ..

+0

Khi bạn nói 'luồng', đối tượng Java cấp thấp chính xác mà bạn đang giới thiệu là kết quả là gì? Một 'InputStream' liên tục cho ăn nơi bạn có thể đọc dữ liệu khung của một luồng/chương trình khác? – higuaro

+0

Tôi không thực sự quan tâm đến loại đối tượng Java. Nó chỉ có thể được hiển thị trong một 'JPanel' :). Ứng dụng này là ứng dụng khách và máy chủ có thể là phần mềm của bên thứ 3 (như VLC) hoặc được tích hợp trực tiếp trong ứng dụng. – Val

Trả lời

2

Tôi đã từng phát triển SimRat (Ứng dụng chia sẻ màn hình đơn giản như Teamviewer) sử dụng Robot & Corba. Bạn có thể có được ý tưởng cơ bản khi xem mã. Đây không phải là cách tốt nhất có thể để thực hiện chia sẻ màn hình. Java RMI sẽ hữu ích cho bạn.

+0

Tôi đã thử một số phương pháp, và các ảnh chụp màn hình bằng cách sử dụng lớp 'Robot' trông giống như nhanh nhất trong trường hợp của tôi .. Vì vậy, tôi sẽ chấp nhận câu trả lời này! Cảm ơn :) – Val

+0

Bạn được chào đón. Rất vui vì nó là hữu ích :) –

+0

vâng ... tôi cũng sử dụng openairplay, là một trong những màn hình chia sẻ kỹ thuật nữa .... nhưng tôi tự hỏi làm thế nào âm thanh streaming trở nên có sẵn .... – gumuruh

3

Hãy thử java-screen-recorder, nó là một Capturer màn hình đơn giản và chuyển đổi. Nó không phải là rất cpu/gpu tiêu thụ. Giải pháp dựa trên java.awt.Robot và chụp liên tục màn hình.

+0

Tôi không chắc chắn công cụ này cho phép người dùng phát trực tiếp trong thời gian thực (tôi không muốn ghi lại màn hình vào tệp và xem sau này nhưng phát trực tiếp) – Val

+0

Có rất nhiều nguồn mở Internet! bạn có thể tiếp tục và kết nối bộ thu màn hình với f.e. [Xuggler Streaming] (http://www.xuggle.com/xuggler) – ancalled

+1

Nếu bạn nghĩ rằng nó sẽ hoạt động, bạn có thể cung cấp một ví dụ mã nguồn nên chạy ở 25/30FPS để truyền tải một ứng dụng không? – Val

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