2011-01-04 25 views
6

Tôi đang viết một ứng dụng phát trực tuyến cho MP3 (CBR). Đó là tất cả passthru, có nghĩa là tôi không phải giải mã/mã hóa, tôi chỉ cần truyền dữ liệu khi tôi thấy nó đi qua. Tôi muốn để có thể đếm các khung hình MP3 như họ passthru (và một số công cụ khác như tính toán thông lượng).Làm cách nào để phân tích dữ liệu MP3 để trích xuất các khung được đánh số?

Theo MP3 frame header spec, từ đồng bộ dường như là mười một (11) bit 1s, tuy nhiên tôi thông báo (tự nhiên) mà tải trọng khung mà tôi một cách an toàn nên giả định là nhị phân và do đó nó không phải là số lẻ ở tất cả để xem mười một (11) 1s theo thứ tự.

Câu hỏi của tôi:

  1. Có Unix | Linux | Perl phân tích cú pháp MP3 tiện ích (dd kiểu) có thể kéo khung đánh số từ một tập tin MP3/ống?
  2. Làm cách nào để phân định khối tiêu đề MP3 từ bất kỳ dữ liệu tải trọng nhị phân nào khác? và cuối cùng:
  3. Là một bitrate không đổi (CBR) MP3 được xác định bởi byte tải trọng hoặc là byte tiêu đề được bao gồm trong tổng số # byte/bit cho mỗi lần có thời gian nhất định không?

Cảm ơn,

+0

kiểu dd? Bạn có nghĩa là một cái gì đó khó hiểu khi sử dụng, hoạt động trong các đơn vị khó xử hơn là byte, và khi sử dụng các khối byte * sau khi tất cả *, trở nên tự nhiên chậm ... (Tôi nghĩ bạn muốn 'dd_rescue' trong tương lai để sao chép dữ liệu.) – user562374

+0

Vâng, phong cách dd có nghĩa là tôi có thể hoặc tên/số một khung để khai thác vào một ống & | hoặc tôi có thể chỉ định phạm vi khung theo cách mà dd bỏ qua | tìm kiếm | đếm. đ có vấn đề riêng của nó không có nghi ngờ, nhưng dd_rescue hỗ trợ tìm kiếm? – Xailor

+0

Bạn đang sử dụng ngôn ngữ nào? – Brad

Trả lời

4

tôi sẽ mất một đâm vào # 2.

Đó là sự hiểu biết của tôi rằng cách phổ biến để đồng bộ với các dòng MP3 (và do đó cho phép đếm lại các khung hình) là để làm điều này:

  • Tìm kiếm từ đồng bộ
  • Khi đồng bộ tìm thấy từ, xác nhận phần còn lại của tiêu đề
  • Nếu tiêu đề khung hợp lệ, bạn nên biết vị trí của tiêu đề tiếp theo
  • Nếu bạn nhấn 3 hoặc 4 tiêu đề liên tiếp và chúng hợp lệ, rất có thể là bạn đã tìm thấy chúng.

Tôi đã xem một trang gần đây với tài liệu về điều này, nhưng hiện tại tôi không thể tìm thấy tài liệu này. Nếu tôi tìm thấy nó một lần nữa, tôi sẽ đăng nó.

+0

Có một cuộc nói chuyện về điều này chỉ một thời gian trước đây liên quan đến regexps bit-khôn ngoan của Erlang, nhưng nó là không tầm thường để bitwise phù hợp với các mẫu tiêu đề khung MP3. Bất kỳ tài liệu tham khảo nào cũng tuyệt vời :) – Xailor

+0

Tôi quyết định không đun sôi đại dương và giữ tất cả các tệp nghiêm ngặt-CBR và gắn bó với 'dd'. 'bs = $ [144 * $ bitrate/$ samplerate]' dường như làm việc quyến rũ. – Xailor

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