注册 登录
主题 : 通过调用系统摄像头拍照,拍视频,然后写入文件的代码范例.
级别: 骑士
UID: 9344
精华: 0
发帖: 226
可可豆: 2251 CB
威望: 2251 点
在线时间: 251(时)
注册时间: 2009-09-28
最后登录: 2016-04-07
0 楼:  发表于: 2010-04-16 15:36    发自: Web Page
来源于 已解决 分类

通过调用系统摄像头拍照,拍视频,然后写入文件的代码范例.   

我们需要获得由系统自带的,照相机,摄像机和录音软件所生成的文件。我想知道可以吗?
照片的好像通过image picker是可以实现的。
3gs上面的video是不是可以呢?
另外,录音文件应该怎么获得呢?
谢谢拉~

见四楼
[ 此帖被q6q2q3在2010-04-23 07:55重新编辑 ]

级别: 骑士
UID: 9344
精华: 0
发帖: 226
可可豆: 2251 CB
威望: 2251 点
在线时间: 251(时)
注册时间: 2009-09-28
最后登录: 2016-04-07
1 楼:  发表于: 2010-04-16 22:50    发自: Web Page
引用
引用楼主q6q2q3于2010-04-16 15:36发表的 有关获取照相机,摄影机和录音机数据的文件的方法。 :
我们需要获得由系统自带的,照相机,摄像机和录音软件所生成的文件。我想知道可以吗?
照片的好像通过image picker是可以实现的。
3gs上面的video是不是可以呢?
另外,录音文件应该怎么获得呢?
谢谢拉~
.......

555...没有人回答吗?
主要是想知道,录音文件是不是可以,通过程序来获得的?
谢谢拉~
级别: 风云使者

UID: 7444
精华: 8
发帖: 326
可可豆: 61624 CB
威望: 63424 点
在线时间: 4572(时)
注册时间: 2009-07-31
最后登录: 2017-08-18
2 楼:  发表于: 2010-04-16 23:15    发自: Web Page
照相和录像可以搜论坛资源,有位大大做过一个例子。
录音应该是可以实现的(我没做过)

开源项目WBShareKit,欢迎共同维护~绝世唐门
级别: 骑士
UID: 9344
精华: 0
发帖: 226
可可豆: 2251 CB
威望: 2251 点
在线时间: 251(时)
注册时间: 2009-09-28
最后登录: 2016-04-07
3 楼:  发表于: 2010-04-23 07:48    发自: Web Page
引用
引用第2楼qdvictory于2010-04-16 23:15发表的  :
照相和录像可以搜论坛资源,有位大大做过一个例子。
录音应该是可以实现的(我没做过)

我自己解决了,下面贴的部分代码就是来解决,调用摄像头拍照或者摄像的功能.并且把,获得的数据,直接写入到文件.

//这一段是,点击一个takePicture按钮的操作.
- (IBAction)takePicture:(id)sender {
    
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    
    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        NSArray *temp_MediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType];
        picker.mediaTypes = temp_MediaTypes;
        picker.delegate = self;
        picker.allowsImageEditing = YES;    
    }
    
    [self presentModalViewController:picker animated:YES];
    [picker release];
    
}


