一、视频

  1. 视频播放器需要添加MediaPlayer.framework.
  2. 视频播放主要提供了两个类,一个MPMoviePlayerController, 另一个是MPMoviePlayerViewController.
  3. 视频资源可以从本地获得,也可以从服务器获得

MPMoviePlayerController播放本地视频资源

MPMoviePlayerController播放网络资源(服务器为自己搭建,地址不可使用)

可以加一个通知,在视频播放完毕的时候发出通知,将视图从界面上移除。

MPMoviePlayerViewController播放视频资源

效果图:

MPMoviePlayerViewController如何让视频横屏播放。

横屏播放,需要继承MPMoviePlayerViewController这个类。假设myMPMoviePlayerViewController继承这个类。

我们需要在myMPMoviePlayerViewController中实现两个方法。

然后在实现下面代码:

效果图为:

二、音频

音频的话,我们需要框架AVFoundation.framework

音频的话,一般需要使用进度条显示音频播放的进度。

1
2
3
4
5
6
7
8
9
10
11
12
@interface ViewController : UIViewController
{
    //音频播放器
    AVAudioPlayer * _audioPalyer;
    IBOutlet UISlider *_slider;
    float currentProgress;
    NSTimer *_timer;
}
- (IBAction)playButton:(id)sender;
- (IBAction)stopButton:(id)sender;
 
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    _slider.value = 0.0;
}
 
- (IBAction)playButton:(id)sender
{
   _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(moveSlide) userInfo:nil repeats:YES];
     
    NSString *path = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"mp3"];
    NSData *data = [NSData dataWithContentsOfFile:path];
    _audioPalyer = [[AVAudioPlayer alloc]initWithData:data error:nil];
    [_audioPalyer play];
     
    _slider.maximumValue = _audioPalyer.duration;
    [_slider addTarget:self action:@selector(changeSlide) forControlEvents:UIControlEventValueChanged];
}
 
-(void)changeSlide
{
    _audioPalyer.currentTime = _slider.value;
}
 
-(void)moveSlide
{
    _slider.value = _audioPalyer.currentTime;
}
 
- (IBAction)stopButton:(id)sender
{
    UIButton *button = (UIButton *)sender;
    
    if (button.tag == 0)
    {
        [_audioPalyer pause];
        [button setTitle:@"继续播放" forState:UIControlStateNormal];
        button.tag = 1;
        [_timer invalidate];
        _timer = nil;
    }
    else
    {
        [_audioPalyer play];
        [button setTitle:@"暂停" forState:UIControlStateNormal];
        button.tag = 0;
        [_slider addTarget:self action:@selector(changeSlide) forControlEvents:UIControlEventValueChanged];
    }
}

效果图:

iOS-音频和视频的更多相关文章

  1. iOS音频AAC视频H264编码 推流最佳方案

    iOS音频AAC视频H264编码 推流最佳方案 项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵. 1    功能概况 *  实现音视频的数据的采集 *  实现音视频数据的编码,视频编码成 ...

  2. iOS音频与视频的开发(一)-使用AVAudioPlayer播放音乐、使用AVPlayerViewController播放视频

    iOS的多媒体支持非常强大,它提供了多套支持多媒体的API,无论是音频.视频的播放,还是录制,iOS都提供了多种API支持.借助于这些API的支持,iOS应用既可以查看.播放手机相册中的照片.视频,也 ...

  3. iOS音频与视频的开发(二)- 使用AVAudioRecorder进行录制音频

    1.使用AVAudioRecorder录制视频 AVAudioRecorder与AVAudioPlayer类似,它们都属于AVFoundation的类.AVAudioRecorder的功能类似于一个录 ...

  4. 《转》iOS音频视频初级开发

    代码改变世界 Posts - 73, Articles - 0, Comments - 1539 Cnblogs Dashboard Logout HOME CONTACT GALLERY RSS   ...

  5. 说下 winOS / IOS / android /Linux 视频、音频 编码解码问题

    最近有朋友遇到一个问题, ios 上传视频文件,想在本地压缩下,然后再上传到服务器. 问有没有什么 视频处理的库, 最近Khronos的webgl 支持HTML5 ,(原理 WebGL 是openGL ...

  6. iOS音频播放、录音、视频播放、拍照、视频录制

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

  7. iOS 音频视频图像合成那点事

    代码地址如下:http://www.demodashi.com/demo/13420.html 人而无信不知其可 前言 很久很久没有写点什么了,只因为最近事情太多了,这几天终于闲下来了,趁此机会,记录 ...

  8. iOS 音频视频制作

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  9. 如何让音频跟视频在ios跟android上自动播放

    如何让音频跟视频在ios跟android上自动播放 <audio autoplay ><source src="audio/alarm1.mp3" type=&q ...

  10. H5音频和视频

    使用媒体标签最大的缺点在于缺少编解码器的支持一.浏览器支持性检测检测浏览器是否支持audio元素或video元素最简单的方式就是用脚本动态创建它,然后检测特定函数是否存在 var hasVideo=! ...

随机推荐

  1. C++全局和静态变量初始化

    转自:http://www.cnblogs.com/zhenjing/archive/2010/10/15/1852116.html 对于C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的 ...

  2. 【Java】代处理?代理模式 - 静态代理,动态代理

    >不用代理 有时候,我希望在一些方法前后都打印一些日志,于是有了如下代码. 这是一个处理float类型加法的方法,我想在调用它前打印一下参数,调用后打印下计算结果.(至于为什么不直接用+号运算, ...

  3. MQ框架的比较

    MQ框架的比较 MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据 ...

  4. centos6.6编译安装lnmp系列之mysql

    简介: 环境:虚拟机+centos6.6 Mysql版本:5.6.21 Mysql下载地址:http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.21.t ...

  5. Cannot find class for bean with name '/hello' defined in ServletContext resource

    Cannot find class for bean with name '/hello' defined in ServletContext resource [/WEB-INF/chapter2- ...

  6. 关于JS中apply方法的基本理解

    最近研究OpenLayers源码时,发现其中使用了比较多的apply方法,对其也是很不明白.于是上网经过多方面了解以及自己细细体会后,终于算是基本明白是其干什么的了,这里分享下.apply方法的造型是 ...

  7. 背景:表A数据误操作,被delete了,恢复。

    SELECT MAX(Scn) FROM Sys.Smon_Scn_Time WHERE Time_Dp < TO_DATE('2015-09-18', 'YYYY/MM/DD') select ...

  8. linux重启命令学习

    Linux关闭和重启系统一般使用相同的命令可以实现. 在Linux系统下常用在关机/重启命令有shutdown.halt.reboot和init,但每个命令的内部工作过程是不同的. 1.shutdow ...

  9. mysql中Timestamp,time,datetime 区别

    一.TIMESTAMP[(M)] 时间戳.范围是’1970-01-01 00:00:00’到2037年. TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间. 如果你不分配一个值, ...

  10. stm32cube--通用定时器--产生pwm波

    看了通用定时器的资料,发现内容挺多,挺难看懂,现在还是先掌握使用方法,以后再多看几遍吧. ① ② ③生成mdk工程后,在main.c的while(1)前面加上HAL_TIM_PWM_Start(&am ...