2012-03-09 23 views
6

Tôi gặp sự cố, tôi hy vọng bạn có thể giúp tôi. Tôi có một số thiết bị đầu cuối mỏng với Linux, nơi một tập lệnh nhỏ được khởi chạy mỗi lần khởi động. Tập lệnh này có một dòng lệnh cvlc duy nhất mà sau đây là:Phát video có VLC ở X11 từ thiết bị đầu cuối từ xa

cvlc --quiet --fullscreen --no-osd --loop playlist.xspf 

Điều này hoạt động OK vì các thiết bị đầu cuối khởi động môi trường X11 và sau đó tập lệnh được khởi chạy tự động; video được phát và hiển thị một màn hình LCD. Vấn đề của tôi xuất hiện khi vì lý do này hay lý do khác, tôi cần phải giết quá trình cvlc từ xa và khởi động lại nó. Tôi ssh các thiết bị đầu cuối với cùng một người dùng đăng nhập trong môi trường X11, tôi khởi động dòng mã mô tả ở trên và video phát, có ... nhưng TRONG thiết bị đầu cuối tôi đăng nhập!

Vì vậy, video phát ở chế độ chỉ có ký tự, video sẽ được hiển thị dưới dạng văn bản trong bảng điều khiển của tôi; tất nhiên không có gì có thể được nhìn thấy trong môi trường X11. Vì vậy, câu hỏi của tôi là: Làm thế nào tôi có thể khởi chạy lệnh cvlc của tôi VÀ phát video trong X11 NOT trong giao diện điều khiển chính nó ???

Nếu tôi chỉ cố gắng để chơi nó không có tùy chọn, tôi có kết quả như sau:

$ cvlc playlist.xspf 
VLC media player 1.1.4 The Luggage (revision exported) 
Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS") 
Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE") 
[0x9cb1114] inhibit interface error: Failed to connect to the D-Bus session daemon: /bin/dbus-launch terminated abnormally with the following error: Autolaunch error: X11 initialization failed. 

[0x9cb1114] main interface error: no suitable interface module 
[0x9cb0754] main interface error: no suitable interface module 
[0x9c17914] main libvlc error: interface "globalhotkeys,none" initialization failed 
[0x9caeca4] dummy interface: using the dummy interface module... 
[0x9cabfa4] main playlist: stopping playback 
[0x9dedb34] xcb_xv generic error: parent window not available 
[0x9dedb34] xcb_x11 generic error: parent window not available 
[0x9dedb34] xcb_glx generic error: parent window not available 
[0x9dedb34] fb generic error: cannot get terminal mode (Invalid argument) 
Blocked: call to signal(28, 0x60ae4e0) 
Blocked: call to setlocale(6, "") 
Blocked: call to sigaction(20, 0x46935e0, (nil)) 
Blocked: call to sigaction(2, 0xb730c948, (nil)) 
                          Blocked: call to sigaction(15, 0xb730c948, (nil)) 
Blocked: call to sigaction(28, 0xb730c948, (nil)) 
^C[0x9cae2b4] signals interface error: Caught Interrupt signal, exiting... 
[email protected]:~$ 

Vì vậy, vấn đề là, tất nhiên, tôi đã không có quyền truy cập trực tiếp đến X11 từ thiết bị đầu cuối từ xa của tôi , vậy làm cách nào để phát video từ bảng điều khiển từ xa bằng cvlc hoặc vlc?

Xin hãy giúp tôi, THANKS A LOT !!!

Trả lời

7

Các $ DISPLAY biến môi trường giữ giá trị của instance X server nơi các ứng dụng đồ họa có thể chạy . Do đó giá trị này nó cần thiết:

echo $DISPLAY 
:0 

Sau đó, giá trị này phải được sử dụng với cVLC --x11-display tùy chọn như trong:

cvlc --x11-display :0 video.mp4 

Bằng cách này, video sẽ xuất ra phiên X Server ngay cả khi lệnh này nó được sử dụng trong phiên ssh từ xa.Tuy nhiên, nếu phiên nó đã hoàn thành, video sẽ dừng lại, vì vậy bạn cần phải nền công việc, vì vậy khi bạn đăng xuất, video tiếp tục chơi:

cvlc --x11-display :0 video.mp4 & 

Là một tài liệu tham khảo về nhu cầu chính xác của tôi rằng có lẽ bạn sẽ tìm thấy hữu ích, nếu bạn cần chạy video trong thiết bị đầu cuối từ xa và bạn cần vòng lặp, không có giao diện VLC nhìn thấy được, toàn màn hình và không có đầu ra tuyệt đối trong bảng điều khiển, bởi vì nếu bạn chạy lệnh như trong ví dụ trước, có thể VLC đầu ra sẽ được ném trong phiên SSH khác với cùng một người dùng, bạn sẽ cần phải chạy phiên này theo cách này:

cvlc -q --no-osd -L -f --no-video-title-show --x11-display :1 video.mp4 2&>1 >/dev/null & 

Đầu ra và lỗi chuẩn sẽ không xuất hiện phiên này theo cách này.

+1

Bất kỳ ý tưởng nào sẽ thực hiện nếu biến 'DISPLAY' không được đặt? Chỉ cần sử dụng 0? – puk

7

Bạn cần đặt biến DISPLAY.

Ví dụ:

export DISPLAY=:0 

Bạn có thể cần phải sử dụng thiết lập thay vì xuất khẩu (và/hoặc thay đổi: từ 0 đến một cái gì đó tương tự, tôi không thể kiểm tra vào lúc này, google cho biến DISPLAY) nhưng thats ý tưởng chung để nói hiển thị đầu ra nào bạn muốn cửa sổ xuất hiện.

CẬP NHẬT: Như bạn có thể nhìn thấy từ những ý kiến ​​dưới đây OP tìm thấy các tùy chọn dòng lệnh:

--x11-display :0 
+1

Cảm ơn câu trả lời của bạn đã chỉ cho tôi đúng hướng, tuy nhiên tôi chưa tìm thấy lệnh cvlc CHÍNH XÁC để thực hiện điều này uu tôi đã googled và dường như là tùy chọn '--x11-display 0' nhưng tôi nhận được một tiêu đề cửa sổ là "Màu AsCii Art" Vì vậy, libcaca nó đang được sử dụng để làm cho video như AsCii =/mmm ... – Metafaniel

+0

Tôi cuối cùng đã có dòng lệnh CVLC chính xác tôi cần, THANKS bạn đã hữu ích. Tôi không thể đánh dấu giải pháp của bạn như một câu trả lời, nó không hoàn chỉnh. Tôi có nên hỏi câu hỏi của riêng tôi hoặc bạn sẽ bổ sung cho bạn bằng lệnh? Cảm ơn – Metafaniel

+0

Bạn đã thử đặt "Đầu ra video" từ "Tùy chọn" trong GUI và xem liệu nó có lưu cài đặt để sử dụng trong tương lai không? – zaf

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