2010-05-09 21 views
22

Hy vọng rằng ai đó có thể giúp tôi với điều này.Tìm kiếm thông qua tệp MP3 được truyền trực tiếp bằng HTML5 <audio> thẻ

Tôi đang phát xung quanh với máy chủ node.js truyền luồng âm thanh đến ứng dụng khách và tôi muốn tạo trình phát HTML5. Ngay bây giờ, tôi đang phát trực tuyến mã từ nút bằng cách sử dụng mã hóa chunked và nếu bạn truy cập trực tiếp vào URL, nó hoạt động tốt.

Những gì tôi muốn làm là nhúng này sử dụng thẻ HTML5 <audio>, như vậy:

<audio src="http://server/stream?file=123"> 

nơi /stream là thiết bị đầu cuối cho máy chủ nút để dòng MP3. Trình phát HTML5 tải tốt trong Safari và Chrome, nhưng nó không cho phép tôi tìm kiếm và Safari thậm chí còn cho biết đó là "Phát sóng trực tiếp". Trong tiêu đề của /stream, tôi bao gồm kích thước tệp và loại tệp và phản hồi được kết thúc đúng cách.

Bất kỳ suy nghĩ nào về cách tôi có thể giải quyết vấn đề này? Tôi chắc chắn chỉ có thể gửi toàn bộ tập tin cùng một lúc, nhưng sau đó người chơi sẽ đợi cho đến khi toàn bộ nội dung được tải xuống - tôi muốn truyền tải nó.

+0

Tôi cũng muốn làm điều này, nhưng tất cả tôi đã tìm thấy là điều này chỉ được hỗ trợ bởi định dạng ogg và m4a. Vì vậy, tôi không chắc chắn nó là có thể. Nhưng tôi vẫn đang tìm kiếm. –

Trả lời

2

xem ở đây http://www.scottandrew.com/pub/html5audioplayer/, tôi đã sử dụng tính năng này và phát trong khi đang tải xuống tệp. Nó chờ đợi một chút cho bộ đệm nhưng sau đó chơi. Không bao giờ cố gắng tìm kiếm mặc dù nhưng tôi sẽ bắt đầu bằng cách cố gắng để thiết lập "aud.currentTime" trong mã của mình nếu điều đó có thể được thực hiện.

Chúc may mắn

1

Bạn có gửi một dãy Accept-(header RFC 2616, Section 14.5) phản ứng?

+1

Có lẽ tôi đã không quá rõ ràng trong câu hỏi ban đầu của tôi: Tôi chỉ muốn tìm kiếm trong phần đệm của video, do đó, yêu cầu phạm vi byte không cần thiết vào lúc này. –

-1

Từ những gì tôi hiểu bạn muốn các cầu thủ để cho phép người sử dụng để chuyển đến các bộ phận của âm thanh/video mà thiên đường' Tôi không chắc liệu điều này có khả thi hay không, vì tôi đã xem xét một số ví dụ về các phần tử trung gian html5 và họ không cho phép tôi tìm kiếm các bộ phận không được lọc :(

Nếu bạn muốn tìm qua phần đệm - thì đó không phải là vấn đề. tạo ra một vấn đề cho chính mình ở đây, theo như tôi hiểu. Bạn muốn truyền tệp và điều này làm cho người chơi nghĩ rằng bạn có một số loại luồng trực tiếp trên mạng. Nếu bạn vừa gửi tệp trực tiếp - bạn sẽ không gặp phải vấn đề này, vì trình phát sẽ có thể bắt đầu phát trước khi tải toàn bộ tệp. Điều này hoạt động tốt với cả phần tử âm thanh và video và tôi đã xác nhận hành vi này trong cả Chrome và FF :)

Hy vọng điều này sẽ hữu ích!

+0

Tôi không thể cung cấp tệp trực tiếp cho trình phát của khách hàng do chính sách địa phương. Khi tôi khởi động lại quá trình phát lại hoặc tìm cách bắt đầu, không có yêu cầu mới nào được thực hiện, nó sẽ phát từ bộ đệm được đệm. Tôi không thể tìm kiếm bất cứ nơi nào khác. – Qwerty

-1

có lẽ điều này html5 audio player example sẽ giải thích và minh họa cho chúng tôi phần tử mới và các phương thức .load, .play, .currentTime, v.v.

tôi sử dụng một loạt các phần tử và có thể đặt vị trí hiện tại của khóa học. chúng tôi cũng có thể sử dụng các trình xử lý sự kiện (ví dụ: 'loadeddata') để chờ trước khi cho phép tìm kiếm.

ping và vui chơi với html5 :)

5

Hãy chắc chắn rằng máy chủ chấp nhận yêu cầu Range, bạn có thể kiểm tra xem nếu Accept-Ranges là trong tiêu đề. Trong jPlayer, đây là một vấn đề phổ biến trong các trình duyệt Webkit (đặc biệt là Chrome) khi nói đến tiến trình và chức năng tìm kiếm.

Bạn có thể không sử dụng jPlayer, nhưng thông tin Phản hồi của máy chủ trên trang web chính thức có thể được sử dụng.

http://www.jplayer.org/latest/developer-guide/#jPlayer-server-response

+0

Cảm ơn bạn đã chỉ ra jplayer - không thể tin rằng tôi đã không nghe nói về nó trước khi – acatalept

+0

Tuyệt vời! Làm việc như người ở. Seek không làm việc trên Chrome, nhưng đang làm việc trên Firefox và Safari. Thêm Accept-Ranges vào tiêu đề và tìm kiếm bắt đầu hoạt động. –

-2

nhưng tôi cũng gặp vấn đề tương tự. Cần thiết để đặt một số tiêu đề cho phản hồi tệp phương tiện.

làm ví dụ:

Accept-Ranges:bytes 
Content-Length:7437847 
Content-Range:bytes 0-7437846/7437847 

thẻ Sau đó âm thanh sẽ có thể tìm kiếm