//下面两个函数是遵守UIImagePickerControllerDelegate这个协议所实现的类.这样就能够完整的实现,获取照片或者视频,然后写入文件的过程.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    
    BOOL success;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    
    if ([mediaType isEqualToString:@"public.image"]){
        
        UIImage *image = [info objectForKey:@"UIImagePickerControllerEditedImage"];
        NSLog(@"found an image");
        
        NSString *imageFile = [documentsDirectory stringByAppendingPathComponent:@"temp.jpg"];
        NSLog(@"%@", imageFile);
        
        success = [fileManager fileExistsAtPath:imageFile];
        if(success) {
            success = [fileManager removeItemAtPath:imageFile error:&error];
        }
        
        imageView.image = image;
        [UIImageJPEGRepresentation(image, 1.0f) writeToFile:imageFile atomically:YES];
        
        //SETIMAGE(image);
        //CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]);
    }
    else if([mediaType isEqualToString:@"public.movie"]){
        NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
        NSLog(@"%@", videoURL);
        NSLog(@"found a video");
        NSData *videoData = [NSData dataWithContentsOfURL:videoURL];
        
        /****************************************/

        NSString *videoFile = [documentsDirectory stringByAppendingPathComponent:@"temp.mov"];
        NSLog(@"%@", videoFile);
        
        success = [fileManager fileExistsAtPath:videoFile];
        if(success) {
            success = [fileManager removeItemAtPath:videoFile error:&error];
        }
        [videoData writeToFile:videoFile atomically:YES];
        //CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]);
        //NSLog(videoURL);
    }
    [picker dismissModalViewControllerAnimated:YES];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    
    [picker dismissModalViewControllerAnimated:YES];
    
}

参考了,以下文章:
http://hi.baidu.com/hh20040410/blog/item/3b9950f2a049da19b17ec559.html/cmtid/ef4e0fc210c98e160ff477db
级别: 骑士
UID: 9344
精华: 0
发帖: 226
可可豆: 2251 CB
威望: 2251 点
在线时间: 251(时)
注册时间: 2009-09-28
最后登录: 2016-04-07
4 楼:  发表于: 2010-04-23 07:52    发自: Web Page
回 2楼(qdvictory) 的帖子
请问?
由于沙盒的关系,似乎并没有办法获得系统自带的录音数据吧?
可以吗?

于是,最后,自己参考speakhere的代码,实现了一个录音的功能.
级别: 侠客
状态: 连续签到 - [2天]
UID: 14762
精华: 0
发帖: 49
可可豆: 464 CB
威望: 456 点
在线时间: 74(时)
注册时间: 2010-03-03
最后登录: 2016-08-28
5 楼:  发表于: 2010-05-18 16:17    发自: Web Page
不错哦,谢谢分享
级别: 侠客
UID: 8191
精华: 0
发帖: 38
可可豆: 1110 CB
威望: 1110 点
在线时间: 116(时)
注册时间: 2009-08-27
最后登录: 2016-03-14
6 楼:  发表于: 2010-05-18 21:53    发自: Web Page
盖个戳,留起来备用!
级别: 新手上路
UID: 18202
精华: 0
发帖: 26
可可豆: 260 CB
威望: 260 点
在线时间: 39(时)
注册时间: 2010-04-22
最后登录: 2015-05-07
7 楼:  发表于: 2010-05-19 14:28    发自: Web Page
我也盖一个。
级别: 精灵王

状态: 连续签到 - [1天]
UID: 5181
精华: 1
发帖: 160
可可豆: 24462 CB
威望: 24462 点
在线时间: 2764(时)
注册时间: 2009-04-23
最后登录: 2017-02-07
8 楼:  发表于: 2010-05-19 17:43    发自: Web Page
感谢分享。。。。
级别: 精灵王

UID: 7927
精华: 1
发帖: 316
可可豆: 11348 CB
威望: 11648 点
在线时间: 1658(时)
注册时间: 2009-08-19
最后登录: 2018-11-05
9 楼:  发表于: 2010-05-21 09:35    发自: Web Page
用到了,谢谢楼主分享~~

先要我为人人,才有人人为我~~树欲静而风不止;子欲养而亲不待~~百善孝为先~~

CocoaChina社区转载内容已尽可能注明出处,如未能核实来源或转发内容图片有权利瑕疵的,请及时联系社区进行修改或删除【联系方式QQ : 3442093904 邮箱:support@cocoachina.com】文章内容为作者独立观点,不代表CocoaChina社区立场。版权归原作者所有,如申请授权请联系作者,因文章侵权CocoaChina社区不承担任何法律及连带责任。

描述
快速回复

关注本帖(如果有新回复会站内信通知您)

发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

按"Ctrl+Enter"直接提交
    顶部