I use the MediaStore.ACTION_VIDEO_CAPTURE
intent class to capture the video, the video stored in default location(gallery),i want to store the video in specific location with specific name.
I use MediaStore.EXTRA_MEDIA_TITLE
and MediaStore.EXTRA_MEDIA_OUTPUT
but I don`t get the video at correct location, at least I need the path of recorded video.
方案一:
Trick is to insert media into database before recording:
String fileName ="captureTemp.mp4";
ContentValues values =newContentValues();
values.put(MediaStore.Video.Media.TITLE, fileName);
cameraVideoURI = getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
Intent intent =newIntent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraVideoURI);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,0);
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, MAXIMUM_VIDEO_SIZE);
startActivityForResult(intent, CAPTURE_VIDEO_INTENT);
and then onActivityResult() use saved cameraVideoUri to reference recorded video:
String[] projection ={MediaStore.Video.Media.DATA,MediaStore.Video.Media.SIZE };
Cursor cursor = managedQuery(cameraVideoURI, projection,null,null,null);
int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
int column_index_size = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
cursor.moveToFirst();
String recordedVideoFilePath = cursor.getString(column_index_data);
int recordedVideoFileSize = cursor.getInt(column_index_size);
方案二:
The solution from Zelimir doesn't work in my case (the videos were at the right location but had a size of zero bytes). So i've found another solution:
protectedvoid onActivityResult(int requestCode,int resultCode,Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
if(resultCode != RESULT_OK)return;
try{
AssetFileDescriptor videoAsset = getContentResolver().openAssetFileDescriptor(intent.getData(),"r");
FileInputStream fis = videoAsset.createInputStream();
File tmpFile =newFile(Environment.getExternalStorageDirectory(),"VideoFile.3gp");
FileOutputStream fos =newFileOutputStream(tmpFile);
byte[] buf =newbyte[1024];
int len;
while((len = fis.read(buf))>0){
fos.write(buf,0, len);
}
fis.close();
fos.close();
}catch(IOException io_e){
// TODO: handle error
}
}
The MediaStore.EXTRA_OUTPUT
and the Uri aren't necessary in this case.
相关推荐
总之,Android视频录制并保存到本地涉及到`MediaRecorder`的使用,文件路径的管理以及权限控制等多个环节。理解这些知识点对于任何Android开发者来说都是必不可少的。通过以上步骤,你可以在自己的应用中实现这一...
在Android平台上进行视频开发,尤其是涉及到本地录制时,有许多关键知识点需要掌握。本文将深入探讨Android视频通话过程中本地录制的实现方法,以及相关的技术细节。 首先,了解Android的多媒体框架至关重要。...
在Android平台上,调用系统自带的录像功能并指定保存路径是一项常见的需求,这涉及到多媒体处理、Intent使用以及文件系统的操作。下面将详细讲解如何实现这一功能。 首先,我们需要理解Android的Intent机制。Intent...
为了深入了解,我们可以查看其源代码,学习如何处理录音过程中的细节问题,例如错误处理、文件保存路径的设定、音频格式的设置等。 总的来说,调用Android系统自带录音机是一项基础且实用的功能,通过Intent和...
下面我们将详细探讨如何调用Android系统自带的视频录制功能以及在SD卡上保存录制的视频。 首先,我们需要创建一个`MediaRecorder`对象,并对其进行初始化。初始化过程中,我们需要设置以下几个关键参数: 1. **源*...
本文将深入探讨如何在Android中实现录音、获取录音文件以及控制录音时间,同时也会提及与动画和文件操作相关的知识点。 一、Android录音机制 Android系统提供了MediaRecorder类来处理音频录制。MediaRecorder是一个...
在Android和iOS等移动操作系统中,开发者经常需要集成功能来调用系统相机,让用户录制视频,并将这些视频保存到特定的路径。这个压缩包文件"调用系统相机录制视频并指定路径.rar"很可能包含了实现这一功能的相关代码...
在Android平台上,开发基于Qt的应用程序时,由于Android 6.0(API级别23)引入了运行时权限管理,因此对于涉及敏感操作如读写文件和录制音频的功能,需要在运行时请求用户授权。本Demo是针对这些权限管理的一个实例...
在Android平台上,开发一款能够调用系统录音功能或选择已有录音文件进行上传的应用是一项常见的任务。这个项目专注于创建一个Android客户端,它不仅允许用户实时录制声音,还支持选择已有的音频文件,然后将这些音频...
在录音过程中可能会遇到各种异常,如权限问题、文件I/O错误等,因此需要对这些异常进行处理,确保程序的健壮性。 8. **MyApp项目**: 压缩包中的"MyApp"可能是一个包含完整实现的Android项目,包括了上述的录音...
录制的视频将保存到指定的本地路径。通常,我们会选择保存在外部存储的公共视频目录下,这样用户可以通过系统媒体库访问该视频。路径可能类似于`Environment.getExternalStoragePublicDirectory(Environment....
在这个“vlc-android实现截图,录制视频Dome程序”中,我们重点探讨如何利用VLC库在Android应用中实现视频播放、截图以及录制功能。 **一、VLC的Android集成** 在Android项目中集成VLC,你需要将提供的源码解压缩并...
在开始录制之前,我们需要设置输出文件路径,然后调用libvlc_media_player_record()开启录制。值得注意的是,不是所有的媒体源都支持录制,这取决于源是否允许读取数据流以及LibVLC库自身对录制的支持。此外,需要...
1. 设置输出文件路径:根据你的应用需求,可能需要将视频保存在本地存储的特定目录下,或者上传到服务器。 2. 调整录制参数:如视频分辨率、帧率、比特率、编码格式等,以满足画质、大小和性能的要求。 3. 添加用户...
接下来,选择一个输出文件路径,设置音频源(如果需要录制声音)并配置音频编码器。然后调用`prepare()`方法准备录制,并通过`start()`开始录制。 ```java mediaRecorder.setOutputFile("/path/to/output.mp4"); ...
在Android平台上,录制视频是一项常见的功能,特别是在开发多媒体应用程序时。本教程将深入探讨如何调用后置摄像头来实现视频录制。在尝试网上各种示例却未能成功后,我们将分享一个经过验证、适用于多种设备的解决...
在Android平台上,录制MP4文件是一项常见的多媒体处理任务,它涉及到多媒体框架中的`MediaRecorder`类。`MediaRecorder`是Android SDK提供的一款强大的工具,用于将来自不同源的媒体数据实时编码并保存到一个文件中...
在Android平台上,录制视频是一项常见的任务,而实现可暂停和恢复录制的功能则为用户提供了更加灵活的操作体验。本文将深入探讨如何使用Android的Camera和MediaRecorder类来创建一个支持暂停和恢复录制的视频应用。 ...
当录制完成后,调用stop()方法结束录制,并保存视频文件。 接下来,我们讨论RTMP推流。RTMP是一种用于音视频数据传输的协议,常用于直播和点播服务。在Android上实现RTMP推流,我们需要使用支持RTMP的库,如librtmp...
开发者需要创建一个FFmpegFrameRecorder实例,设置输出文件路径、视频编码、帧率等参数,然后在每帧处理完毕后调用record()方法。 OpenCV是另一个强大的计算机视觉库,虽然标题和描述没有直接提及,但在处理视频帧...