क्या एंड्रॉइड में ऑडियो स्ट्रीम के बिना कैमरा से वीडियो रिकॉर्ड करना संभव है?ऑडियो के बिना एंड्रॉइड रिकॉर्ड वीडियो
लक्ष्य: आउटपुट फ़ाइल आकार को कम करने के लिए।
क्या एंड्रॉइड में ऑडियो स्ट्रीम के बिना कैमरा से वीडियो रिकॉर्ड करना संभव है?ऑडियो के बिना एंड्रॉइड रिकॉर्ड वीडियो
लक्ष्य: आउटपुट फ़ाइल आकार को कम करने के लिए।
आप सेटऑडियो * पर कॉल किए बिना MediaRecorder का उपयोग कर सकते हैं। यह मेरा पहला MediaRecorder उपयोग कर रहा है, लेकिन इस उदाहरण काम करने के लिए लगता है:
setVideoSize(int, int);
setVideoFrameRate(int);
आप तैयार कर सकते हैं MediaRecorder:
public class CamcorderView extends SurfaceView implements
SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
private MediaRecorder mRecorder;
public CamcorderView(Context context, AttributeSet attrs) {
super(context, attrs);
mHolder = getHolder();
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mHolder.addCallback(this);
mCamera = Camera.open();
mRecorder = new MediaRecorder();
}
public void stop() {
mRecorder.stop();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera.unlock();
mRecorder.setCamera(mCamera);
mRecorder.setPreviewDisplay(mHolder.getSurface());
// You may want to change these
mRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
// You'll definitely want to change this
mRecorder.setOutputFile("/mnt/sdcard/out");
try {
mRecorder.prepare();
} catch (IllegalStateException e) {
Log.e("IllegalStateException", e.toString());
} catch (IOException e) {
Log.e("IOException", e.toString());
}
mRecorder.start();
}
}
तुम भी कॉल करने के लिए चाहते हो सकता है आवश्यक फ़ील्ड को इनबिल्ट प्रोफाइल (कैमकॉर्डर प्रोफाइल) से कॉपी करके। बस ऑडियो सेटिंग्स छोड़ दें और आपको जाने के लिए अच्छा होना चाहिए। अपनी जरूरतों के लिए नीचे कोड संपादित करें, चरण 3 यहां आवश्यक हिस्सा है।
private boolean prepareVideoRecorder() {
mCamera = getCameraInstance();
mMediaRecorder = new MediaRecorder();
// store the quality profile required
CamcorderProfile profile = CamcorderProfile.get(cameraid, CamcorderProfile.QUALITY_HIGH);
// Step 1: Unlock and set camera to MediaRecorder
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
// Step 2: Set sources
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// Step 3: Set all values contained in profile except audio settings
mMediaRecorder.setOutputFormat(profile.fileFormat);
mMediaRecorder.setVideoEncoder(profile.videoCodec);
mMediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
mMediaRecorder.setVideoFrameRate(profile.videoFrameRate);
mMediaRecorder.setVideoSize(profile.videoFrameWidth, profile.videoFrameHeight);
// Step 4: Set output file
mMediaRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO).toString());
// Step 5: Set the preview output
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
// Step 6: Prepare configured MediaRecorder
try {
mMediaRecorder.prepare();
} catch (IllegalStateException e) {
releaseMediaRecorder();
return false;
} catch (IOException e) {
releaseMediaRecorder();
return false;
}
return true;
}
अच्छी तरह से काम करता है .. धन्यवाद –
अच्छा समाधान ...... यह मेरे लिए बहुत उपयोगी है ..... – jack
धन्यवाद! यह सचमुच काम करता है! शायद आप जानते हैं कि CamcorderProfile के साथ इस सेटिंग्स को कैसे लागू करें? चूंकि मैं स्वचालित रूप से जेनरेट किए गए पैरा का उपयोग कर रहा हूं 'camcorderProfile = CamcorderProfile.get (कैमकॉर्डरप्रोफाइल.क्वैलिटी_एचआईवाई);', तो सभी सेटिंग्स को 'mediaRecorder.setProfile (camcorderProfile) के रूप में लागू किया जाता है; ' – Sergii
क्या आप अधिक जानकारी प्रदान कर सकते हैं क्योंकि यह उचित काम नहीं करता है। –