2011-10-27 29 views
40

tôi đã cố gắng HTTP Ogg/Theora và làm việc ổn với Chrome nhưng không phải với Firefox 7.Làm cách nào để sử dụng các luồng trực tiếp VLC với video HTML5?

VLC Cấu hình:

Để thử nghiệm, tôi đã trực tuyến máy tính để bàn sử dụng cấu hình dòng lệnh vlc sau:

màn hình

vlc.exe: //: màn hình fps = 30: màn hình bộ nhớ đệm = 100 : sout = # chuyển mã {vcodec = theo, vb = 800, quy mô = 1, width = 800, height = 600, acodec = none}: http {mux = ogg, dst =: 8181/máy tính để bàn} : no-sout-rtp-sap: no-sout-standard-sap: tt l = 1: sout-giữ

HTML5 cấu hình thẻ video:

<video id="video" src="http://my_host_name:8181/desktop" type="video/ogg; codecs=theora" autoplay="autoplay"/> 

Bất kỳ ý tưởng?

+0

Tại sao phát trực tuyến chậm? làm thế nào tôi có thể làm cho nó nhanh? – YumYumYum

Trả lời

35

Tôi đã vật lộn với điều này một thời gian và tôi đã có thể xác minh rằng Ogg/Theora hoạt động tốt trong Firefox 7, Nightly 10 và Opera Next.

Mọi thứ hiện đang hoạt động trên Google Chrome. Vấn đề tôi gặp phải với Chrome là phiên bản Chrome mới nhất trong XP không còn cần hướng dẫn '--enable-webgl' được truyền trong dòng lệnh nữa. Mục dòng lệnh duy nhất được yêu cầu trong XP là '--ignore-gpu-blacklist' vì GPU bị liệt vào danh sách đen trong XP.

Ngoài ra, tôi có thể xác minh rằng Chrome hoạt động tốt với luồng Web-m/VP8/Vorbis. Opera và Firefox vẫn chưa hỗ trợ nó.

Những vấn đề chính tôi thấy là:

1 - Trang tải: Nếu bạn tải trang của bạn từ hệ thống tập tin của bạn như trái ngược với từ trình duyệt web, video sẽ không được hiển thị (bất kỳ video, vlc hoặc tệp).

Để khắc phục sự cố, chỉ cần đảm bảo bạn đang tải nội dung của mình từ máy chủ web.

2 - Phát trực tiếp/thời gian thực: VLC đã được sử dụng và để làm cho nó hoạt động, tôi phải điều hướng xung quanh giới hạn bảo mật của WebGL/HTML5 Video. Điều đó xảy ra là các luồng video không bắt nguồn từ cùng một máy chủ web và ngữ cảnh web hoặc ngữ cảnh phụ sẽ không được phát do các giới hạn bảo mật.

Để khắc phục điều này, chỉ cần đứng trước máy chủ ứng dụng của bạn với máy chủ web Apache và định cấu hình luồng VLC của bạn ở dưới ngữ cảnh web từ các trang web đã tải của bạn. Ví dụ, trong Apache 2.2 cho phép mod proxy và thêm dòng sau vào file httpd.conf của bạn:

# Mod_proxy Module 
ProxyReceiveBufferSize 16384 

ProxyRequests On 
ProxyVia On 
ProxyPreserveHost On 

<Proxy *> 
    Order deny,allow 
    Allow from all 
</Proxy> 

# VLC server stream 
ProxyPass /desktop/video/stream.ogg http://vlc_streaming_host:8181/desktop.ogg 
ProxyPassReverse /desktop/video/stream.ogg http://vlc_streaming_host:8181/desktop.ogg 

# If content is on another server (JBoss, Spring, etc...) then uncomment next lines 
#ProxyPass /desktop http://server_content_host:8080/streamer 
#ProxyPassReverse /desktop http://server_content_host:8080/streamer 

Nếu bạn cũng đang sử dụng Apache để lưu trữ nội dung bạn, sau đó, và dựa trên ví dụ trên, chỉ đặt (các) trang html của bạn dưới một thư mục có tên là "máy tính để bàn".

Kết luận cho đến thời điểm này: Mặc dù thông số video HTML5 cung cấp chỗ cho luồng, cho đến nay kết luận của tôi là video HTML5 chưa sẵn sàng phát trực tuyến. Trong các thử nghiệm của tôi, thẻ video sẽ luôn luôn đệm và tôi không thể tìm thấy cách để nó bị vô hiệu hóa và điều này kết thúc gây ra độ trễ ít nhất 5 đến 8 giây sau.

Vì vậy, tôi đoán rằng hiện tại các giải pháp dựa trên Flash và RTMP vẫn là cách để thực hiện.

+2

Cảm ơn bạn rất nhiều vì đã trả lời câu hỏi của riêng bạn, Nó đã giúp tôi. – coder000001

+0

Mọi cập nhật cho điều này? Tôi đã cố gắng chuyển mã một luồng mjpeg thành mp4 để tiết kiệm băng thông, nó hoạt động nhưng video sẽ nói lắp mỗi vài giây. 'vlc --intf = rc http: // localhost: 8080/stream? topic =/image_raw --sout = '# chuyển mã {vcodec = theo, vb = 800, tỷ lệ = 1, chiều rộng = 640, chiều cao = 480, acodec = none}: http {mux = ogg, dst =: 8181/desktop.ogg '}: no-sout-rtp-sap: no-sout-standard-sap: ttl = 1: sout-keep' –

+0

Cách tạo luồng nhanh? chậm chạp chậm chạp của nó ... thời gian trôi qua nhiều hơn – YumYumYum

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