1. 程式人生 > >[iOS]從相簿獲取以及用相機拍攝視訊並快取到沙盒

[iOS]從相簿獲取以及用相機拍攝視訊並快取到沙盒

[iOS]從相簿獲取以及用相機拍攝視訊並快取到沙盒

從標題很容易發現,本文只是為了獲取視訊資料來源,以便後面能方便完成視訊上傳等操作

需要匯入AVFoundation.framework(獲取資料來源), MediaPlayer.framework(播放視訊)

[objc] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. #import "DMSelectVideoViewController.h"
  2. #import "ZYQAssetPickerController.h"
  3. #import <AVFoundation/AVFoundation.h>
  4. #import <MediaPlayer/MediaPlayer.h>
  5. // 視訊URL路徑
  6. #define KVideoUrlPath   \
  7. [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"VideoURL"]  
  8. @interface DMSelectVideoViewController ()<UIActionSheetDelegate , ZYQAssetPickerControllerDelegate , UINavigationControllerDelegate ,UITextFieldDelegate , UIImagePickerControllerDelegate>  
  9. @property (strongnonatomic) NSMutableArray     *uploadDataArr;     
  10. @property (weak, nonatomic) IBOutlet UITextView  *desTextView;  
  11. @property (weak, nonatomic) IBOutlet UIImageView *imgView;  
  12. @property (weak, nonatomic) IBOutlet UILabel     *titleLab;  
  13. @property (weak, nonatomic) IBOutlet UILabel     *typeLab;  
  14. @property (weak, nonatomic) IBOutlet UILabel     *timeLab;  
  15. @property (strongnonatomicMPMoviePlayerViewController *moviePlayerView;  
  16. @end
  17. @implementation DMSelectVideoViewController  
  18. @synthesize uploadDataArr = _uploadDataArr;  
  19. @synthesize moviePlayerView = _moviePlayerView;  
  20. //播放視訊
  21. - (IBAction)playVideoAction:(id)sender {  
  22.     if(_uploadDataArr){  
  23.         NSDictionary *lastObj = [_uploadDataArr lastObject];  
  24.         NSString *viPath = [lastObj objectForKey:@"path"];  
  25.         if(![viPath isEqualToString:@""]){  
  26.             NSURL *movieURL = [NSURL fileURLWithPath:viPath];  
  27.             [_moviePlayerView.view removeFromSuperview];  
  28.             _moviePlayerView = nil;  
  29.             _moviePlayerView =[[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];  
  30.             [_moviePlayerView.moviePlayer prepareToPlay];  
  31.             [self.view addSubview:_moviePlayerView.view];  
  32.             _moviePlayerView.moviePlayer.shouldAutoplay=YES;  
  33.             [_moviePlayerView.moviePlayer setControlStyle:MPMovieControlStyleDefault];  
  34.             [_moviePlayerView.moviePlayer setFullscreen:YES];  
  35.             [_moviePlayerView.view setFrame:self.view.bounds];  
  36.             //播放完後的通知
  37.             [[NSNotificationCenter defaultCenter] addObserver:self
  38.                                                      selector:@selector(movieFinishedCallback:)  
  39.                                                          name:MPMoviePlayerPlaybackDidFinishNotification                                                      object:nil];  
  40.             //離開全屏時通知,因為預設點選Done是退出全屏,要離開播放器就要覆蓋掉這個事件
  41.             [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitFullScreen:) name: MPMoviePlayerDidExitFullscreenNotification object:nil];  
  42.         }  
  43.     }  
  44. }  
  45. //播放結束後離開播放器,點選上一曲、下一曲也是播放結束
  46. -(void)movieFinishedCallback:(NSNotification*)notify {  
  47.     MPMoviePlayerController* theMovie = [notify object];  
  48.     [[NSNotificationCenter defaultCenter] removeObserver:self
  49.                                                    name:MPMoviePlayerPlaybackDidFinishNotification  
  50.                                                  object:theMovie];  
  51.     [theMovie.view removeFromSuperview];  
  52. }  
  53. -(void)exitFullScreen:(NSNotification *)notification{  
  54.     [_moviePlayerView.view removeFromSuperview];  
  55. }  
  56. //選擇視訊
  57. - (IBAction)ChioceVideoAction:(id)sender {  
  58.     [self.view endEditing:YES];  
  59.     UIActionSheet *actionSheet=[[UIActionSheet alloc] initWithTitle:nil
  60.                                                            delegate:self
  61.                                                   cancelButtonTitle:@"取消"
  62.                                              destructiveButtonTitle:nil
  63.                                                   otherButtonTitles:@"從相簿選擇",@"相機拍攝", nil nil];  
  64.     actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;  
  65.     [actionSheet showInView:self.view];  
  66. }  
  67. //投稿
  68. - (IBAction)IWantToContributeAction:(id)sender {  
  69.     [self.view endEditing:YES];  
  70. }  
  71. -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{  
  72.     switch (buttonIndex) {  
  73.         case 0:  
  74.             

    相關推薦

    [iOS]相簿獲取以及相機拍攝視訊快取

    [iOS]從相簿獲取以及用相機拍攝視訊並快取到沙盒 從標題很容易發現,本文只是為了獲取視訊資料來源,以便後面能方便完成視訊上傳等操作 需要匯入AVFoundation.framework(獲取資料來源), MediaPlayer.framework

    Android拍照和相簿獲取圖片(解決android7.0開啟相機崩潰的問題),同時也解決了拍完照後圖片方向不正的問題

    再android7.0中相機操作需要動態申請許可權,在點選開啟相機按鈕時要先判斷許可權,沒有許可權要申請,有許可權再操作,同時在申請許可權的回撥方法中也要判斷是否有許可權,有許可權的話再呼叫開啟相機的方法 package test.img.com.myim

    微信小程式-相簿獲取圖片,視訊 使用相機拍照,錄影上傳+伺服器(nodejs版)接收

    在本文 微信小程式-從相簿獲取圖片 使用相機拍照 本地圖片上傳之前需要看看 程式碼封裝是在上文新增的。 本文知識點: 1、微信小程式選擇圖片wx.chooseImage()介面的使用 2、

    iOS 相簿中匯入二維碼圖片識別

    使用的第三方庫ZXingObjC(https://github.com/TheLevelUp/ZXingObjC)進行識別,主要程式碼如下: CGImageRef imageToDecode = image.CGImage; // Given a CGImage in

    Android調相機實現拍照裁剪圖片,調手機中的相冊圖片裁剪圖片

    != findview create 圖片剪裁 顯示 parent 學會 true mfile 在 Android應用中,非常多時候我們須要實現上傳圖片,或者直接調用手機上的拍照功能拍照處理然後直接顯示並上傳功能,以下將講述調用相機拍照處理圖片然後顯示和調用手機相冊中的

    iOS開發之記憶體快取 磁碟快取

            最近一直看到“快取”兩字,索性自己總結一下,希望大神看到多多指點。         說到快取,快取分為記憶體快取和磁碟快取兩種,記憶體是指當前程式的執行空間,磁碟是程式的儲存空間; 記憶體快取速度快容量小,磁碟快取容量大速度慢可持久化;記憶體是臨時儲存檔案用

    配置檔案或資料庫中讀取資訊快取

    在專案中將一些常用的不變的資訊可以快取起來,這樣可以減少記憶體的使用率,提高效能。比如說就資料庫連線的相關資訊等,可以用單例模式第一次進行連線的時候將資料庫連線的相關資訊快取再單例物件中。 首先建個.properties檔案,存放資料庫連線資訊,內容如下: #資料庫配置

    Android選擇頭像(相機-相簿-截圖獲取),以及閃退的解決

    最近在做類似註冊的模組用到了上傳頭像 找了好幾個demo效果都不太好,最後找了一個不會在Neux6 上crush掉的,程式碼也很簡單: 專案叫ChangeHead manifest檔案內容: ------------- <?xml versio

    Android中相機拍攝照片,以及相簿選擇圖片壓縮上傳(壓縮後儲存進SD中)(可用於修改頭像等)

               這個功能借鑑了多個大神的,然後整合起來。                    Android中相機拍攝照片,以及相簿選擇圖片壓縮上傳(壓縮後儲存進SD中)(可用   於修改頭像等)                       第一步: privat

    iOS存取照片到自定義相簿以及相簿取照片

    因為iOS系統相簿許可權及照片顯示的問題,所以沒法像android一樣直接在某個路徑下建立資料夾儲存照片,並利用名字來取照片。iOS實現儲存照片到自定義相簿,其實是先把圖片存到系統相簿,然後建立一個相薄,在從系統相簿中取出那張照片新增到自定義的相薄中。 使

    [iOS] url中獲取檔名以及字尾

    //這裡有一個模擬器沙盒路徑(完整路徑) NSString* [email protected]"/Users/junzoo/Library/Application Support/iPhone Simulator/7.0.3/Applications/63925F20-

    呼叫系統相機拍照獲取圖片或者相簿中呼叫本地圖片顯示問題

                需求是這樣的:開啟系統或者第三方相機app拍照,然後使用所拍照片進行處理,或者直接呼叫系統或者第三方相簿app,選擇圖片返回使用。需求很簡單,過程很蛋疼,網上有很多方法,不過有很多不好用的地方,最後使用的這種方式還不錯,記錄一下,還是那句話,我很懶,

    呼叫Android系統自帶相機拍照,相簿獲取圖片(相容7.0系統)

    一,前言: 在日常的手機應用開發過程中,經常會遇到上傳圖片的需求,像上傳頭像之類的,這就需要呼叫系統的相機,相簿獲取照片。但是在Android 系統7.0之後認為這種操作是不安全的,這篇文章主要就是記錄7.0獲取照片遇到的問題。 二,FileProvider介紹 都

    關於Android7.0相機閃退以及相簿獲取不到圖片問題

    文件說明:關於Android7.0及以上機型調取相機閃退情況處理。 現象:     因開發中遇到需要呼叫系統相機或相簿獲取圖片,於是也沒有多思考就使用相關指定的Action去調取相機或者相簿,在開始測試時未出現問題,直到這個APK包被裝到一箇中興手機(型號A2017)手機上

    Android呼叫系統相機相簿功能,適配6.0許可權獲取以及7.0以後獲取URI(相容多版本)

      Android中呼叫系統相機來拍攝照片的程式碼,如下:1、首先設定Uri獲取判斷以及相機請求Codepublicfinalint TYPE_TAKE_PHOTO = 1;//Uri獲取型別判斷publicfinalint CODE_TAKE_PHOTO = 1;//相機R

    iOS圖片處理(一)呼叫系統相機相簿獲取圖片,給相機新增自定義覆蓋物

    [摘要:起首,拍照或從相簿挑選照片須要應用 UIImagePickerController,應用時須要增加兩個協定 #import UIKit/UIKit.h @interface ViewContr

    iOS 相機拍照、相簿獲取照片(仿微信) 一一 拍照、圖片裁剪

    先來兩張效果圖 1.使用相機拍照 匯入需要的框架 #import <AVFoundation/AVFoundation.h> 建立相機 /** 捕獲裝置,通常是前置攝像頭,後置攝像頭,麥克風(音訊輸入) */ @property (strong, n

    前臺向後臺傳值的兩種方法 以及 後臺獲取數據的方法

    list 獲取數據 data border asc req rip attr 訂單 1、前臺向後臺傳值方法一: 表單提交的方式: 1 <form action="${path }/manage/logon.do" method="post" id="logonFo

    線程池--spring配置,靜態上下文獲取以及調

    spring@ImportResource({"classpath:dubbo.xml","classpath*:applicationContext.xml"})定義applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><b

    微信小程序開發之相冊獲取圖片 使用相機拍照 本地圖片上傳

    服務器 color form 圖片上傳 info success height set som 1.index.wxml 1 <!--index.wxml--> 2 <button style="margin:30rpx;" bindtap="cho