سؤال

قمت بتهيئة مثيل Avaudioplayer:

NSString* path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"wav"];

AVAudioPlayer* player =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; //Returned object not nil, indicating that the file has loaded successfully


BOOL b = [player prepareToPlay]; //returns TRUE

BOOL b2 = [player play]; 
//returns TRUE, goes immediately to the next line since asynchronous


[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]; //wait 1 sec

printf("%10.4f\n",player.duration); //duration is 2s

printf("%10.4f\n",player.currentTime); //position remains 0

/* There is no sound output, player is also stuck since position==0 */

هل يعرف أحد لماذا avaudioplayer لا يستجيب؟ هل هناك شيء أطله أثناء التهيئة، ولعب Audioplayer؟ رمز غنيمة ربما؟

أنا أدى هذا على محاكاة iPhone. أيضا، يعمل AudioservicesplaySystemSound () لنفس الملف، وهو أمر محير، ولكن هذا يشير إلى أن تشغيل الصوت قد يعمل مع Avaudioplayer أيضا.

هل كانت مفيدة؟

المحلول

لدي 2 اقتراحات سريعة:

  1. تحقق لمعرفة ما إذا كان هذا المسار يعطيك بالفعل البيانات. Alloc كائن NSDATA يستخدم [[NSDATA ALC] InitWithContentsOffile: المسار] وتفقده في مصحح الأخطاء لمعرفة ما إذا كنت تقوم بالفعل بتحميل ملف WAV هذا بالفعل.

  2. كتبت مشروع عينة يستخدم Avaudioplayer هنا: Avaudioplayer مثال. وبعد نظرا لأن الرمز هو نفسه تماما مثلك، فإن الشيء الوحيد الذي يمكنني تخيله هو أن هناك مشكلة في بياناتك.

تحقق من هكذا وإذا رأيك في أي مكان!

نصائح أخرى

لقد قضيت مشكلة مماثلة. لست متأكدا مما إذا كان هذا هو نفس الحل، لكن تطبيقي يسجل الصوت من خلال iPhone ثم يلعبه مرة أخرى إلى المستخدم.

اعتقدت أنني كنت أفعل الشيء الصحيح من خلال إخبار جلسة الصوت الخاصة بي بأنها ستقوم بتسجيل البيانات، لذلك فعلت ما يلي:

[audioSession setCategory:AVAudioSessionCategoryRecord error:nil];

باستخدام تشغيل الإعداد هذا يعمل على جهاز محاكاة ولكن ليس على الجهاز .... حدث DidFinishplaying لم يتم رفعه أبدا.

أزلت هذا الخط بعد أن أدرك أنني لم أكن بحاجة إليها بدأ تشغيل الصوت يعمل بشكل صحيح. الآن أنا فقط بحاجة إلى العمل لماذا هو هادئ جدا :)

بول

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top