Run this code
wait few second for video to start, wait few more seconds, click on Stop, then click on Play and after 10-15 seconds app crash with this log
This work fine on iOS 8.3 also on 8.4 in Simulator.
Only work around is to initialize VideoView again (as new VideoView) and run video in that new VideoView.
B4X:
'Code module
#Region Project Attributes
#ApplicationLabel: B4i Example
#Version: 1.0.0
'Orientation possible values: Portrait, LandscapeLeft, LandscapeRight and PortraitUpsideDown
#iPhoneOrientations: Portrait, LandscapeLeft, LandscapeRight
#iPadOrientations: Portrait, LandscapeLeft, LandscapeRight, PortraitUpsideDown
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Public App As Application
Public NavControl As NavigationController
Private Page1 As Page
Private VideoV As VideoView
Private btnStop As Button
Private btnPlay As Button
End Sub
Private Sub Application_Start (Nav As NavigationController)
NavControl = Nav
Page1.Initialize("Page1")
Page1.Title = "Page 1"
Page1.RootPanel.Color = Colors.White
'NavControl.ShowPage(Page1)
VideoV.Initialize("VideoV")
btnStop.Initialize("btnStop", btnStop.STYLE_SYSTEM)
btnPlay.Initialize("btnPlay", btnPlay.STYLE_SYSTEM)
Page1.RootPanel.AddView(btnStop, 0, 0, 100, 50)
Page1.RootPanel.AddView(btnPlay, 0, 0, 100, 50)
Page1.RootPanel.AddView(VideoV.View, 0, 0, 100%x, 100%y)
btnPlay.Text = "Play"
btnStop.Text = "Stop"
btnPlay.Color = Colors.LightGray
btnStop.Color = Colors.LightGray
VideoV.ShowControls = False
NavControl.ShowPage(Page1)
CallSubDelayed(Me, "PlayVideo")
End Sub
Private Sub Page1_Resize(Width As Int, Height As Int)
VideoV.View.Height = Height
VideoV.View.Width = Width
btnPlay.Top = Height - btnPlay.Height
btnStop.Top = Height - btnStop.Height
btnStop.Left = Width - btnStop.Width
btnPlay.BringToFront
btnStop.BringToFront
End Sub
Private Sub Application_Background
End Sub
Public Sub PlayVideo
VideoV.Stop
VideoV.LoadVideoUrl("https://devimages.apple.com.edgekey.net/iphone/samples/bipbop/bipbopall.m3u8")
End Sub
Private Sub VideoV_Ready
VideoV.Play
End Sub
Private Sub btnPlay_Click
PlayVideo
End Sub
Private Sub btnStop_Click
VideoV.Stop
End Sub
wait few second for video to start, wait few more seconds, click on Stop, then click on Play and after 10-15 seconds app crash with this log
B4X:
Application_Start
Application_Active
Error occurred on line: 84 (Main)
An AVPlayerItem cannot be associated with more than one instance of AVPlayer
Stack Trace: (
CoreFoundation <redacted> + 150
libobjc.A.dylib objc_exception_throw + 38
AVFoundation <redacted> + 382
AVFoundation <redacted> + 266
MediaPlayer <redacted> + 50
MediaPlayer <redacted> + 1368
MediaPlayer <redacted> + 1272
MediaPlayer <redacted> + 24
libdispatch.dylib <redacted> + 10
libdispatch.dylib <redacted> + 22
libdispatch.dylib _dispatch_main_queue_callback_4CF + 1516
CoreFoundation <redacted> + 8
CoreFoundation <redacted> + 1590
CoreFoundation CFRunLoopRunSpecific + 516
CoreFoundation CFRunLoopRunInMode + 108
GraphicsServices GSEventRunModal + 160
UIKit UIApplicationMain + 144
B4i Example main + 108
libdyld.dylib <redacted> + 2
)
This work fine on iOS 8.3 also on 8.4 in Simulator.
Only work around is to initialize VideoView again (as new VideoView) and run video in that new VideoView.