2009-04-24 39 views
11

Tôi đang cố gắng điều khiển VLC Media Player từ C#. Tôi đã cố gắng nhận được một xử lý trên cửa sổ với các FindWindow() lệnh từ. Net nhưng như tôi phát hiện ra tên của cửa sổ thay đổi mỗi khi một tập tin được chơi. Vấn đề lớn nhất tôi có là gửi wm_commands để vlc .. Cách tiếp cận này đã làm việc với Winamp và Windows Media Player nhưng với VLC nó xuất hiện rằng nó sẽ không hoạt động.VLC điều khiển từ xa từ C#

Tôi đọc rằng VLC có thể được điều khiển từ trình duyệt nhưng tôi không biết rằng ... tôi đã thấy trong cài đặt của nó có một số phím nóng có thể được gọi .. nhưng chúng có thể thay đổi và nếu tôi gọi họ là từ mã của tôi bằng cách nào đó ... và người dùng thay đổi them..bummer ...

tôi một chút stuck..any trợ giúp sẽ là tuyệt vời ... Sorin

+0

Mục tiêu của bạn ở đây là gì? Lái xe VLC? Tích hợp vào một ứng dụng? –

+0

Xin chào, tôi muốn kiểm soát VLC..như đẩy nút dừng trong ứng dụng của tôi và trình phát VLC dừng lại. Các VLC không được tích hợp trong ứng dụng của tôi..my sẽ giống như một điều khiển từ xa ... libvlc một libvlc-sắc nét trông giống như một giải pháp .. tôi phải nhìn vào chiều sâu .. –

+0

hello sambo, ý tưởng là để kiểm soát (ổ đĩa) VLC, không tích hợp nó trong một ứng dụng khác. VLC nên chạy bình thường trong các cửa sổ và nhận lệnh WM từ một ứng dụng C#. –

Trả lời

9

Tôi có một số mã có thể control it using sockets trên số RC interface. Điều này làm việc đến một mức độ nhưng có rất nhiều kỳ quặc. đi đến toàn màn hình dường như không làm gì trong vài giây sau khi phát được gọi. Nói chung nó là loại công việc.

Các tùy chọn khác bao gồm:

Viết một bộ lọc DirectDraw (rất khó) nhưng một lần này được thực hiện VLC có thể được sử dụng thay cho hoặc kết hợp với FFMPEG. Mã hiện có mà ổ đĩa trình phát đa phương tiện có thể sử dụng vlc.

Viết một wrapper interop cho libvlc, thời gian gần đây đội VLC tách ra libvlccore từ libvlc như vậy để theo sự hiểu biết của tôi tất cả các interop là hết hiệu lực. Một khi bạn viết một wrapper bạn có thể nhúng vlc trong một ứng dụng windows. (Nếu bạn cần hỗ trợ x64 bạn cần phải biên dịch các libs dưới x64.

Nhìn qua mã VLC và tìm ra nếu có một cách để gửi thông điệp của những cửa sổ.

EDITThis appears đã đến ra trong tuần này.

+0

Kỹ thuật này yêu cầu người dùng bắt đầu VLC với một số cờ (thông qua dòng lệnh chính xác cho tôi nếu tôi sai). Tôi cũng phải đối mặt với vấn đề này nếu người dùng của tôi đã bắt đầu VLC từ cửa sổ. Tôi không thể yêu cầu người dùng của mình vào chế độ RC. Không VLC cung cấp bất kỳ cách nào khác để kiểm soát chính nó? Giống như giao diện COM trong windows media player hoặc iTunes? – MaX

+0

MaX Tôi nghĩ rằng có một libvlc nhưng nó không được quản lý –

2

có bạn nhìn vào libvlc

Bạn có thể kết hợp nó trong thư viện và tương tác với VLC thông qua đó.

3

Như Eoin đã đề cập, libvlc có thể được sử dụng để tương tác với VLC. Là người dùng C#, bạn có thể thử các liên kết .NET được cung cấp bởi dự án libvlc-sharp.

Chỉnh sửa: Dường như dự án này đã không được duy trì trong nhiều năm. Tôi sẽ để lại liên kết anyway, trong trường hợp bạn muốn có một cái nhìn vào nó và có thể đặt một số nguồn của nó để sử dụng.

+1

thư viện này đã lỗi thời 3 ngày trước –

+0

Giống như 3 năm ;-) Nhưng dù sao, đăng cập nhật với cảnh báo. –

+0

Không, tôi nghĩ Sam có nghĩa là kể từ khi nhóm chia codebase thành các thư viện riêng biệt, trình bao bọc interop hiện tại không còn hoạt động nữa. Bạn sẽ cần một trình bao bọc mới cho các hàm trong thư viện libvlc. –

0

Nếu những gì bạn đang cố gắng làm là kiểm soát một thực thi chạy trước đó, hãy kiểm tra các lớp Process liệt kê qua tất cả các current processes hoặc làm điều đó bằng cách name. kiểm tra thực thi để phù hợp với vlc.exe. sau đó, bạn có thể nhận được một tay cầm vào cửa sổ chính và thực hiện một số lệnh P/Invoke gửi tin nhắn như bạn đang làm với các tập tin thực thi khác của bạn. Điều này rõ ràng là thủng với các vấn đề tiềm năng như nếu có những thay đổi cho các phím tắt bàn phím.

+0

Đây là một cách tiếp cận thực sự nguy hiểm vì bạn không thể theo dõi tình trạng phát lại chính xác. –

+0

Tôi đồng ý. Tôi chỉ đưa ra một tùy chọn về cách tìm cửa sổ/quy trình. –

+0

Ngoài ra, hãy xem mã của tôi, nó cho thấy cách tìm quy trình con vlc. Một chút phức tạp hơn là chỉ tìm kiếm theo tên –

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