视频(音频)播放 MoviePlayer

本文档展示了如何使用AVFoundation和MediaPlayer框架在iOS应用中实现视频播放、音频播放以及录音功能。首先添加必要的系统库,然后创建MPMoviePlayerViewController和AVAudioPlayer实例,接着设置录音参数并初始化AVAudioRecorder。通过按钮操作实现播放、录音和停止功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MoviePlayer  

首先,添加三个系统库AVFoundation.framework、MediaToolbox.framework、MediaPlayer.framework


#import "MainViewController.h"

#import <MediaPlayer/MediaPlayer.h>

#import <AVFoundation/AVFoundation.h>

@interface MainViewController ()

{

    MPMoviePlayerViewController *_pvc;

    MPMoviePlayerController *_mpc;

    AVAudioPlayer *_player;  //播放

    AVAudioRecorder *_recorder;  //录音

}

@end


@implementation MainViewController


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    

    NSString *path = [[NSBundle mainBundle] pathForResource:@"test1" ofType:@"mp4"];

    _pvc = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

    [_pvc.moviePlayer setShouldAutoplay:YES];

    //[_pvc.moviePlayer play];

    

    //_mpc = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

    

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    btn.frame = CGRectMake(100, 100, 100, 40);

    [btn setTitle:@"button" forState:UIControlStateNormal];

    [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn];

    

    UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    btn2.frame = CGRectMake(100, 140, 100, 40);

    [btn2 setTitle:@"点击录音" forState:UIControlStateNormal];

    [btn2 addTarget:self action:@selector(startRecord:) forControlEvents:UIControlEventTouchDown];

    [btn2 addTarget:self action:@selector(stop:) forControlEvents:UIControlEventTouchUpInside];

    

    [self.view addSubview:btn2];

    

    

    UIButton *btn3 = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    btn3.frame = CGRectMake(100, 180, 100, 40);

    [btn3 setTitle:@"播放" forState:UIControlStateNormal];

    [btn3 addTarget:self action:@selector(play) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:btn3];

    

    //录音

    //录音设置

    NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc]init];

    //设置录音格式  AVFormatIDKey==kAudioFormatLinearPCM

    [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];

    //设置录音采样率(Hz) 如:AVSampleRateKey==8000/44100/96000(影响音频的质量)

    [recordSetting setValue:[NSNumber numberWithFloat:44100] forKey:AVSampleRateKey];

    //录音通道数  1 2

    [recordSetting setValue:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];

    //线性采样位数  8162432

    [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];

    //录音的质量

    [recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityHigh] forKey:AVEncoderAudioQualityKey];

    

    path = [NSHomeDirectory() stringByAppendingPathComponent:@"tmp/aaa"];

    _recorder = [[AVAudioRecorder alloc] initWithURL:[NSURL fileURLWithPath:path] settings:recordSetting error:nil];

    //准备录音

    [_recorder prepareToRecord];

    

    // Do any additional setup after loading the view.

}

//开始录音

-(void)startRecord:(UIButton *)btn

{

    [_recorder record];

    [btn setTitle:@"录音中" forState:UIControlStateNormal];

}

//停止录音

-(void)stop:(UIButton *)btn

{

    [_recorder stop];

    [btn setTitle:@"点击录音" forState:UIControlStateNormal];

}

//播放

-(void)play

{

    NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"tmp/aaa"];

    NSLog(@"%@",path);

    _player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];

    [_player prepareToPlay];

    [_player play];

}


-(void)btnClick

{

    [self presentMoviePlayerViewControllerAnimated:_pvc];

    [_pvc.moviePlayer play];

   // [_mpc play];

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值