2013-02-25 22 views
9

Làm cách nào để nhận được độ dài phát của tệp ogg mà không tải xuống toàn bộ tệp? Tôi biết điều này là posible bởi vì cả hai thẻ HTML5 và VLC có thể hiển thị toàn bộ chiều dài chơi ngay lập tức sau khi tải URL, mà không cần tải toàn bộ tập tin.Lấy chiều dài của đường đi ogg từ s3 mà không cần tải xuống toàn bộ tệp

Có tiêu đề hoặc nội dung nào tôi có thể đọc hay không. Có lẽ ngay cả bitrate, mà tôi có thể chia cho kích thước tập tin để có được một chiều dài chơi gần đúng?

+0

Bạn định đọc tệp ogg như thế nào? Hơn nữa, bạn sẽ làm gì với tệp - chỉ cần trích xuất thông tin và hiển thị? – Jesse

Trả lời

9

Thật không may có vẻ như không phải là cách để đạt được điều này.

Mozilla's Configuring servers for Ogg media rất hữu ích. Về cơ bản:

  1. Gecko sử dụng X-Content-Duration tiêu đề - gửi bởi web server nếu nó có nó. Điều này giải thích ví dụ về luồng âm thanh HTML5 mà bạn đã nêu. Nếu mất tích, sau đó
  2. Gecko ước tính chiều dài dựa trên mẫu-rate (trong tiêu đề) và kích thước của các tập tin từ tiêu đề Content-length HTTP

Tỷ lệ mẫu được lưu trữ trong Header Identification - gói tiêu đề đầu tiên. Xem the specification chuyển đến phần "4.2 Thiết lập giải mã và giải mã tiêu đề"

0

Điều này không thể thực hiện được nếu không tải xuống dữ liệu. Bạn có thể chỉ định các thông tin liên quan như một phần của siêu dữ liệu S3 của khóa liên quan. Vì vậy, có thể viết để quan sát siêu dữ liệu trước khi thực sự tải xuống dữ liệu.

+2

Nó phải là posible. Thẻ HTML5 '

1

Điều này có thể. Cách để thực hiện việc này là sử dụng HTTP range requests để tìm nạp phần cuối của tệp, tìm trang Ogg cuối cùng và trích xuất dấu thời gian từ tệp đó. Điều này giả định rằng tệp bao gồm các dòng liền nhau (tức là không có chuỗi) mà tất cả đều có cùng độ dài và thời gian luồng bắt đầu bằng 0 (nếu không, bạn nên giải mã phần đầu luồng và trừ dấu thời gian đó khỏi dấu thời gian cuối cùng) . Giải mã dấu thời gian từ trường granulepos của Ogg Page là codec cụ thể (ví dụ: Vorbis nó được biểu diễn dưới dạng một số mẫu).

Hoặc, nếu tệp Ogg của bạn có siêu dữ liệu Ogg Skeleton, bạn có thể đọc trực tiếp để xác định thời lượng của tệp.

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