Có cách nào dễ dàng tải, phát và điều khiển tệp mp3 từ ca cao không? Cố gắng googling nó, nhưng, như tất cả mọi thứ táo, tôi nhận được kết quả lộn xộn và không có ý tưởng bắt đầu từ đâu. Theo tôi hiểu, có và NSSound, nhưng nó có rất nhiều hạn chế và sau đó có CoreAudio, nhưng nó rất khó khăn. Vì vậy, ai đó có thể chỉ cho tôi một hướng đúng với điều này? Cảm ơn.ca cao phát mp3
Trả lời
SỐNG LẠI TRÊN TIẾN ĐỘ:
Tại sao hồi sinh câu hỏi này? bởi vì Googling "ca cao chơi mp3" Đưa tôi đến đây và không có câu trả lời tuyệt vời nào năm 2012. Vì vậy, đây là câu trả lời tuyệt vời năm 2012;)
Sử dụng AVFoundation! Theo táo, nó đã được tích hợp với Mac OS X Lion (tôi nghĩ), vì vậy .. Đây là cách để chơi mp3 không đau đớn:
1- liên kết khung AVFoundation.
2- nhập khẩu nó bất cứ nơi nào bạn muốn chơi bạn tuyệt vời mp3
#import <AVFoundation/AVFoundation.h>
3- Thêm một biến Ví dụ Audioplayer để chơi âm thanh (Đó là cách tôi muốn làm điều đó, ít nhất)
@interface WCMainWindow : ... {
...
AVAudioPlayer* audioPlayer;
}
4 Trong bạn init, chắc chắn bạn khởi Audioplayer của bạn:
NSString* path = [[NSBundle mainBundle] pathForResource:@"myFile" ofType:@"mp3"];
NSURL* file = [NSURL fileURLWithPath:path];
// thanks @gebirgsbaerbel
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:nil];
[audioPlayer prepareToPlay];
5- Chơi Mp3 tuyệt vời của bạn !!
if ([audioPlayer isPlaying]) {
[audioPlayer pause];
} else {
[audioPlayer play];
}
Cuối cùng, tín dụng đi đến this guy.
Làm thế nào để bạn kiểm tra để biết nếu bạn có thể sử dụng điều này? – Mark
Ý của bạn là gì? Thực hiện các bước được giải thích và đảm bảo bạn thêm tệp MP3 vào tài nguyên của mình. Sau đó, thêm một nút (hành động) sẽ gọi '[audioPlayer play]' – Mazyod
Phương thức URLWithString luôn trả về nil cho tôi. Sử dụng '[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: @" myFile "ofType: @" mp3 "]];' thay vào đó đã khắc phục được sự cố. –
Tôi đã viết một khuôn khổ trong C++ có thể giúp: http://github.com/sbooth/SFBAudioEngine
Nó hỗ trợ nhiều định dạng âm thanh và có một API khá lành tính và đi kèm với một mẫu Cocoa.
Nếu bạn không quan tâm đến khung bên thứ ba, đặt cược của bạn có thể sẽ sử dụng AudioQueue để xử lý phát lại. Để làm điều này, bạn có thể sử dụng AudioFile để giải mã MP3 và AudioQueue để phát lại. Apple có ví dụ tại http://developer.apple.com/mac/library/samplecode/AudioQueueTools/Introduction/Intro.html
Bên cạnh NSSound
, bạn có thể xem xét QTMovieView
. Nghe có vẻ lạ, nhưng bạn có thể có một số QTMovieView
ẩn trong cửa sổ của bạn và sử dụng nó để phát một MP3.
Đã thêm: QTMovieView
không được chấp nhận với hệ điều hành 10.9. Vì vậy, trừ khi bạn cần hỗ trợ các phiên bản hệ điều hành trước 10.7 (khi AVFoundation đến Mac), bạn có lẽ không nên sử dụng nó.
Tôi cũng đã nhìn thấy ví dụ với QTKit mà không có bất kỳ quan điểm, nhưng tôi không chắc chắn nếu đây là một cách tốt để làm điều đó, vì tôi đã không tìm thấy làm thế nào để tìm kiếm một tập tin hoặc thậm chí có thể thêm một số hiệu ứng sau này. – Marius
Tôi không chắc chắn những gì bạn có nghĩa là "tìm kiếm một tập tin". – JWWalker
Vâng, trong điều kiện đơn giản, hãy đi đến một số vị trí cụ thể và tiếp tục chơi từ đó. – Marius
Sử dụng NSSound.
Bạn không chỉ định ý nghĩa của “rất nhiều giới hạn”, vì vậy tôi không biết tại sao điều này không hiệu quả với bạn. Lưu ý rằng nó có rất ít hạn chế hơn kể từ Leopard; bây giờ bạn có thể chơi với bất kỳ thiết bị nào.
#import <Cocoa/Cocoa.h>
#import <QTKit/QTKit.h>
@interface SoundPlayer : NSObject {
NSSound *sound;
IBOutlet NSWindow *window;
IBOutlet NSSlider *progress;
BOOL loop;
}
- (IBAction)open: (id)sender;
- (IBAction)setLoop: (id)sender;
- (IBAction)play: (id)sender;
- (IBAction)stop: (id)sender;
- (IBAction)takeCurrentTimeFrom: (id)sender;
@end
#import "SoundPlayer.h"
@implementation SoundPlayer
- (IBAction)open: (id)sender
{
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel runModalForTypes: [NSArray arrayWithObjects: @"aiff", @"mp3", @"m4a", nil]];
[sound release];
sound = [[QTMovie movieWithFile: [openPanel filename]
error: NULL] retain];
[sound setAttribute: [NSNumber numberWithBool: loop]
forKey: QTMovieLoopsAttribute];
[window setTitle: [[openPanel filename] lastPathComponent]];
}
- (IBAction)setLoop: (id)sender
{
loop = ([sender state] == NSOnState);
[sound setAttribute: [NSNumber numberWithBool: loop]
forKey: QTMovieLoopsAttribute];
}
- (IBAction)play: (id)sender
{
NSTimeInterval duration;
QTGetTimeInterval([sound duration], &duration);
[progress setMaxValue: duration];
[NSTimer scheduledTimerWithTimeInterval: 0.1
target: self
selector: @selector(updateIndicator:)
userInfo: sound
repeats: YES];
[sound play];
}
- (void)updateIndicator: (NSTimer*)aTimer
{
QTMovie *playingSound = [aTimer userInfo];
if (!(sound == playingSound && ([sound rate] != 0)))
{
[aTimer invalidate];
return;
}
NSTimeInterval currentTime;
QTGetTimeInterval([sound currentTime], ¤tTime);
[progress setDoubleValue: currentTime];
}
- (IBAction)stop: (id)sender
{
[sound stop];
}
- (IBAction)takeCurrentTimeFrom: (id)sender
{
[sound setCurrentTime: QTMakeTimeWithTimeInterval([sender doubleValue])];
}
@end
- 1. phát hành/autorelease nhầm lẫn trong ca cao cho iphone
- 2. Ca cao không có XCode
- 3. Ca cao NSStatusBar Global HotKey
- 4. Logger tốt nhất cho ca cao
- 5. Có nhiều video Ca cao và Ca cao cảm ứng có giá trị hơn không?
- 6. Nơi tìm kiếm các định dạng ngày tháng được sử dụng trong ca cao/ca cao?
- 7. phát mp3 với monotouch
- 8. Phát mp3 trong Haskell?
- 9. Ca cao: Nhấn chuột phải vào NSStatusItem
- 10. Tùy chọn ứng dụng ca cao XCode?
- 11. Tiếng ồn màu nâu trên ca cao
- 12. Khoảng cách dòng NSTextField Ca cao
- 13. Lỗi ca cao 256 dữ liệu lõi
- 14. thêm NSTimeInterval vào NSDate trong ca cao
- 15. Ca cao: Từ điển có khóa enum?
- 16. Đại biểu ứng dụng - Ca cao
- 17. Điều hướng WebView ca cao trắng flash
- 18. Tạo byte ngẫu nhiên Ca cao?
- 19. Gửi một ca cao hành động - IBAction
- 20. Ca cao: lấy WebView mainFrame html chuỗi
- 21. Loại tệp khổ sở - Ca cao
- 22. Phát tệp MP3 bằng Python
- 23. Kiểm soát iTunes từ ứng dụng ca cao
- 24. Phát hiện xem cửa sổ có phải là cửa sổ chính trong ca cao hay không
- 25. Ca cao: Phát hiện thiết bị USB theo ID nhà cung cấp
- 26. Đăng ký cho phần mềm chia sẻ ca cao
- 27. Đăng ký làm mục Đăng nhập với Ca cao?
- 28. cách xử lý nút đóng cửa sổ trong ca cao
- 29. Bất thường về vị trí cửa sổ ca cao
- 30. Carbon so với Aqua vs. Ca cao Emacs xây dựng
Xin lỗi, bạn đang phát triển cho iOS hay Mac? – shosti
Có, xin lỗi, quên làm rõ: AVAudioPlayer sẽ không hoạt động: Tôi đang phát triển cho OSX – Marius
Kể từ Mac OS X 10.7 Lion (thậm chí có thể 10.6.8?) AVFoundation hoạt động! Do đó, AVAudioPlayer .. Xem trả lời dưới đây .. – Mazyod