i using avplayer in table view.i want start video playing stop video playing when scroll table view.tell me possible ways it?
- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath{ static nsstring *tableidentifier = @"tableidentifier"; customtablecell *cell = [self.videotableview dequeuereusablecellwithidentifier:tableidentifier]; if (cell == nil) { cell = [[[nsbundle mainbundle]loadnibnamed:@"videocell" owner:self options:nil]objectatindex:0]; } dispatch_queue_t queue = dispatch_get_global_queue(dispatch_queue_priority_high, 0ul); dispatch_async(queue, ^{ avasset *avassert = [avasset assetwithurl:[nsurl urlwithstring:@"url"]]; cell.playeritem =[[avplayeritem alloc]initwithasset:avassert]; dispatch_sync(dispatch_get_main_queue(), ^{ if (!cell.avplayer) { cell.avplayer = [avplayer playerwithplayeritem:cell.playeritem]; }else{ [cell.avplayer replacecurrentitemwithplayeritem:cell.playeritem]; } if (!cell.avplayerlayer) { cell.avplayerlayer = [avplayerlayer playerlayerwithplayer:cell.avplayer]; cell.avplayerlayer.frame = cell.videoplayerview.layer.bounds; cell.avplayerlayer.videogravity = avlayervideogravityresize; [cell.videoplayerview.layer addsublayer: cell.avplayerlayer]; if (indexpath.row == 0) { cell.avplayer.muted = no; [cell.avplayer play]; } } }); }); return cell; }
here's how apple did in sample app (i differently):
/* when app goes background, save media url , time values application preferences. */ - (void)applicationdidenterbackground:(uiapplication*)application { if (self.playbackviewcontroller) { nsuserdefaults* defaults = [nsuserdefaults standarduserdefaults]; nsurl* url = [self.playbackviewcontroller url]; if (url) { nstimeinterval time = cmtimegetseconds([[self.playbackviewcontroller player] currenttime]); [defaults seturl:url forkey:avplayerdemocontenturluserdefaultskey]; [defaults setdouble:time forkey:avplayerdemocontenttimeuserdefaultskey]; } else { [defaults removeobjectforkey:avplayerdemocontenturluserdefaultskey]; [defaults removeobjectforkey:avplayerdemocontenttimeuserdefaultskey]; } [defaults synchronize]; } } in either (or both) appdidfinishlaunching or appdidenterforeground methods:
nsuserdefaults* defaults = [nsuserdefaults standarduserdefaults]; /* restore saved media time value defaults system. */ [[self.playbackviewcontroller player] seektotime:cmtimemakewithseconds([defaults doubleforkey:avplayerdemocontenttimeuserdefaultskey], nsec_per_sec)]; } return yes; }
Comments
Post a Comment