تشغيل الوسائط باستخدام AVPlayer
ابث وشغّل ملفات الصوت والفيديو.
تشغيل الوسائط باستخدام AVPlayer درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
AVFoundation للوسائط
إن AVFoundation هو إطار Apple للعمل مع الوسائط السمعية والبصرية المعتمدة على الزمن، مثل التشغيل والالتقاط والتحرير والتصدير.
الفئة الأساسية للتشغيل هي AVPlayer.
import AVFoundationAVPlayer وAVPlayerItem
يتحكم AVPlayer في التشغيل، بينما يمثّل AVPlayerItem الوسائط التي يجري تشغيلها ويتتبع حالتها. ويستند العنصر إلى AVAsset.
let url = URL(string: "https://example.com/video.mp4")!
let item = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: item)بدء التشغيل والإيقاف المؤقت
تحكم في التشغيل باستخدام play() وpause() وseek(to:). يبدأ التشغيل من الوقت الحالي.
player.play()
// later
player.pause()عرض الفيديو
لعرض الفيديو في UIKit، استضف AVPlayerLayer داخل عرض. تتولى الطبقة تصيير المخرجات المرئية للمشغّل.
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
playerLayer.videoGravity = .resizeAspect
view.layer.addSublayer(playerLayer)مراقبة الحالة
يُبلغ AVPlayerItem عن status. راقبه لمعرفة متى تصبح الوسائط readyToPlay أو متى يحدث failed.
let observation = item.observe(\.status) { item, _ in
if item.status == .readyToPlay {
player.play()
}
}تتبع الوقت
استخدم addPeriodicTimeObserver لتحديث واجهة التقدم مع تقدم التشغيل. وتكون الأوقات على هيئة قيم من نوع CMTime.
let interval = CMTime(seconds: 0.5, preferredTimescale: 600)
player.addPeriodicTimeObserver(forInterval: interval, queue: .main) { time in
let seconds = time.seconds
print("at \(seconds)s")
}أساسيات CMTime
يخزّن CMTime الوقت على هيئة عدد نسبي (قيمة مقسومة على مقياس زمني) لتحقيق دقة على مستوى العينة. ويقسّم المقياس الزمني 600 معدلات الإطارات الشائعة دون باقٍ.
let t = CMTime(seconds: 5, preferredTimescale: 600)
let half = CMTimeMultiplyByFloat64(t, multiplier: 0.5)التنقل بدقة
يوفر seek(to:toleranceBefore:toleranceAfter:) مع ضبط هامش السماح على الصفر تنقلًا دقيقًا على مستوى الإطار، لكنه يتطلب عملًا إضافيًا لفك الترميز.
let target = CMTime(seconds: 30, preferredTimescale: 600)
player.seek(to: target, toleranceBefore: .zero, toleranceAfter: .zero)الوصول إلى النهاية
راقب AVPlayerItem.didPlayToEndTimeNotification لاكتشاف اكتمال التشغيل، ثم كرر التشغيل أو أغلق العرض أو اعرض العنصر التالي.
NotificationCenter.default.addObserver(
forName: .AVPlayerItemDidPlayToEndTime,
object: item, queue: .main) { _ in
player.seek(to: .zero)
player.play() // loop
}جلسة الصوت للتشغيل
لكي يعمل الصوت بصورة صحيحة، ويستمر في الخلفية عند إعداد ذلك، أعد إعداد AVAudioSession باستخدام الفئة المناسبة.
let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback)
try? session.setActive(true)AVQueuePlayer لقوائم التشغيل
يرث AVQueuePlayer من AVPlayer لتشغيل قائمة من العناصر بالتتابع، ولذلك فهو مناسب لقوائم التشغيل وتغذيات الفيديو المستمرة.
let queue = AVQueuePlayer(items: [item1, item2, item3])
queue.play()تحقق سريع: AVPlayer
اختبر مدى فهمك لتشغيل AVPlayer.
مراجعة: تشغيل الوسائط باستخدام AVPlayer
يتولى AVPlayer تشغيل AVPlayerItem المستند إلى AVAsset، بينما تصيّر AVPlayerLayer الفيديو. راقب status الخاص بالعنصر، وتتبع التقدم باستخدام مراقبي CMTime الدوريين، ونفّذ التنقل بدقة مع ضبط هامش السماح على الصفر، وتعامل مع إشعارات انتهاء التشغيل.
اضبط AVAudioSession للحصول على صوت صحيح، واستخدم AVQueuePlayer لقوائم التشغيل.
الأسئلة الشائعة
هل درس «تشغيل الوسائط باستخدام AVPlayer» مجاني؟
نعم — نص درس «تشغيل الوسائط باستخدام AVPlayer» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «تشغيل الوسائط باستخدام AVPlayer»؟
ابث وشغّل ملفات الصوت والفيديو. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «تشغيل الوسائط باستخدام AVPlayer»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تشغيل الوسائط باستخدام AVPlayer
- تسجيل الصوت
- AVAsset والتركيب
- تضمين المشغلات في SwiftUI