音頻視頻

1、音頻
音樂播放用到一個叫作AVAudioPlayer的類,這個類能夠用於播放手機本地的音樂文件。
AVAudioPlayer類依賴於AVFoundation框架,所以使用該類必須先導入AVFoundation框架,幷包含其頭文件(包含主頭文件便可)。
//1.音樂文件的路徑
NSString *urlString = [[NSBundle mainBundle] pathForResource:@"王繹龍-鄰家美眉" ofType:@"mp3"];
//2.轉化成本地路徑
NSURL *url = [NSURL fileURLWithPath:urlString];
//3.建立播放對象
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
//5.記錄音樂的總時長   duration聲音的持續時間
@property(readonly) NSTimeInterval duration;
//6.設置音量的大小
@property float volume
設置播放次數
 @property float numberOfLoops = 0;
 
//播放   暫停 中止
  • (BOOL)play;
  • (void)pause;
  • (void)stop;
//播放進度的改變
@property NSTimeInterval currentTime;
 
代碼:
//    添加背景圖片
    imageview = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    imageview.image = [UIImage imageNamed:@"1.jpg"];
    [self.view addSubview:imageview];
//    添加播放按鈕
    btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(150, 180, 100, 100);
    btn.tintColor = [UIColor redColor];
    [btn setTitle:@"播放" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
//    添加暫停按鈕
    btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn1.frame = CGRectMake(180, 380, 100, 100);
    btn1.tintColor = [UIColor redColor];
    [btn1 setTitle:@"暫停" forState:UIControlStateNormal];
    [btn1 addTarget:self action:@selector(btn1Action:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn1];
//    添加中止按鈕
    btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn2.frame = CGRectMake(130, 380, 30, 100);
    btn2.tintColor = [UIColor redColor];
    [btn2 setTitle:@"中止" forState:UIControlStateNormal];
    [btn2 addTarget:self action:@selector(btn2Action:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn2];
//播放事件
-(void)btnAction:(UIButton *)bt
{
    if (player == nil){
    NSString *path = [[NSBundle mainBundle]pathForResource:@"王繹龍-鄰家美眉" ofType:@"mp3"];
    NSURL *url = [NSURL fileURLWithPath:path];
   
    player = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
    }
//    開始播放
    [player play];

}
//暫停播放事件
-(void)btn1Action:(UIButton *)bt1
{
//    暫停播放
    [player pause];
   
}
//中止播放事件
-(void)btn2Action:(UIButton *)bt2
{
//    播放中止
    [player stop];
    player = nil;
}
 
   ///////////音頻代碼(block方法)功能////////////
 
- (void)viewDidLoad {
    [super viewDidLoad];
   
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(queue, ^{
        // 建立一個定時器
        [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];
       
        // 保持線程活躍
        [[NSRunLoop currentRunLoop] run];
    });

//    播放
    play1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    play1.frame = CGRectMake(30, 360, 90, 35);
    play1.backgroundColor = [UIColor redColor];
    [play1 setTitle:@"播放" forState:UIControlStateNormal];
    [play1 addTarget:self action:@selector(playAction:) forControlEvents:UIControlEventTouchUpInside];
   
    [self.view addSubview:play1];
//    中止播放
    stop = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    stop.frame = CGRectMake(30, 260, 90, 35);
    stop.backgroundColor = [UIColor redColor];
    [stop setTitle:@"中止" forState:UIControlStateNormal];
    [stop addTarget:self action:@selector(stopAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:stop];
//    暫停播放
    pause = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    pause.frame = CGRectMake(30, 160, 90, 35);
    pause.backgroundColor = [UIColor redColor];
    [pause setTitle:@"暫停" forState:UIControlStateNormal];
    [pause addTarget:self action:@selector(pauseAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:pause];
//    聲音UILabel
    sound = [[UILabel alloc] initWithFrame:CGRectMake(90, 210, 100, 20)];
    sound.text = @"聲音:";
    [self.view addSubview:sound];
//    聲音UISlider
    audioPlayer = [[UISlider alloc] initWithFrame:CGRectMake(150, 170, 200, 100)];
    [audioPlayer addTarget:self action:@selector(audioSilderChanged:) forControlEvents:UIControlEventValueChanged];
   
    [self.view addSubview:audioPlayer];
//    進度UISlider
    _timeSlider = [[UISlider alloc] initWithFrame:CGRectMake(160, 270, 150, 100)];
    [_timeSlider addTarget:self action:@selector(timeSliderChanged:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:_timeSlider];
//    當前進度
    _startTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 270, 100, 100)];
    [self.view addSubview:_startTimeLabel];
//    音樂總長
    _endTimeLabel = [[UILabel alloc] initWithFrame:CGRectMake(320, 270, 100, 100)];
    [self.view addSubview:_endTimeLabel];
    _audioPlayer.delegate = self;
   
 
}
- (void)timerAction:(NSTimer *)timer
{
    // 回到主線程刷新UI
    dispatch_async(dispatch_get_main_queue(), ^{
        _startTimeLabel.text = [NSString stringWithFormat:@"%d",(int)_audioPlayer.currentTime];
        _timeSlider.value = _audioPlayer.currentTime;
    });
}

-(void)pauseAction:(UIButton *)pause{
    [_audioPlayer pause];
}
-(void)stopAction:(UIButton *)stop{
    [_audioPlayer stop];
    _audioPlayer = nil;
}
-(void)audioSilderChanged:(UISlider *)audio{
    UISlider *slider = (UISlider *)audioPlayer;
    // 7.設置音量的大小
    _audioPlayer.volume = slider.value;
   
   
}
-(void)playAction:(UIButton *)pl{
    if (_audioPlayer == nil) {
        // 1.音樂文件的路徑
        NSString *urlString = [[NSBundle mainBundle] pathForResource:@"王繹龍-鄰家美眉" ofType:@"mp3"];
        // 2.轉化成本地路徑
        NSURL *url = [NSURL fileURLWithPath:urlString];
        // 3.建立播放對象
        _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
        _audioPlayer.numberOfLoops = -1;

        // 5.記錄音樂的總時長  duration聲音的持續時間
        _startTimeLabel.text = @"0";
        //    音樂總長UILabel
        _endTimeLabel.text = [NSString stringWithFormat:@"%d",(int)_audioPlayer.duration];
        // 6.設置滑條的參數
        _timeSlider.minimumValue = 0;
        _timeSlider.maximumValue = _audioPlayer.duration;
        // 7.設置音量的大小
        _audioPlayer.volume = 0.0;
    }
   
    // 5.播放
    [_audioPlayer play];
}
-(void)timeSliderChanged:(UISlider *)time{
    // 播放進度的改變
    _audioPlayer.currentTime = _timeSlider.value;
}
@end
 
   /////////音頻(系統)/ //////////
-----設置支持後臺播放------
    NSError *error;
    AVAudioSession *audionSession = [AVAudioSession sharedInstance];
    [audionSession setCategory:AVAudioSessionCategoryPlayback error:&error];
   
   
    // 1.獲取音頻的url
    NSString *urlString = @" http://yinyueshiting.baidu.com/data2/music/122092051/693143255600128.mp3?xcode=fcdab48f5e8e1bfeabce6f1886feb9701b23d208676f9a7d";
    NSURL *url = [NSURL URLWithString:urlString];
   
    // 2.建立播放對象
    // 01.建立播放元素
    _playerItem = [[AVPlayerItem alloc] initWithURL:url];
    _player = [[AVPlayer alloc] initWithPlayerItem:_playerItem];
   
    // 播放
    [_player play];
   
    // 暫停
//    [_player pause];
   
    */
   
   
    // 3.註冊系統聲音 (測試一些系統功能的時候,模擬器可能很差使)
    // 1.獲取路徑
    NSString *urlString = [[NSBundle mainBundle] pathForResource:@"44th Street Medium" ofType:@"caf"];
    NSURL *fileUrl = [NSURL fileURLWithPath:urlString];
   
    // 2.建立建立系統生意的標識
    SystemSoundID soundID ;
    // 3.註冊系統聲音
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileUrl, &soundID)
    ;
   
    // 4.播放
    AudioServicesPlaySystemSound(soundID);
   
    // 設置震動
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
   
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // 獲取音樂的總時長
    NSLog(@"%lld",_playerItem.duration.value/_playerItem.duration.timescale);
}
 
///////////音頻(代理方式)////////////
 
button(play、stop、pause暫停)略寫
//從budle路徑下讀取音頻文件  輕音樂 - 薩克斯回家這個文件名是你的歌曲名字,mp3是你的音頻格式
         NSString *string = [[NSBundle mainBundle] pathForResource:@"王繹龍-鄰家美眉" ofType:@"mp3"];
         //把音頻文件轉換成url格式
         NSURL *url = [NSURL fileURLWithPath:string];
         //初始化音頻類 而且添加播放文件
         avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
         //設置代理
         avAudioPlayer.delegate = self;
   
         //設置初始音量大小
        // avAudioPlayer.volume = 1;
   
         //設置音樂播放次數  -1爲一直循環
         avAudioPlayer.numberOfLoops = 0;
   
     //預播放
         [avAudioPlayer prepareToPlay];
   
         //初始化一個播放進度條
         progressV = [[UIProgressView alloc] initWithFrame:CGRectMake(20, 50, 200, 20)];
         [self.view addSubview:progressV];
   
   
         //用NSTimer來監控音頻播放進度
         timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self
            selector:@selector(playProgress)
userInfo:nil repeats:YES];
         //初始化音量控制
         volumeSlider = [[UISlider alloc] initWithFrame:CGRectMake(20, 70, 200, 20)];
         [volumeSlider addTarget:self action:@selector(volumeChange)
            forControlEvents:UIControlEventValueChanged];
         //設置最小音量
         volumeSlider.minimumValue = 0.0f;
         //設置最大音量
         volumeSlider.maximumValue = 10.0f;
         //初始化音量爲多少
         volumeSlider.value = 5.0f;
   
         [self.view addSubview:volumeSlider];
   
   
         //聲音開關控件(靜音)
         UISwitch *swith = [[UISwitch alloc] initWithFrame:CGRectMake(100, 20, 60, 40)];
         [swith addTarget:self action:@selector(onOrOff:) forControlEvents:UIControlEventValueChanged];
         //默認狀態爲打開
         swith.on = YES;
         [self.view addSubview:swith];
}
- (void)play
{
    [avAudioPlayer play];
}
- (void)pause
{
    [avAudioPlayer pause];
}
- (void)stop
{
    avAudioPlayer.currentTime = 0;
    [avAudioPlayer stop];
}
- (void)playProgress
{
    progressV.progress = avAudioPlayer.currentTime/avAudioPlayer.duration;
}
- (void)onOrOff:(UISwitch *)sender
{
    avAudioPlayer.volume = sender.on;
}
- (void)volumeChange
{
     avAudioPlayer.volume = volumeSlider.value;
}
//播放完成時調用的方法  (代理裏的方法),須要設置代理才能夠調用
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
         [timer invalidate]; //NSTimer暫停  invalidate  使...無效;
    NSLog(@"播放結束纔會調用");
}
 
