iOS不能播放Mp4视频和tableView刷新抖动问题全解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS不能播放Mp4视频和tableView刷新抖动问题全解相关的知识,希望对你有一定的参考价值。
参考技术A播放异常的视频(埃及四千年)
异常表现 :视频加载缓慢,播放时,有音频无页面或无音频无画面
单品视频地址: http://imgv36.ddimg.cn/video/item/228e8afb16ab45c58d47d3ee8f9dfd48.mp
若编码格式有问题 建议按照编码格式 h.264/aac,重新编码,导出视频。
去一个例子:
参照正常播放的单品:( 孙俪遇见你,陪伴你)
单品视频地址: http://imgv37.ddimg.cn/video/item/d0771333d8f7441d961d7c4eae67c049.mp4
视频导出时的 扫描方式:逐行扫描
问题视频的视频导出时的 扫描方式:隔行扫描 或 ”上场优先“等
①、剪辑视频时,调整导出设置,请谨慎调整导出设置。
②、导出视频的设置正确后,还未能解决,建议按照编码格式 h.264/aac,重新编码,导出视频。
因为ios 11后系统默认开启Self-Sizing,首先要知道Self-Sizing是个什么东东。官方文档是这样解释的:大概就是说我们不用再自己去计算cell的高度了,只要设置好这两个属性,约束好布局,系统会自动计算好cell的高度。
iOS11以后,Self-Sizing默认开启,包括Headers, footers。如果项目中没使用estimatedRowHeight属性,在iOS11下会有奇奇怪怪的现象,因为iOS11之前,estimatedRowHeight默认为0,Self-Sizing自动打开后,contentSize和contentOffset都可能发生改变。
iOS tableview开启高度估算(Self-Sizing),reloadData的时候不再全部计算高度。
①、在初始化tableview的时候加上这几行
②、若上述方法不能解决问题,请移除上述设置。
改用部分隐藏的直接设置为0 ,需要预估高度的,配置一个预估高度。
③、还未解决,采用预计算,缓存cell或header或footer高度,直接代理方法返回吧。
MP 电影播放器视图控制器滞后于 ios 中的视频播放
【中文标题】MP 电影播放器视图控制器滞后于 ios 中的视频播放【英文标题】:MPMovie player ViewController lag the video play in ios 【发布时间】:2013-06-13 11:01:26 【问题描述】:我想在当前视图控制器上全屏播放视频。 所以我正在使用 MPMoviePlayerViewController 播放全屏视频,但问题是它播放不流畅。 播放视频时有点滞后。 这是我用来播放全屏视频的代码,它存储在我的手机/ipad 文档目录中
-(void)PlayVideo:(NSString *)videoFilePath
NSURL *videoURL = [NSURL fileURLWithPath:videoFilePath];
NSLog(@"videoURL: %@", videoURL);
MPMoviePlayerViewController *playerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
// Remove the movie player view controller from the "playback did finish" notification observers
[[NSNotificationCenter defaultCenter] removeObserver:playerVC
name:MPMoviePlayerPlaybackDidFinishNotification
object:playerVC.moviePlayer];
// Register this class as an observer instead
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieFinishedCallback:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:playerVC.moviePlayer];
// Set the modal transition style of your choice
playerVC.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
// Present the movie player view controller
[self presentViewController:playerVC animated:NO completion:nil];
// Start playback
[playerVC.moviePlayer prepareToPlay];
[playerVC.moviePlayer play];
- (void)movieFinishedCallback:(NSNotification*)aNotification
// Obtain the reason why the movie playback finished
NSNumber *finishReason = [[aNotification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
// Dismiss the view controller ONLY when the reason is not "playback ended"
if ([finishReason intValue] != MPMovieFinishReasonPlaybackEnded)
MPMoviePlayerController *moviePlayer = [aNotification object];
// Remove this class from the observers
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
// Dismiss the view controller
[self dismissViewControllerAnimated:YES completion:Nil];
【问题讨论】:
【参考方案1】:没有发现代码有任何问题,除了
[[NSNotificationCenter defaultCenter] removeObserver:playerVC
name:MPMoviePlayerPlaybackDidFinishNotification
object:playerVC.moviePlayer];
removeObserver 应该是 self
而不是 playerVC
。
但是,这不会引起您提到的任何问题。
我建议您尝试分析您的应用程序,这可能会将您引导至导致问题的代码。播放视频时,您可能正在后台执行某些操作,导致视频延迟。
【讨论】:
以上是关于iOS不能播放Mp4视频和tableView刷新抖动问题全解的主要内容,如果未能解决你的问题,请参考以下文章
iOS h5点播播放mp4视频遇到的坑,ios的h5不能播放视频等