آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

قابلیت نمایش چند ویدیو در avplayer بصورت صفی و پشت هم

محمد امین  6 سال پیش  6 سال پیش
0 0

سلام من avplayer رو ساختم، فقط مشکلش اینه که من میخوام چند ویدیو رو بصورت صفی نمایش بده، بطور مثال وقتی روی دکمه "نمایش ویدیو ها" کلیک شد، به ترتیب تعدادی ویدیو رو نمایش بده. 

کد نمایش یک ویدیو در avplayer:

class SessionListViewController: UIViewController {
var playerController = AVPlayerViewController()
var player:AVPlayer?

override func viewDidLoad() {
super.viewDidLoad()
let video:String? = NSBundle.mainBundle().pathForResource("Video", ofType: ".mp4")
let videoURL = NSURL(fileURLWithPath: video!)
self.player = AVPlayer(URL: videoURL as NSURL)
self.playerController.player = self.player
}
@IBAction func showVideos(sender: UIButton) {
self.presentViewController(self.playerController, animated: true, completion: {
self.playerController.player?.play()
})
}
}

 

 برای این سوال 7 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
کاشی زاده  6 سال پیش
+1 0

سلام ،
برای نمایش به ترتیب شما نیاز به کدی دارید که متوجه شوید چه زمان ویدئویی پایان یافته و بعد از آن از طریق خواندن خانه دیگر آرایه ویدئو بعدی را پخش کنید .

از این کد می توانید برای این موضوع استفاده کنید ، البته کد را تست نکرده ام.

Swift 2 :

let videoPlayer = AVPlayer(URL: url)

NSNotificationCenter.defaultCenter().addObserver(self, selector: "playerDidFinishPlaying:",
name: AVPlayerItemDidPlayToEndTimeNotification, object: videoPlayer.currentItem)

func playerDidFinishPlaying(note: NSNotification) {
print("Video Finished")
}



Swift 3 :

let videoPlayer = AVPlayer(URL: url)

NotificationCenter.default.addObserver(self, selector: Selector(("playerDidFinishPlaying:")),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: videoPlayer.currentItem)

func playerDidFinishPlaying(note: NSNotification) {
print("Video Finished")
}
پاسخ به سوال 
محمد امین  6 سال پیش
0 0

من برای انجام این کار از AVQueuePlayer استفاده کردم ، ولی به یکسری ارور runtime برخوردم.

این هم کد :

 class VideoMenuViewController: UIViewController {
var playerController = AVPlayerViewController()
var player:AVPlayer?
var playerItems = [AVPlayerItem]();
var videosString = [String]();
var videosURL = [NSURL]();
var queuePlayer:AVQueuePlayer?;

override func viewDidLoad() {
super.viewDidLoad()

self.videosString.append(NSBundle.mainBundle().pathForResource("Video1", ofType: ".mp4")!)
self.videosString.append(NSBundle.mainBundle().pathForResource("Video2", ofType: ".mp4")!)
self.videosString.append(NSBundle.mainBundle().pathForResource("Video3", ofType: ".mp4")!)
for item in videosString{
self.videosURL.append(NSURL(fileURLWithPath: item))
}
for item in videosURL{
self.playerItems.append(AVPlayerItem(URL: item))
}
for item in playerItems{
self.queuePlayer?.insertItem(item, afterItem: nil)
}
self.playerController.player = self.queuePlayer

}
@IBAction func showVideo(sender: UIButton) {
self.presentViewController(self.playerController, animated: true, completion: {
self.playerController.player?.play()
})
}

}

 

میشه بگید مشکل از کجاست! چون من هیچ اطاعاتی از AVQueuePlayer ندارم و چیز زیادی هم در موردش پیدا نکردم. ممنون (2 دقیقه پیش) 

+1 0
من هم از این ابزار استفاده نکرده ام و برای بررسی مشکل باید تصویر خطا را نیز قرار دهید . در کل روال کار به شکل کدی است گه بالاتر قرار دادم. (6 سال پیش)
پاسخ به سوال 
محمد امین  6 سال پیش
0 0

اون روشی که شما گفتین خیلی از امکانات از جمله دکمه های پلیر که جابجایی بین ویدیو ها رو مدیریت میکنه رو نداره، خود سایت اپل این ابزار رو پیشنهاد داده ولی متاسفانه هیچ منبعی که استفاده کردن ازش رو کامل توضیح بده پیدا نکردم و اینی که الآن نوشتم تیکه تیکه از جاهای مختلف برداشت کردم و نوشتم.

این هم عکس ارور :

+1 0
تمامی خطاهایی که درچ کردید مربوط به اشکال در تنظیم کانسترین ها در طراحی UI است و ارتباطی با خطای Player ندارد. (6 سال پیش)
پاسخ به سوال 
محمد امین  6 سال پیش
0 0

خیلی ممنون مشکلم حل شد اما با دو خط کد کاملا بی منطق. مشکل از نحوه اضافه کردن ویدیو ها به queuePlayer بود. که به جای :

 for item in playerItems{
self.queuePlayer?.insertItem(item, afterItem: nil)
}
self.playerController.player = self.queuePlayer

این کد رو وارد کردم: 

 self.queuePlayer = AVQueuePlayer(items: self.playerItems)
self.playerController.player = self.queuePlayer

الآن یک مسئله ای که دارم اینه که نمیدونم چجوری باید پلیر رو محدود کنم که فقط توی حالت landscape باشه. 

البته ببخشید خیلی سوال میپرسم ها :D  

+1 0
باید صفحه نمایش را در زمانی که کاربر وارد صفحه پلیر می شود در حالت landscape محدود کنید . (6 سال پیش)
پاسخ به سوال 
محمد امین  6 سال پیش
0 0

درسته اما چون من از navigationViewController استفاده کردم کد : 

 override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.LandscapeLeft
}

عملا هیچ کار مفیدی انجام نمیده برای همین اومدم از navigationControllerDeligate استفاده کردم و  این کار رو انجام دادم :

 func navigationControllerSupportedInterfaceOrientations(navigationController: UINavigationController) -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.LandscapeLeft
}

که این هم هیچ کار مفیدی انجام نمیده.

هرچی هم سرچ کردم و توی stackOverFlow هم گشتم هیچ چیز خاصی پیدا نکردم. این شد که دوباره دست به دامن شما شدم :)

+1 0
تغییر حالت نمایش بادی قبل از لود Controller انجام شود . (6 سال پیش)
پاسخ به سوال 
محمد امین  6 سال پیش
0 0

خب این کدها توی بادی کلاس نوشته شدن توی didload نوشته نشدن! 

پاسخ به سوال 
کاشی زاده  6 سال پیش
+1 0

 پاسخ صحیح

در متد viewDidLoad این دستور را وارد کنید :

let value = UIInterfaceOrientation.LandscapeLeft.rawValue
UIDevice.currentDevice().setValue(value, forKey: "orientation")

 

0 0
ممنون، از راهنماییتون؛ کاملا درست کار کرد. (6 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .