2009-08-07 55 views
13

Định dạng âm thanh được đề xuất để lưu trữ và phát lại hiệu ứng âm thanh ngắn (2-3 giây) âm thanh trên iPhone hoặc iToouch là gì?Định dạng tốt nhất cho hiệu ứng âm thanh trên iPhone

Các tài liệu SDK audio iPhone chỉ ra rằng iPhone hỗ trợ âm thanh trong một số định dạng - tuy nhiên có nhược điểm cho mỗi:

  • MP3: Đây là một nén cao, mà còn định dạng mã hóa chất lượng cao bảo tồn sự phong phú của âm nhạc và giọng nói. Tuy nhiên, chỉ có một luồng mp3 duy nhất có thể phát cùng lúc trên iPhone vì nó yêu cầu sử dụng bộ giải mã phần cứng. Điều này không bao gồm mp3 như một định dạng cho hiệu ứng âm thanh, vì chúng sẽ làm gián đoạn nhạc nền và/hoặc bất kỳ nhạc người dùng nào được phát.
  • WAV: iPhone chỉ hỗ trợ các tệp WAV nếu chúng được mã hóa PCM và không yêu cầu bất kỳ codec nén nào. Trong khi WAV hỗ trợ nhiều tỷ lệ lấy mẫu khác nhau và độ sâu bit, kết quả là các tệp rất lớn (180k/giây cho âm thanh nổi 16-bit/44,1kHz/âm thanh nổi). Kích thước lớn trở nên nghiêm trọng khi bạn có nhiều hiệu ứng để chơi nhanh.
  • AIFF: Có vấn đề tương tự với tệp WAV - không rõ liệu có bất kỳ codec nén nào được hỗ trợ hay không. Giả sử Apple Lossless nén được hỗ trợ - nhưng tôi không thể tìm thấy bất kỳ công cụ có thể tạo ra AIFF trong việc sử dụng nén này.
  • Tùy chỉnh: Bạn có thể sử dụng API cấp thấp của iPhone để phát âm thanh của riêng bạn từ bất kỳ nguồn nào. Nhưng điều này có vẻ như quá mức để chơi một hiệu ứng âm thanh đơn giản trong một trò chơi. Tôi chắc chắn không muốn viết lớp âm thanh của riêng tôi và bộ mã hóa/giải mã chỉ cho việc này.

Mọi đề xuất sẽ được đánh giá cao ... cũng sẽ hữu ích nếu ai đó có thể đề xuất công cụ giá hợp lý để xử lý âm thanh có thể tạo định dạng được đề xuất. Cảm ơn.

Trả lời

10

Bạn có thể sử dụng tệp nén IMA4, cung cấp nén 1: 4 từ tệp WAV và được giải nén bằng phần cứng (bạn có thể tải chúng bằng AVAudioPlayer).

Đối với MP3, bạn chỉ có thể phát một tệp cùng một lúc ở định dạng đó, đó là lý do tại sao nó không được khuyến khích cho hiệu ứng âm thanh mà bạn có thể có nhiều hơn một cùng một lúc.

Tôi đang sử dụng tệp IMA4 với OpenAL, vì vậy tôi giải nén chúng theo cách thủ công bằng mã dựa trên this post.

+1

không phải là một Debby Downer, nhưng nó rất dễ dàng để chơi nhiều mp3 cùng một lúc. Chỉ cần sử dụng nhiều phiên bản của trình phát AVAudio. –

+1

Ít nhất là khi tôi đăng câu trả lời này, đây không phải là trường hợp. 'AVAudioPlayer' chỉ cho phép một tệp MP3 duy nhất được phát cùng một lúc, trong khi lần phát thứ cấp sẽ hiển thị độ trễ đáng kể và giảm xuống. Tôi đoán đây vẫn là trường hợp, hơn thế nữa đối với trò chơi, nơi bạn cần kiểm soát chính xác khi âm thanh bắt đầu. – pgb

2

Tôi đã may mắn với các tệp định dạng CAF mặc dù WAV có kích thước gần.

Đối với các công cụ, Audacity là miễn phí và có chức năng hợp lý. Tôi chủ yếu sử dụng Amadeus Pro (khoảng 40 đô la Mỹ). Khá phong nha và tạo ra tất cả các định dạng âm thanh hỗ trợ iPhone (bao gồm MP3, AIFF, WAVE, AAC và CAF). Một tính năng tốt đẹp là nó hỗ trợ AudioUnit và VST plug-in để bạn có thể thêm SoundFX.

Tôi cũng đã nghe những điều tốt đẹp về Phân hạch (bởi Rogue Amoeba) nhưng chưa thực sự sử dụng nó. Các sản phẩm âm thanh khác của họ khá chắc chắn.

Khung AVAudioPlayer khá tốt khi phát các clip ngắn, nhưng bạn có thể muốn tải trước âm thanh (gọi prepareToPlay) và giữ chúng xung quanh nếu bạn có thể tiết kiệm bộ nhớ.

+0

Tôi nghĩ CAF chỉ là định dạng vùng chứa và có thể chứa bất kỳ MP3, IMA4, AIFF, v.v. Tôi có sai không? – mahboudz

+0

Tệp CAF có thể chứa các loại định dạng tệp khác dưới dạng khối, nhưng chúng có tiêu đề 64 bit, siêu dữ liệu và bố cục bản nhạc riêng. Bạn vẫn cần một công cụ chuyển đổi có thể nhập các loại khác và ghi vào CAF. Dưới đây là thông số kỹ thuật: http://devworld.apple.com/documentation/MusicAudio/Reference/CAFSpec/CAF_overview/CAF_overview.html – Ramin

0

Định dạng duy nhất tôi có thể làm việc là CAF.Nó cũng là một trong hầu hết các ví dụ mã từ táo. Nếu bạn đang sử dụng hiệu ứng âm thanh ngắn thì kích thước sẽ không thành vấn đề.

1

Hãy xem tiện ích dòng lệnh afconvert trên máy Mac của bạn. Nó thực hiện nhiều chuyển đổi giữa các định dạng âm thanh khác nhau và nếu bạn có nhiều âm thanh, bạn có thể tập lệnh chuyển đổi ...

Tôi sử dụng SoundToolbox và AVAudioPlayer có âm thanh chủ yếu ở PCM không nén, được tạo trong GarageBand.

SoundToolbox là rất tốt cho chơi một đoạn ngắn nhỏ "Boing" hoặc "click" hoặc các âm thanh khác mà bạn kích hoạt để chơi và bạn không quan tâm đến dừng hoặc rối tung với khối lượng của họ, vv

Nếu bạn muốn ngừng phát âm thanh hoặc để biết âm thanh có được chơi hay không, AVAudioToolbox rất hay. Nếu bạn muốn phát âm thanh có kiểm soát các thành phần bên trái và bên phải của âm thanh, hãy xem OpenAL.

Nếu bạn chưa đọc, hãy đọc Hỗ trợ âm thanh iPhone Application Programming Guide của Apple.

Nếu âm thanh quan trọng đối với ứng dụng của bạn, bạn có thể muốn tận dụng một số tính năng có sẵn cho bạn vì rất ít công việc.

0

Tôi đã sử dụng định dạng WAV của Microsoft ADPCM nén từ 3,25: 1 (chất lượng cao) xuống 3,98: 1 (chất lượng mặc định). Tôi cũng giảm tốc độ mẫu xuống 32000 hoặc thậm chí 22050 tùy theo âm thanh. Không cần lưu một số tệp bằng âm thanh nổi - mono cũng làm giảm kích thước tệp khá tốt.

Đối với nhạc nền mp3 là tốt.

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