2012-06-06 12 views
5

मैं NDK के साथ अपने Android एप्लिकेशन में उपयोग करने के लिए FFmpeg पुस्तकालय का निर्माण करने की कोशिश कर रहा हूँ। इसका कारण यह है क्योंकि मैं एंड्रॉइड में देशी वीडियो कैप्चर फीचर का उपयोग कर रहा हूं क्योंकि मैं वास्तव में अपना खुद का वीडियो रिकॉर्डर नहीं लिखना चाहता हूं। हालांकि, मूल वीडियो कैप्चर केवल उच्च गुणवत्ता वाले एन्कोडिंग या कम गुणवत्ता वाले एन्कोडिंग के लिए अनुमति देता है। मुझे बीच में कुछ चाहिए, और मेरा मानना ​​है कि समाधान उच्च गुणवत्ता वाले वीडियो को हल्का होने के लिए फिर से एन्कोड करने के लिए एफएफएमपीजी लाइब्रेरी का उपयोग करना है।Android के लिए बिल्डिंग FFmpeg आदेश पंक्ति तर्क का उपयोग करने के

अब तक मैं इस गाइड के अनुसार एफएफएमपीजी लाइब्रेरी बनाने में सक्षम हूं: http://www.roman10.net/how-to-build-ffmpeg-for-android/ और जो कुछ बदलाव मैं इसे काम करने में सक्षम हूं।

हालांकि, सब कुछ है कि मैंने पाया अपने स्वयं के एनकोडर, जो मेरे लिए overkill की तरह लगता है लिखने के बारे में हो रहा है। मैं बस इतना करना चाहता हूं कि एफएफएमपीईजी के मुख्य() फ़ंक्शन में कमांड लाइन प्रारूप में एक स्ट्रिंग भेजें और मेरे वीडियो को फिर से एन्कोड करें। हालांकि, मुझे यह समझने में प्रतीत नहीं होता कि मैं मुख्य विधि तक पहुंच प्रदान करने के लिए एफएफएमपीजी कैसे बना सकता हूं। मुझे यह पोस्ट मिला: Compile ffmpeg.c and call its main() via JNI जो एक परियोजना से जुड़ा हुआ है जो मैं कम चाहता हूं, लेकिन मेरे जीवन के लिए मैं यह नहीं समझ सकता कि क्या हो रहा है। ऐसा लगता है कि वह जितना चाहें उतना संकलित कर रहा है, और मैं वास्तव में अपने आवेदन को जितना संभव हो उतना हल्का वजन रखना चाहता हूं।

कुछ अतिरिक्त दिशा अत्यंत उपयोगी होगी। धन्यवाद।

+0

मुझे एक ही चीज़ में दिलचस्पी है, लेकिन वीडियो के बजाय ऑडियो कैप्चर के लिए। इसी तरह के प्रिंसिपल लागू होते हैं, इसलिए मैं आपके प्रश्न पर एक बक्षीस जोड़ रहा हूं। – Brad

+0

@ ब्रैड, क्या आप कुछ स्पष्टीकरण दे सकते हैं: आप उपर्युक्त मार्गदर्शिका का उपयोग करके ffmpg बनाने में सक्षम हैं लेकिन आप यह जानना चाहते हैं कि वास्तव में निर्मित कोड को जावा कोड से कॉल करके और एन्कोडिंग के उद्देश्य के लिए कुछ पैरामीटर पास करके कैसे करें। क्या यह सही समझ रहा है? – av501

+0

@ av501, मैं एंड्रॉइड डिवाइस पर माइक्रोफोन से ऑडियो कैप्चर करने के लिए एफएफएमपीईजी के अल्सा इनपुट का उपयोग करने की उम्मीद कर रहा था। मेरा मानना ​​है कि यह कैमरे से वीडियो कैप्चर करने के साथ ज़ारगांव क्या करना चाहता है इसके आधार पर है। हालांकि, यह ज़ारगांव का सवाल है, इसलिए यदि वे दो चीजें वास्तव में अलग हैं, तो कृपया विशेष रूप से वीडियो कैप्चर की लाइनों के साथ उत्तर दें। – Brad

उत्तर

1

एंड्रॉइड एनडीके में सामान्य रूप से आपके आवेदन में कोई मुख्य() नहीं है, इसलिए आप जो भी करना चाहते हैं उसे करने में असमर्थ हैं। हालांकि, आप अभी भी एफएफएमपीजी के मुख्य() को कॉल कर सकते हैं और इसके लिए सभी आवश्यक पैरामीटर प्रदान कर सकते हैं।

  1. एंड्रॉयड गतिविधि निर्माण के बाद एक आशय प्राप्त करता है: यहाँ 2 संभावनाओं मापदंडों मिल रहे हैं। अपनी गतिविधि शुरू करते समय आप आशय के माध्यम से पैरामीटर भेजने और फिर इस तरह यह निकाल सकते हैं:

    Intent CommandLine = this.getIntent(); 
    Uri uri = CommandLine.getData(); 
    
  2. आप आप एक एसडी कार्ड पर कहीं बनाने फ़ाइल से मानकों को पढ़ सकते हैं और FFmpeg को पारित कर सकते हैं।

+0

हे। मैं एंड्रॉइड में ffmpeg कमांड भी चलाने के लिए चाहता हूँ। मैं इसे कैसे प्राप्त कर सकता हूं। क्या आप कृपया मार्गदर्शन कर सकते हैं? –

+1

इस प्रकार हम मुख्य() विधि को कॉल कर सकते हैं जो jni में FFMPEG फ़ोल्डर में स्थित है और हमारे मूल सी फ़ाइल में हमारे आदेश को पास करता है। क्या आप अपना ज्ञान साझा कर सकते हैं ताकि यह हमारी मदद भी कर सके ... –

संबंधित मुद्दे