2012-03-09 20 views
11

मैं NDK r7b साथ FFMPEG के सभी-इन-वन स्थिर द्विआधारी निर्माण करने के लिए कोशिश कर रहा हूँ और सब कुछ ठीक काम करता है के लिए librtmp साथ बिल्डिंग FFMPEG तक मैं RTMP समर्थन के साथ इसे बनाने का प्रयास करें।एंड्रॉयड

मैं इस

.configure \ 
--target-os=linux \ 
--cross-prefix=arm-linux-androideabi- \ 
--arch=arm \ 
--sysroot=/home/andrey/android-ndk-r7b/platforms/android-3/arch-arm \ 
--enable-static \ 
--disable-shared \ 
--disable-symver \ 
--enable-small \ 
--disable-devices \ 
--disable-avdevice \ 
--enable-gpl \ 
--enable-librtmp \ 
--prefix=../build/ffmpeg/armeabi \ 
--extra-cflags=-I../rtmpdump/librtmp \ 
--extra-ldflags=-L../rtmpdump/librtmp \ 

तरह librtmp2.4 और कस्टम config साथ https://github.com/guardianproject/android-ffmpeg से usind सूत्रों हूँ और rtmpdump निर्देशिका ffmpeg के रूप में एक ही स्तर पर देता है। जैसा कि मैं समझता हूं कि मेरी कॉन्फ़िगरेशन में पिछले दो स्ट्रिंग्स कहती हैं कि कंपाइलर librtmp के स्रोत कहां पा सकता है। लेकिन मुझे लगता है कि ERROR: librtmp not found

मैं एनडीके के साथ expereienced नहीं हूँ और obviosly मुझे कुछ महत्वपूर्ण हिस्सा याद आ रही है, लेकिन मैं इसे अपने आप नहीं ढूंढ सकता।

उत्तर

10

यह चुनौतीपूर्ण है, लेकिन मुझे लगता है कि मैं एक समाधान है। कॉन्फ़िगर-टाइम पर समस्या यह है कि FFmpeg pkg-config प्रबंधन प्रणाली के माध्यम से उचित librtmp स्थापना का पता लगाना चाहता है।

मैं अपनी निर्देशिका ../rtmpdump द्वारा संदर्भित में सफलतापूर्वक पार संकलित librtmp है संभालने हूँ

। लाइन के लिए खोज FFmpeg कॉन्फ़िगर स्क्रिप्ट संपादित करें और:

enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket 

टिप्पणी है कि बाहर (लाइन के सामने में एक '#' डाल)। अब, कॉन्फ़िगर करें, केवल इन संशोधनों के साथ:

--extra-cflags="-I/full/path/to/rtmpdump" 

इससे यहां एक पूर्ण पथ प्राप्त करने में सहायता मिल सकती है। इसके अलावा, अंत में omit/librtmp/# अंतर्निहित निर्देश पहले से ही हेडर फ़ाइलों को librtmp/के साथ उपसर्ग करते हैं। अगला:

--extra-ldflags="-L/full/path/to/rtmpdump -lrtmp" 

फिर से, निरपेक्ष पथ, और के खिलाफ हैं क्योंकि हम कॉन्फ़िगर के माध्यम से उस तर्क पर टिप्पणी से जोड़ने के लिए पुस्तकालय निर्दिष्ट करें।

अब, कॉन्फ़िगर सफल होने चाहिए और पार संकलन भी खुश होना चाहिए। अंतिम ffmpeg बाइनरी प्रोटोकॉल के तहत RTMP मॉड्यूल के परिवार रिपोर्ट करना चाहिए:

ffmpeg -protocols 
[...] 
rtmp 
rtmpe 
rtmps 
rtmpt 
rtmpte 

नोट है कि मैं इस पर परीक्षण करने के लिए एक NDK देव वातावरण नहीं है। लेकिन मैंने librtmp संकलन (पैकेज के बिना pkg-config के माध्यम से स्थापित किए बिना) और फिर उपरोक्त चरणों को निष्पादित करके अपने डेस्कटॉप उबंटू सिस्टम पर परीक्षण किया।

+0

मूल्यवान जानकारी, क्या आप इसे देख सकते हैं: http://stackoverflow.com/questions/9605757/using-ffmpeg-with-android-ndk – iSun

+0

मैंने यह प्रश्न देखा लेकिन मुझे एंड्रॉइड के साथ अधिक अनुभव नहीं है एनडीके या सिगविन। –

+0

आह, वैसे भी धन्यवाद। – iSun