मैं एंड्रॉइड से फेसबुक पर लाइव स्ट्रीम करना चाहता हूं। मैं एफबी में स्ट्रीमिंग के लिए एक मौजूदा उदाहरण को अनुकूलित करने में सक्षम था।javaCV एंड्रॉइड, rtmp सर्वर पर स्ट्रीमिंग करते समय ओवरले पर अजीब रंग
पहला कदम कम या ज्यादा काम करता है (ऑडियो अभी भी एक समस्या है, लेकिन उसे दायरे में नहीं)। मैं एफबी को स्ट्रीम कर सकता हूं।
अब मैं एक पारदर्शी पीएनजी छवि के साथ स्ट्रीम ओवरले करना चाहता हूं।
मैं द्वारा शुरू पर एक FFmpegFrameFilter बनाने हूँ:
try{
filter = new FFmpegFrameFilter("movie="+path+"/image.png [logo];[in][logo]overlay=0:0:format=rgb [out]",imageWidth, imageHeight);
filter.start();
}catch (FrameFilter.Exception e){
Log.e(CLASS_LABEL,"Error while starting filter: "+e.getMessage());
e.printStackTrace();
}
और प्रत्येक फ्रेम पर मैं निम्नलिखित है:
filter.push(yuvImage);
Frame frame;
while ((frame = filter.pull()) != null) {
recorder.record(frame,avutil.AV_PIX_FMT_NV21);
}
समस्या
मैं पता नहीं है कि जो पिक्सेल प्रारूप मैं चाहिए है उपयोग। मेरे ओवरले छवि आरजीबी रंग (https://postimg.org/image/f1ri3vj43/)
ऊपर पिक्सेल प्रारूप मैं कुछ इस तरह मिल के साथहै: https://postimg.org/image/45ha64q9z/
मैं बहुत निराश के बाद से मैं पहले से ही कई पिक्सेल प्रारूपों की कोशिश की है। सभी एक अलग आउटपुट के साथ, कभी-कभी लोगो कई बार प्रकट होता है।
क्या यह पता लगाने का कोई तरीका है कि मुझे avutil.java संभावनाओं से कौन सा चयन करना चाहिए?
संपादित करें: आप पर https://github.com/y4nnick/android_streaming/blob/master/app/src/main/java/com/example/yannick/olay1/RecordActivity.java
संपादित पूरे कोड पा सकते हैं: मैं allready की कोशिश की निम्न स्वरूपों:
// AV_PIX_FMT_ARGB --> 4 at once, all black/white
// AV_PIX_FMT_0RGB --> 4 at once, all black/white
// AV_PIX_FMT_BGR8 --> 1 a bit to big, strange colors
// AV_PIX_FMT_BGR4_BYTE --> 1 a bit to big, stranger blue tint
// AV_PIX_FMT_YUVA422P_LIBAV --> error: Cannot initialize the conversion context.
// AV_PIX_FMT_FLAG_ALPHA --> error: Cannot initialize the conversion context.
// AV_PIX_FMT_FLAG_PLANAR --> error: Cannot initialize the conversion context.
// AV_PIX_FMT_RGB4 --> error: Cannot initialize the conversion context.
// AV_PIX_FMT_RGB32_1 --> 4 at a time, all black/white
// AV_PIX_FMT_0BGR --> 4 at a time, all black/white
// AV_PIX_FMT_YVYU422 --> 2 side by side, gruen, purple tint
// AV_PIX_FMT_YUVJ422P --> Fatal signal 11 (SIGSEGV) at 0x61f7xf000 (code=1), thread 18401 (e.yannick.olay1)
// AV_PIX_FMT_BAYER_BGGR8 --> 1 a bit to big, black/white
// AV_PIX_FMT_BAYER_GBRG8 --> 1 a bit to big, black/white
// AV_PIX_FMT_FLAG_RGB --> 2 a bit to big, black/white
// AV_PIX_FMT_RGB555LE --> 2 a bit to big, strange colors
// AV_PIX_FMT_RGB555BE --> 2 a bit to big, strange colors
// AV_PIX_FMT_RGB555 --> 2 a bit to big, strange colors
// AV_PIX_FMT_RGB4_BYTE --> 1 a bit to big, orange tint
// AV_PIX_FMT_RGBA64 --> 8 side by side, black/white
// AV_PIX_FMT_RGB24 --> 3 side by side, red tint
चूंकि आप फ़िल्टर पर "प्रारूप = आरजीबी [आउट]" निर्दिष्ट करते हैं, इसलिए आपके द्वारा खींचे गए फ्रेम शायद RGB24 होने जा रहे हैं, इसलिए मैं AV_PIX_FMT_NV21 के बजाय AV_PIX_FMT_RGB24 का प्रयास करूंगा। –
आपकी मदद के लिए धन्यवाद। दुर्भाग्यवश मुझे एक लाल रंग के साथ तीन बार एक तरफ लोगो मिलता है। https://postimg.org/image/he7rq0pev/। – schw4ndi
AV_PIX_FMT_BGR24 के साथ मुझे यह मिलता है: https://postimg.org/image/bf08l4egh/। रंग अभी है, लेकिन मुझे तीन लोगो मिलते हैं, और मूल कैमव काली काला/सफेद है। क्या यह हो सकता है कि मुझे फ्रेम पर चैनल नंबर, या FFmpegFrameRecorder पर पिक्सेल प्रारूप को बदलना है? – schw4ndi