视频播放抖动(播放一小段然后再从头播放完)

问题描述

视频播放抖动(播放一小段然后再从头播放完)

下面是放在pageViewController里面的子VC来播放视频。
模仿微信做的图片选择器,在浏览图片的时候,如果遇到视频,可以在浏览过程中播放视频。本人新手,希望遇到过这种情况的大神指教一下,谢谢了。

#import "CHVideoPlayerViewController.h"
#import

@interface CHVideoPlayerViewController ()
{
MPMoviePlayerViewController _movie;
UITapGestureRecognizer *_tap;
/
*
* 播放按钮
*/
UIImageView *_playerView;

}
@end

@implementation CHVideoPlayerViewController

  • (void)viewDidLoad {
    [super viewDidLoad];

    _tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];

    /**

    • 视频播放对象
      */
      _movie = [[MPMoviePlayerViewController alloc] initWithContentURL:_url];
      _movie.moviePlayer.controlStyle = MPMovieControlStyleNone;
      [_movie.view setFrame:self.view.bounds];
      _movie.view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
      _movie.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
      _movie.moviePlayer.shouldAutoplay = NO;
      [_movie.view.subviews.firstObject addGestureRecognizer:_tap];

    _playerView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"bofang64"]];
    _playerView.backgroundColor = [UIColor clearColor];
    // [_playerView addGestureRecognizer:_tap];
    _playerView.center = _movie.view.center;
    [_movie.view addSubview:_playerView];

    [self.view addSubview:_movie.view];

    [[NSNotificationCenter defaultCenter] addObserver:self
    selector:@selector(myMovieFinishedCallback:)
    name:MPMoviePlayerPlaybackDidFinishNotification
    object:nil];

}

  • (void)myMovieFinishedCallback:(NSNotification*)notification
    {
    _playerView.alpha = 1;
    self.navigationController.navigationBar.alpha = 0.5;
    self.navigationController.toolbar.alpha = 0.5;
    }
  • (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    }
  • (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [_movie.moviePlayer prepareToPlay];

    if (_movie.moviePlayer.playbackState == MPMoviePlaybackStatePlaying) {
    self.navigationController.navigationBar.alpha = 0;
    self.navigationController.toolbar.alpha = 0;
    _playerView.alpha = 0;
    }else {
    self.navigationController.navigationBar.alpha = 0.5;
    self.navigationController.toolbar.alpha = 0.5;
    _playerView.alpha = 1;
    }

}

  • (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    }
  • (void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    [_movie.moviePlayer stop];
    }
  • (void)tapAction:(UITapGestureRecognizer *)tap {
    if (_movie.moviePlayer.playbackState == MPMoviePlaybackStatePlaying) {
    [_movie.moviePlayer pause];
    self.navigationController.navigationBar.alpha = 0.5;
    self.navigationController.toolbar.alpha = 0.5;
    _playerView.alpha = 1;
    }else {
    self.navigationController.navigationBar.alpha = 0;
    self.navigationController.toolbar.alpha = 0;
    [UIView animateWithDuration:0.5 animations:^{
    _playerView.alpha = 0;
    _playerView.transform = CGAffineTransformMakeScale(5, 5);
    } completion:^(BOOL finished) {
    _playerView.transform = CGAffineTransformIdentity;
    [_movie.moviePlayer play];
    }];

    }
    }

解决方案

http://www.zhihu.com/question/23893440

时间: 2024-12-03 23:42:49

视频播放抖动(播放一小段然后再从头播放完)的相关文章

C#实现窗口抖动的一段代码,没看懂,求指教

问题描述 C#实现窗口抖动的一段代码,没看懂,求指教 int i, j, k; //定义三个变量 for (i = 1; i <= 3; i++) //循环次数 { for (j = 1; j <= 10; j++) { this.Top += 1; this.Left += 1; System.Threading.Thread.Sleep(3); //当前线程指定挂起的时间 } for (k = 1; k <= 10; k++) { this.Top -= 1; this.Left -

代码 试题-一小段c++代码求大神教

问题描述 一小段c++代码求大神教 部分代码 Point f(double x, double y) { Point P(x,y); return P; } void main() { Point A(0,0); Point B = f(3,4); } Point是自定义的类 请问调用几次拷贝构造函数? 自己试过 .可是 vs调用了一次,vc调用了两次.哪个正确? 解决方案 1.应该是调用2次,vs调用一次,可能是Point A(0,0)被编译器优化掉了. 2.建议再main函数中添加对A进行访

字符串-这一小段c程序怎么理解?

问题描述 这一小段c程序怎么理解? int main(void){ char str[81]; char *p temp; int inlength; gets(str); for (p = stri=0n = strlen(str); i<n/2; i++)//将整个字符串倒序 { temp = *(p+n-1-i); *(p+n-1-i) = *(p+i); *(p+i) = temp; } puts(str); p = str; length=0; 解决方案 for实现的功能就是第一个和倒

char-大侠快看我写的一小段代码

问题描述 大侠快看我写的一小段代码 #include #include //搜索x44x65x73x63x72x69x70x74x69x6Fx6E 偏移地址 DWORD ReadFile(char* str) { char data[11] = {0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6F, 0x6E}; HANDLE pfile = CreateFile(str,GENERIC_READ,0,NULL,OPEN_EXIS

xxml的标记问题-怎么给视频打标,显示每一小段视频的主要内容

问题描述 怎么给视频打标,显示每一小段视频的主要内容 一些门户网站的视频上每隔一节会有一个标识,你把鼠标放上去他就会显示这段视频的剧情简介,它是用什么实现的的,怎么实现的,有用到SMIL吗?

怎么在jsp中播放一段声音,要求电脑浏览器与手机浏览器都能使用,兼容性好。

问题描述 怎么在jsp中播放一段声音,要求电脑浏览器与手机浏览器都能使用,兼容性好. 想在jsp中播放一段声音,触发按钮时发出.要求电脑浏览器与手机浏览器都能使用最好给出具体代码.谢谢!!! 解决方案 能不能播放还得看你音频的格式,你要准备ogg和mp3 2中形式的音频,判断支持html5就用audio标签播放(智能手机浏览器大部分都支持html5,非智能就不懂了..),不支持(IE8-这种浏览器)就用embed导入mp3文件 audio支持的音频看这个:http://www.cnblogs.c

class-求c++大牛帮助,一小段笔试代码,怎么都想不通

问题描述 求c++大牛帮助,一小段笔试代码,怎么都想不通 class Point{ private: double X,Y; public: Point(double xx=0, double yy=0) { X=xx; Y=yy; cout<<"Point("<<X<<","<<Y<<")"<<endl; } Point(Point &p) { X=p.X; Y=p

OpenGL ES 宏观处理流程-适合研究一段之后再看

OpenGL ES 宏观处理流程-适合研究一段之后再看 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 1.构建顶点缓存:包括几何顶点坐标.纹理坐标.法线坐标     a.传给OpenGL ES

c#wav 文件的处理-关于C#wav语音文件的处理,如何在播放一段录音文件的同时,找出人说话的中间停顿的地方

问题描述 关于C#wav语音文件的处理,如何在播放一段录音文件的同时,找出人说话的中间停顿的地方 我在网上查了很多,想用频谱的办法获取整幅较小的地方不知道这样可不可以,该如何做 解决方案 参考:http://www.2cto.com/kf/201505/398152.html 提取出wav数据,得到声强,声强小的地方视作停顿 解决方案二: 问题终于解决了,用的是取巧的办法,但是效果还是不错的,这段时间闲下来了,在发到博客吧