2012-01-19 10 views
7

मैं एक पीसी पर एंड्रॉइड मीडियाप्लेयर क्लास (दोनों स्थानीय नेटवर्क पर) पर वीएलसी से लाइव आरटीएसपी धारा खेल रहा हूं। यह बिना किसी त्रुटि के सुचारू रूप से खेलता है - समस्या यह है कि स्क्रीन पर डीकोडेड वीडियो लाइव के पीछे 5 और 7 सेकंड के बीच होता है।लाइव आरटीएसपी स्ट्रीम का डीकोड: एंड्रॉइड पर मीडियाप्लेयर का उपयोग करके बड़े वीडियो अंतराल

डीबग और कॉलबैक से मैं देख सकता हूं कि शुरू करने के बाद डिवाइस < 1s पर लाइव डेटा आ रहा है। यह तब होता है जब मीडियाप्लेयर क्लास काम करना शुरू कर देता है कि स्ट्रीम किस आयाम के साथ है। इत्यादि के बाद स्क्रीन पर वीडियो दिखाए जाने से पहले (5 और 7 सेकंड के बीच), onPrepared() कहलाता है जहां मैं mMediaPlayer.start() कहता हूं। ऐसा लगता है कि यह start() वीडियो चलाता है जिसे मूल रूप से तैयार चरण की शुरुआत से पकड़ा गया था।

मैंने seekTo(5000)start() से पहले और बाद में कोशिश की है, लेकिन इसका अंतराल पर कोई प्रभाव नहीं पड़ता है।

लाइव वीडियो कॉलिंग ऐप के लिए, कुछ सेकंड की सेटअप देरी पूरी तरह से ठीक है, लेकिन एक बार वीडियो प्रस्तुत होने के बाद यह अंतराल मेरे लिए अपरिहार्य है।

