2012-11-26 38 views
7

Tôi đang cố tạo một thuật toán cơ bản để che giấu mất gói cho âm thanh lõi. Tôi chỉ đơn giản là muốn thay thế dữ liệu còn thiếu bằng im lặng .. trong cuốn sách học tập âm thanh cốt lõi, tác giả nói rằng trong PCM không mất mát, số không nghĩa là im lặng. Tôi đã tự hỏi nếu tôi đang chơi VBR (tức là dữ liệu nén), sẽ đặt số không đủ cho sự im lặng là tốt?âm thanh lõi: không tương đương với độ im lặng chỉ cho âm thanh PCM?

Trong mã hiện tại của tôi .. khi tôi cắm số không vào hàng đợi âm thanh .. nó đột nhiên kẹt (tức là nó không còn giải phóng tiêu thụ dữ liệu trong hàng đợi gọi lại âm thanh ..) và tôi tự hỏi tại sao

+0

Đối với các định dạng nén phổ biến nhất, thay thế dữ liệu bị thiếu, nói với đoạn đường nối để tắt tiếng sau khi hủy nén, không phải là vấn đề duy nhất. (Re) Đồng bộ hóa với một luồng dữ liệu nén sau khi thả ra cũng là một vấn đề lớn. Bạn không thể chỉ bắt đầu giải mã ở bất cứ đâu và có dữ liệu tạo ra bất kỳ ý nghĩa nào. – hotpaw2

Trả lời

3

PCM là mẫu được mã hóa thô. Tất cả 0 (khi sử dụng dữ liệu đã ký cho mẫu) thực sự là im lặng. (Trong thực tế, tất cả giá trị bất kỳ là im lặng, nhưng bù đắp DC như vậy có khả năng làm hỏng bộ khuếch đại và/hoặc loa của bạn, nếu nó không bị lọc ra.)

Khi bạn nén bằng codec mất dữ liệu, bạn nhập định dạng kỹ thuật số ở nơi không tầm thường để chỉ thêm sự im lặng. Hãy suy nghĩ về việc thêm dữ liệu vào tệp ZIP để thêm byte trống vào cuối tệp. Nó không đơn giản như việc chèn chúng một cách tùy ý vào tệp ZIP.

Nếu bạn muốn thêm im lặng vào tệp nén, bạn phải làm như vậy bằng cách sử dụng codec thích hợp. Sau đó, bạn phải phù hợp với nó vào bitstream, mà cũng không phải là tầm thường. Thông thường, luồng được chia nhỏ theo các khung, nhưng bạn thậm chí không thể chia nhỏ các khung đó ở một số định dạng. MP3 và AAC sử dụng một hồ chứa bit mà dữ liệu không sử dụng trong các khung hình trước có thể được sử dụng để mã hóa các khung phức tạp hơn sau này, khiến việc chia nhỏ tập tin trở nên rất khó khăn.

+0

điều gì sẽ xảy ra nếu tôi chuyển đổi định dạng dữ liệu nén (ví dụ: MP3 hoặc AAC) thành PCM .. * sau đó * thêm sự im lặng ở dạng số 0 .. đó phải là một thao tác đơn giản đúng không? – abbood

+0

Đúng vậy. Chỉ cần nhớ rằng nếu bạn muốn nén lại, bạn sẽ mất chất lượng bổ sung trong âm thanh. – Brad

+0

nén lại sẽ không cần thiết .. b/c tôi sẽ chỉ phát nhạc ngay lập tức sau khi tôi nén nó và chèn các phần im lặng .. đang được nói .. lo lắng duy nhất của tôi là độ trễ .. của tôi ứng dụng là thời gian thực: một điện thoại sẽ phát nhạc đến các điện thoại khác sẽ nhận các gói âm thanh và phát chúng đồng bộ .. nếu thời gian khử là không đổi .. sẽ chỉ thêm thời gian đệm liên tục ở đầu .. nhưng nếu nó biến .. sau đó tôi gặp rắc rối – abbood

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