2014-04-04 18 views
5

Tôi đang cố gắng tạo ra các tệp opus bitrate thấp với L/R stereo. Điều gì sẽ quyết định nếu opusenc sẽ sử dụng L/R stereo thay vì âm thanh nổi chung? Có lá cờ nào tôi có thể vượt qua không? Nó có liên quan đến bitrate không?Buộc L/R stereo

opusenc input.wav output.opus //produces L/R stereo 
opusenc input.wav output.opus --bitrate 8 //produces joint stereo 
+0

Tôi đã thử nghiệm điều này bằng cách mã hóa một tệp có tách âm thanh nổi rất cao và nghe kết quả. Các kênh tách biệt rõ ràng với mã hóa mặc định. –

Trả lời

2

Nó trông giống như nó được xác định here:

if (st->force_channels!=OPUS_AUTO && st->channels == 2) 
    { 
     st->stream_channels = st->force_channels; 
    } else { 
#ifdef FUZZING 
     /* Random mono/stereo decision */ 
     if (st->channels == 2 && (rand()&0x1F)==0) 
      st->stream_channels = 3-st->stream_channels; 
#else 
     /* Rate-dependent mono-stereo decision */ 
     if (st->channels == 2) 
     { 
      opus_int32 stereo_threshold; 
      stereo_threshold = stereo_music_threshold + ((voice_est*voice_est*(stereo_voice_threshold-stereo_music_threshold))>>14); 
      if (st->stream_channels == 2) 
      stereo_threshold -= 4000; 
      else 
      stereo_threshold += 4000; 
      st->stream_channels = (equiv_rate > stereo_threshold) ? 2 : 1; 
     } else { 
      st->stream_channels = st->channels; 
     } 
#endif 
    } 

Chỉ cần ngắn gọn đọc qua mã nguồn opusenc, có vẻ như thiết force_channels tới 2 trên struct OpusEncoder sẽ lam cho no hoạt động. Tuy nhiên, nhìn qua mã nguồn opusenc.c, không có trường nào được đặt. Bạn có thể dễ dàng sửa đổi nguồn, tuy nhiên, luôn luôn buộc kênh phải là hai. Trong tương lai, có vẻ như opus gọi nó là "stereo kép" thay vì "L/R stereo".

+0

Lộn xộn với mã bạn dán ở trên sẽ chỉ thay đổi khi bộ mã hóa quyết định downmix thành mono trong nội bộ. Chế độ âm thanh nổi chính xác (L/R vs mid-side vs intensity) được lan truyền giữa mã SILK và CELT và không phải là thứ bạn nên làm. Tôi không chắc chắn những gì bài gốc đã cố gắng đạt được, nhưng rối tung với chế độ âm thanh nổi có khả năng không phải là. –

1

Opus theo mặc định cố gắng đưa ra quyết định tốt nhất có thể dựa trên tốc độ bit hiện tại. Quyết định này được thực hiện trên bảng sau (20 ms khung kích thước):

  • 8-12 kbit/s cho NB ngôn luận,
  • 16-20 kbit/s cho WB ngôn luận,
  • 28-40 kbit/s cho bài phát biểu FB,
  • 48-64 kbit/giây cho nhạc đơn âm FB và
  • 64-128 kbit/s cho nhạc stereo FB.

Điều này là do opus giả định rằng, nếu bitrate quá thấp, nó không thể mã hóa âm thanh nổi với chất lượng đủ.

Thực ra tài liệu cho biết rằng có thể thay đổi số lượng kênh NHƯNG nó không giải thích cách thực hiện. Tôi sẽ xem xét sau này về cách làm điều này.

Bạn có thể tìm thấy những thông tin trên rfc6716

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