नीचे का उपयोग करते हुए मेरे कार्य कोड की संरचना वीडियो और ऑडियो रिकॉर्ड करने के लिए है? setProfile(...)
आयाम को जो भी QUALITY_HIGH देता है, को सेट करने के लिए प्रतीत होता है, लेकिन बाद में मैंने setVideoSize(...)
के साथ आयाम सेट किए हैं, जो इसे ओवरराइड करता है। हालांकि, जब मैं दो कैमकॉर्डर प्रोफाइल लाइनों को हटा देता हूं, तो ऐप setVideoSize(...)
पर लॉगकैट E/MediaRecorder(19526): setVideoSize called in an invalid state: 2
के साथ क्रैश हो जाता है।एंड्रॉयड MediaRecorder
2) मैं ऑडियो रिकॉर्ड कैसे नहीं करूं? दस्तावेज़ीकरण में कहा गया है कि यदि setAudioSource(...)
नहीं कहा जाता है, तो कोई ऑडियो ट्रैक नहीं होगा। हालांकि, जब मैं उस रेखा को हटा देता हूं तो ऐप setProfile(...)
पर लॉगकैट E/MediaRecorder(19946): try to set the audio encoder without setting the audio source first
के साथ दुर्घटनाग्रस्त हो जाता है।
3) यदि मैं कैमकॉर्डरप्रोफाइल लाइनों और setAudioSource(...)
लाइन दोनों को हटा देता हूं, तो यह 1 में दुर्घटनाग्रस्त हो जाता है)।
4) मैं भी लाइन
recorder.setOutputFormat(OutputFormat.DEFAULT);
CamcorderProfile लाइनों के बजाय
जोड़ने की कोशिश की है। लेकिन अब यह perpare()
पर दुर्घटनाग्रस्त हो गया है। यदि setAudioSource(...)
कहा जाता है LogCat है: E/MediaRecorder(20737): audio source is set, but audio encoder is not set
अगर यह LogCat है नहीं बुलाया जाता है: E/MediaRecorder(20544): video source is set, but video encoder is not set
मैं allover इंटरनेट देखा है और मैं सेटअप MediaRecorder करने का सही तरीका का एक अच्छा उदाहरण नहीं मिल सकता है। Here इसका तात्पर्य है कि एपीआई 8 के बाद आपको कैमकॉर्डर प्रोफाइल भाषा का उपयोग करना चाहिए, लेकिन ऐसा लगता है कि यह समस्याएं पैदा कर रहा है।
कोई भी मदद महान होगी! धन्यवाद!
कोड (जो जब यह काम करता है के रूप में चलाने से कम है):
recorder = new MediaRecorder();
recorder.setCamera(<<camera>>);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
recorder.setProfile(profile);
recorder.setOutputFile(<<Path String>>);
recorder.setVideoSize(<<Width>>, <<Height>>);
recorder.setPreviewDisplay(<<Surface>>);
recorder.setOrientationHint(0);
recorder.setMaxDuration(10000);
recorder.setOnInfoListener(this);
try
{
recorder.prepare();
recorder.start();
} catch ...
आप सही हैं, जैसा कि मैंने इसे पोस्ट किया है, मुझे 'setProfile()' फ़ंक्शन के लिए कोड मिला है। यह हमेशा 'setAudioEncoder()' को कॉल करता है, इसलिए यदि आप ऑडियो स्रोत सेट नहीं करते हैं तो यह क्रैश हो जाएगा। इसका उत्तर इस फ़ंक्शन की प्रतिलिपि बनाना है, इस तरह आप अभी भी 'कैमकॉर्डर प्रोफाइल' सेटिंग में निर्मित कर सकते हैं लेकिन यह भी चुन सकते हैं कि आप कौन सी सेटिंग्स सेट करना चाहते हैं (यानी ऑडियो)। धन्यवाद – jacobianism
हाँ, अगर आप कैमकॉर्डर का उपयोग केवल वीडियो प्राप्त करने के लिए करना चाहते हैं तो आप भी ऐसा कर सकते हैं। आप जिस तरह से किसी भी डिवाइस के लिए उन्हें हार्डकोड किए बिना इष्टतम उपलब्ध मूल्य प्राप्त कर सकते हैं। –
आपकी पोस्ट को बहुत सारे खोजने के बाद मेरा दिन बना। SetVideoEncoder और setAudioEncoder से पहले सेटविडियो आकार को सेट करना चाल था। धन्यवाद – gtsouk