Сохранение короткого аудиофайла / потокового видео в приложении
Я планирую создать приложение, которое использует серверную часть Parse.com для аутентификации пользователя / сообщений / подписчиков / и т. Д. Я хочу, чтобы пользователи могли загружать образец музыкального файла в Parse (или альтернативное решение), а затем передавать или пусть другие смогут транслировать его. Мне сказали, что можно сохранить файл, используя PFFile, но как насчет потоковой передачи?
Также это будет противоречить правилам Apple, поскольку в конечном итоге это позволит пользователям покупать эти музыкальные файлы через приложение, или мне придется использовать какие-либо учетные записи / файлы iTunes?
Спасибо за помощь в продвижении
1 ответ
С точки зрения загрузки его для разбора:
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
//get the audio in NSData format
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"02 Interstellar Overdrive" ofType:@"m4a"];
NSData *audioData = [NSData dataWithContentsOfFile:filePath];
//create PFFile to store audio data
PFFile *audioFile = [PFFile fileWithName:@"02 Interstellar Overdrive.m4a" data:audioData];
testObject[@"audioFile"] = audioFile;
//save
[testObject saveInBackground];
С точки зрения потоковой передачи с серверов Parse используйте AVPlayer, который позволяет потоковую передачу. Вы можете использовать AVAudioPlayer, если хотите сначала скачать всю песню перед воспроизведением:
PFQuery *query = [PFQuery queryWithClassName:@"TestObject"];
[query whereKeyExists:@"audioFile"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error)
{
PFObject *testObject = [objects lastObject];
PFFile *audioFile = testObject[@"audioFile"];
NSString *filePath = [audioFile url];
//play audiofile streaming
self.avPlayer = [[AVPlayer alloc] initWithURL:[NSURL URLWithString:filePath]];
self.avPlayer.volume = 1.0f;
[self.avPlayer play];
} else {
NSLog(@"error = %@", [error userInfo]);
}
}];
Не могу сказать, позволит ли Apple продавать музыку в вашем приложении или нет.