Reputation: 15744
The thing what I wanted to implement that users can record video only for 30 seconds or by a specific size.
I tried to use those below (both seperately or together)
public static final java.lang.String EXTRA_SIZE_LIMIT = "android.intent.extra.sizeLimit";
public static final java.lang.String EXTRA_DURATION_LIMIT = "android.intent.extra.durationLimit";
Results
EXTRA_SIZE_LIMIT did not work on Samsung Phones. On HTC it worked very inaccurately. You must set EXTRA_VIDEO_QUALITY as 0 which means low quality (it's sh*t as hell) and if you set it to "1" it wont work.
EXTRA_DURATION_LIMIT did not work on HTC Phones. Except HTC it worked without any problem all brands which I tried.
So I wonder if there are another ways to set limit for duration or size while video recording on Android?
Upvotes: 10
Views: 5741
Reputation: 304
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0); //Low Quality
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT,2097152L); //2MB
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,30); //30Seconds
startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);
You can use this way to set video size or duration passing in intent with keys "EXTRA_SIZE_LIMIT" and "EXTRA_DURATION_LIMIT".
This works fine.
Upvotes: 2
Reputation: 409
This is my configuration
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);//0 for low, 1 higth
intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,20); //20seq
intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT,size*1048576L);//X mb *1024*1024
startActivityForResult(intent, VIDEO_CAMERA_SELECT);
Works fine on LG phones, neverless Samsung devices ignore the quality parameter
Upvotes: 0
Reputation: 855
No, not when using ACTION_VIDEO_CAPTURE
. Using the MediaRecorder
directly will probably cause similar problems.
The alternative is to inform the user of the limitations and reject recorded videos that go beyond the limitations you've set up.
Upvotes: 1
Reputation: 2848
You can set maximum duration and maximum file size
recorder.setMaxDuration(80000); // 80 seconds
recorder.setMaxFileSize(5000000);
Upvotes: -1