public void surfaceCreated(SurfaceHolder holder) 
{ 
    mMediaPlayer = new MediaPlayer(); 
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mMediaPlayer.setOnInfoListener(this); 
    mMediaPlayer.setOnErrorListener(this); 
    mMediaPlayer.setOnVideoSizeChangedListener(this); 
    mMediaPlayer.setOnBufferingUpdateListener(this); 
    mMediaPlayer.setDataSource("rtsp://192.168.1.4:5544/test"); 
    mMediaPlayer.setDisplay(holder); 
    mMediaPlayer.setScreenOnWhilePlaying(true); 
    mMediaPlayer.setOnPreparedListener(this); 
    mMediaPlayer.setOnCompletionListener(this); 
    mMediaPlayer.prepareAsync(); 
    ... 
public void onPrepared(MediaPlayer mediaplayer) 
{ 
    mMediaPlayer.start(); 
... 

कोई विचार मैं इस अंतराल को कैसे कम कर सकता हूं, या मीडियाप्लेयर द्वारा बफर किए गए कार्यों के अंत की तलाश कर सकता हूं? मेरा डिवाइस 3.1 है, minSdkVersion 2.2 है।

संपादित करें:

मैं AwesomePlayer.cpp (2s और 8s) में कुछ उच्च और कम पानी के निशान मिल गया है। एक त्वरित परीक्षण के रूप में मैंने इन 0.1s और 1s बनाने के लिए libstagefright.so हैक किया है। हालांकि इसने देरी पर कोई प्रभाव नहीं डाला। मेरी खोज जारी है ...

+0

एनडीके वी 7 के पास अब निम्न स्तर ओपनमैक्स एएल मीडिया स्ट्रीमिंग एपीआई तक पहुंच है जब स्रोत 4.0 पर एमपीईजी टीएस है। क्या किसी के पास इसका कोई अनुभव है - क्या वीडियो अंतराल में सुधार हुआ है? मैंने दस्तावेज़ों में पढ़ा: "ओपनमैक्स एएल एक देशी सी एपीआई है, ओपनमैक्स एएल को कॉल करने वाले गैर-दलविक एप्लिकेशन थ्रेड्स में कोई दल्विक से संबंधित ओवरहेड नहीं है जैसे कि कचरा संग्रहण विराम। हालांकि, ओपनमैक्स के उपयोग के लिए कोई अतिरिक्त प्रदर्शन लाभ नहीं है इसके अलावा अन्य। विशेष रूप से, ओपनमैक्स एएल के उपयोग से कम ऑडियो या वीडियो विलंबता नहीं होती है ... "ओह ठीक है। – barkside

+0

क्या आप इस पर किए गए प्रगति पर एक अद्यतन देना चाहते हैं? – Matt

+2

अंत में मैंने जीस्ट्रीमर का उपयोग किया (उनके पास अब एंड्रॉइड सपोर्ट है) जो आपको इन चीजों पर बहुत अधिक नियंत्रण देता है ... मुझे पता है कि एक पुलिस आउट ऑफ बिट ... – barkside

उत्तर

0

मुझे एक ही समस्या का सामना करना पड़ रहा है। कोडेक में जो खिलाया जाता है उसे नियंत्रित करने के लिए इसे पूरी तरह से प्लेबैक क्लास को फिर से लिखना एक तरीका है। लेकिन यह आखिरी (और दर्दनाक) रिसॉर्ट होगा। मैं अभी भी चारों ओर देख रहा हूं ... sigh ...

0

मुझे बिल्कुल वही समस्या है। सबसे पहले मैंने सोचा कि यह काम नहीं कर रहा था, लेकिन मैं अपना ऐप खोला और कुछ देर बाद वीडियो दिखाया।

मजाकिया बात यह है कि अगर मैं इस वीडियो का उपयोग करता हूं [1] जिसे मैंने वीडियो व्यू पर एक ट्यूटोरियल में पाया, तो अंतराल बहुत छोटा है। मैं यह देखने के लिए डार्विन स्ट्रीमिंग सर्वर स्थापित करने पर विचार कर रहा हूं कि यह वीएलसी या किसी अन्य मुद्दे का मामला है या नहीं।

[1] RTSP: //v5.cache1.c.youtube.com/CjYLENy73wIaLQnhycnrJQ8qmRMYESARFEIJbXYtZ29vZ2xlSARSBXdhdGNoYPj_hYjnq6uUTQw=/0/0/0/video.3gp

+0

एओएसपी स्रोत में मैं डेटा के साथ-साथ समय के लिए उच्च/निम्न जल-चिह्न देख सकता हूं, इसलिए यदि स्ट्रीम डेटा दर बड़ी है, तो बफर जल्द ही उच्च डेटा वॉटर-मार्क से भरा जाएगा, इसलिए अनुभवी बनाना कम अंतराल। आपके द्वारा उल्लेखित इस वीडियो में यह उच्च डेटा दर हो सकती है। – barkside

1

मैं एक अंतिम जवाब नहीं दे रही है हूँ, लेकिन मुझे साझा करते हैं अब मेरे पास क्या है।

  • मेरे पास जीस्ट्रीमर से जीस्ट्रीमर तक पीसी पर स्थानीय रूप से खेलने वाला 5 वां विलंबता मुद्दा था। पाइपलाइनों को निम्नलिखित पैरामीटर जोड़ने के बाद विलंबता चली गई:
    • क्लाइंट पर - latency=0rtspsrc का पैरामीटर;
    • सर्वर पर - v4l2src का is-live=1 पैरामीटर और, ज़ाहिर है, x264enc tune=zerolatency

नियंत्रित करने के लिए MediaPlayer/VideoView के कोडेक/मीडिया स्रोत पैरामीटर कोई तरीका नहीं है। जहां तक ​​मैं देखता हूं, मीडियाकोडेक एपीआई में भी नहीं।

इसलिए हमें GStreamer या ffmpeg के लिए जाना होगा।

उपयोग और पोर्टेबिलिटी की आसानी अभी तक पता चला जा सकता है।