ভিডিওভিউ সহ বিজোড় ভিডিও লুপ


88

আমার কাছে নিম্নলিখিত কোডটি একটি কাঁচা সংস্থান হিসাবে গ্রহণ করতে হবে, ভিডিওটি শুরু করুন এবং এটি লুপ করুন তবে ক্লিপটি শেষ হওয়ার পরে ক্লিপটি আবার শুরু করার সাথে সাথে আমার এখন পর্যন্ত নির্বিঘ্নে লুপ করা দরকার a একটি বিভক্ত দ্বিতীয় জন্য ঝাঁকুনি, যা আমি আমার অ্যাপ্লিকেশন জন্য সত্যিই থাকতে পারে।

public class Example extends Activity {
    VideoView vv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        vv = (VideoView)findViewById(R.id.VideoView01);

        //Video Loop
        vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                vv.start(); //need to make transition seamless.
            }
        });

        Uri uri = Uri.parse("android.resource://com.example/"
                + R.raw.video);

        vv.setVideoURI(uri);
        vv.requestFocus();    
        vv.start();
    }
}

ক্লিপটি মাত্র 22 সেকেন্ড দীর্ঘ, তবে নির্বিঘ্নে তৈরি করা হয়েছিল যাতে দেরি না করে কাজ করা সম্ভব।

উত্তর:


230

এটি চেষ্টা করুন এটি 100% কাজ করবে


VideoView videoView;<--- এটিকে পদ্ধতির বাইরে লিখুন বা অন্যথায় এটি চূড়ান্ত পরিবর্তনশীল হিসাবে ঘোষণা করুন।

videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
    }
});

প্রতিটি লুপের জন্য তবুও খণ্ডন করা, এটি আমার মতো পদ্ধতিটির মতো মসৃণ নয়
পেনসিলচেক

@ পেনসিল চেক এটি স্থানীয় ভিডিওর জন্য সহজ লুপিং, যদি আপনি এটি ইউআরএল এবং বাফারিংয়ের জন্য ব্যবহার করতে চান তবে আপনাকে অন্যান্য যুক্তি প্রয়োগ করতে হবে।
প্রভিনভিনডিয়া

সবার কাছে এফওয়াইআই, এটি স্থানীয় ভিডিওর জন্যও কাজ করে না। আপনি যদি ধ্রুব শব্দ সহ কোনও ভিডিও প্লে করেন তবে লুপগুলির মধ্যে বিরতি শুনতে পাবেন।
এডিসন

4
@ প্রভিনডোডিয়া এটি এমপি 4 ভিডিও (ফাইল) এর জন্য কাজ করে তবে এম 3 ইউ 8 এর সাথে কাজ করে না। M3u8 ফাইল সম্পর্কে আপনার কোনও ধারণা থাকলে দয়া করে আমাকে একটি সমাধান প্রস্তাব দিন।
মারোতি

4
@ প্রভিনডোডিয়া তথ্যের জন্য ধন্যবাদ হ্যাঁ, আমি স্ট্রিম ভিডিও ব্যবহার করেছি। আমি মিডিয়াপ্লেয়ারে vv.start () ব্যবহার করেছি loঅনকম্পলশনলিস্টনার () লুপিংয়ের পরিবর্তে।
মারোতি

7

এটি কয়েক বছর পরে সহায়তা করে কিনা তা নিশ্চিত নই, তবে আমি ব্যবহার করেছি

vv.start();
vv.setOnCompletionListener ( new MediaPlayer.OnCompletionListener() {

 @Override 
  public void onCompletion(MediaPlayer mediaPlayer) {   
    vv.start();
  }
});

এবং এটি একটি বিজোড় লুপ আছে


5

বিরতি অন্তর্নিহিত MediaPlayerএর বাফারগুলি রিফ্রেশ করার জন্য । এটি কতক্ষণ নেবে তা বিভিন্ন কারণের উপর নির্ভর করবে, যার অনেকগুলি আপনার নিয়ন্ত্রণের বাইরে (যেমন, সিপিইউর গতি, বোর্ডে ফ্ল্যাশ স্টোরেজের গতি)।

আপনি যেটি নিয়ন্ত্রণ করতে পারেন তা হ'ল আপনার ভিডিওটি উত্স থেকে বেরিয়ে আসা এবং ফাইল সিস্টেমে প্রবেশ করা। সংস্থানগুলি APK এ সংরক্ষণ করা হয়, এটি একটি জিপ ফাইল, সুতরাং এইভাবে ভিডিওটি বের করা সম্ভবত অতিরিক্ত সময় নেয়।

আপনার কাছ থেকে স্যুইচ করতে হবে VideoViewএবং SurfaceViewদুটি দিয়ে একটি ব্যবহার করতে হবে MediaPlayers, তাদের মধ্যে বিকল্পটি তৈরি করতে হবে - পরেরটি প্রস্তুত হওয়ার সময় একজন খেলছে, সুতরাং যখন প্লেয়ারটি শেষ হবে আপনি নতুন প্লেয়ারটিতে যেতে পারেন। আমি এটি চেষ্টা করে দেখিনি, এবং তাই আমি জানি না কী কী কী হবে। তবে, আমি জানি যে এই কৌশলটি অডিও প্লেব্যাকের জন্য প্রায়শই একটি ক্লিপ থেকে অন্য ক্লিপটিতে স্থানান্তরিত হয়।


যদি আমি সঠিকভাবে মনে রাখি, মিডিয়াপ্লেয়ারগুলি প্রস্তুত হওয়ার সময় পৃষ্ঠতল ভিউগুলিতে ধরে রাখে, সুতরাং অন্য মিডিয়াপ্লেয়ার ব্যবহার করার সময় আপনি এটি প্রস্তুত করতে পারবেন না।
এডিসন


1

অল্প দেরীতে, তবে কোনও কারণ আপনি নিম্নলিখিতটি ব্যবহার করতে পারবেন না?

MediaPlayer.setLooping(true);

4
এটি অনেক দিন আগে ছিল, তবে তার সাথে আমার মনে হয় যখন ভিডিওটির আশেপাশে লুপটি ডাকা হয়েছিল তখন সেখানে একটি লক্ষণীয় বিরতি দেওয়া হয়েছিল।
স্যামরউলে

1

আপনি যদি কোটলিন ব্যবহার করছেন

 videoView.setOnPreparedListener(object : MediaPlayer.OnPreparedListener {
                override fun onPrepared(mp: MediaPlayer?) {
                    //Start Playback
                    videoView.start()
                    //Loop Video
                    mp!!.isLooping = true;
                    Log.i(TAG, "Video Started");
                }
            });

অ্যারো এক্সপ্রেশন সংক্ষিপ্ত ফর্ম ব্যবহার করে

videoView.setOnPreparedListener { mp ->
            //Start Playback
            videoView.start()
            //Loop Video
            mp!!.isLooping = true;
            Log.i(TAG, "Video Started");
        };

0

এর উত্তরটি হ'ল ভিডিওটি থেকে অডিও সরিয়ে এটিকে এমন কোনও .oggফাইলে রূপান্তর করা যা অবিচ্ছিন্নভাবে লুপ করা যায় এবং তারপরে অডিও ছাড়াই ভিডিওটি লুপ করে নেওয়া এবং এটি কাজ করে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.