2、視頻
MPMoviePlayerControlle想要實現視頻播放也得導入庫文件MediaPlayer.framework
//導入頭文件
#import <MediaPlayer/MediaPlayer.h>
    // 1.自定義播放視圖的大小
    MPMoviePlayerController *_mpPlayerController;
//  
    // 1.自定義播放界面
NSURL *url = [NSURL URLWithString:@" http://vf1.mtime.cn/Video/2012/04/23/mp4/120423212602431929.mp4"];
//建立播放對象
    _mpPlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
    // 設置播放視圖的大小
_mpPlayerController.view.frame = CGRectMake(20, 20, 320, 140);
//添加的時候要注意_mpPlayerController.view
    [self.view addSubview:_mpPlayerController.view];
    }
    // 播放
    [_mpPlayerController play];
代碼:
//    彈出播放
    Broadcast = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    Broadcast.frame = CGRectMake(150, 170, 100, 100);
    Broadcast.tintColor = [UIColor redColor];
    [Broadcast setTitle:@"播放" forState:UIControlStateNormal];
    [Broadcast addTarget:self action:@selector(begingAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:Broadcast];
//    暫停
    Broadcast1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    Broadcast1.frame = CGRectMake(150, 260, 100, 100);
    Broadcast1.tintColor = [UIColor redColor];
    [Broadcast1 setTitle:@"暫停" forState:UIControlStateNormal];
    [Broadcast1 addTarget:self action:@selector(begingAction1:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:Broadcast1];
//    中止
    Broadcast2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    Broadcast2.frame = CGRectMake(150, 360, 100, 100);
    Broadcast2.tintColor = [UIColor redColor];
    [Broadcast2 setTitle:@"中止" forState:UIControlStateNormal];
    [Broadcast2 addTarget:self action:@selector(begingAction2:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:Broadcast2];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitFullScreen:) name: MPMoviePlayerDidExitFullscreenNotification object:nil];
}
-(void)begingAction:(UIButton *)beging
{
    if (_mpPlayerController == nil){
    // 1.自定義播放界面
    NSURL *url = [NSURL URLWithString:@" http://vf1.mtime.cn/Video/2012/04/23/mp4/120423212602431929.mp4"];
    _mpPlayerController = [[MPMoviePlayerController alloc] initWithContentURL:url];
    // 設置播放視圖的大小
    _mpPlayerController.view.frame = CGRectMake(20, 20, 320, 140);
    [self.view addSubview:_mpPlayerController.view];
    }
    // 播放
    [_mpPlayerController play];
}
-(void)begingAction1:(UIButton *)beging1
{
    [_mpPlayerController pause];
}
-(void)begingAction2:(UIButton *)beging2
{
    [_mpPlayerController stop];
    _mpPlayerController = nil;
}
-(void)exitFullScreen:(NSNotification *)notification{
    [mpc.view removeFromSuperview];
    NSLog(@"remove player");
}
@end
相關文章
相關標籤/搜索