এইচটিএমএল 5 ভিডিও ট্যাগে উত্স পরিবর্তন করা


138

আমি একটি ভিডিও প্লেয়ার তৈরি করার চেষ্টা করছি, যা সর্বত্র কাজ করে। এতক্ষণ আমি সাথে যাব:

<video>
    <source src="video.mp4"></source>
    <source src="video.ogv"></source>
    <object data="flowplayer.swf" type="application/x-shockwave-flash">
        <param name="movie" value="flowplayer.swf" />
        <param name="flashvars" value='config={"clip":"video.mp4"}' />
    </object>
</video>

(বেশ কয়েকটি সাইটে যেমন দেখা গেছে, উদাহরণস্বরূপ সবার জন্য ভিডিও ) এখন পর্যন্ত তাই খুব ভাল।

তবে এখন আমি ভিডিও প্লেয়ারের সাথে এক ধরণের প্লেলিস্ট / মেনুও চাই, যা থেকে আমি অন্যান্য ভিডিও নির্বাচন করতে পারি। এগুলি এখনই আমার প্লেয়ারের মধ্যে খোলা উচিত। সুতরাং আমাকে "ভিডিওটির উত্সটি পরিবর্তনশীলভাবে পরিবর্তন করতে হবে" (যেমন dev.opera.com/articles/everything-you-need-to- ज्ञान-html5 - video - audio/ - বিভাগে দেখা যাচ্ছে "আসুন অন্য সিনেমাটি দেখুন) ") জাভাস্ক্রিপ্ট সহ। আসুন আপাতত ফ্ল্যাশপ্লেয়ার (এবং এভাবে আইই) অংশটি ভুলে যাই, আমি পরে এটির সাথে চেষ্টা করার চেষ্টা করব।

সুতরাং <source>ট্যাগগুলি পরিবর্তন করতে আমার জেএস এর মতো কিছু হওয়া উচিত:

<script>
function loadAnotherVideo() {
    var video = document.getElementsByTagName('video')[0];
    var sources = video.getElementsByTagName('source');
    sources[0].src = 'video2.mp4';
    sources[1].src = 'video2.ogv';
    video.load();
}
</script>

সমস্যাটি হচ্ছে, এটি সমস্ত ব্রাউজারে কাজ করে না। যেমন, ফায়ারফক্স = ও একটি দুর্দান্ত পৃষ্ঠা রয়েছে, যেখানে আপনি যে সমস্যাটি দেখছেন তা আপনি পর্যবেক্ষণ করতে পারেন: http://www.w3.org/2010/05/video/mediaevents.html

লোড () পদ্ধতিটি (ফায়ারফক্সে, মনে রাখবেন) ট্রিগার করার সাথে সাথেই ভিডিও প্লেয়ারটি মারা যায়।

এখন আমি জানতে পেরেছি যে আমি যখন একাধিক <source>ট্যাগ ব্যবহার করি না , তবে পরিবর্তে <video>ট্যাগের মধ্যে কেবল একটি src বৈশিষ্ট্য হয় , পুরো জিনিসটি ফায়ার ফক্সে কাজ করে।

সুতরাং আমার পরিকল্পনাটি হ'ল কেবলমাত্র সেই সিআরসি বৈশিষ্ট্যটি ব্যবহার করা এবং CanPlayType () ফাংশনটি ব্যবহার করে উপযুক্ত ফাইলটি নির্ধারণ করা ।

আমি কি এটি কোনওভাবে ভুল বা জটিল করে দিচ্ছি ??


এটা আমার কাছে ঠিক আছে। কীভাবে মার্কআপটিকে সরল করা "জটিল"?
ম্যাট বল

সমস্যাটি হ'ল আমি নিজেকে অনেকগুলি জাভাস্ক্রিপ্ট এবং মামলার পার্থক্য দেখে চলেছি। যদি আমি কিছু মিস করি, যেমন ফায়ারফক্সে একাধিক <source>ট্যাগ দিয়ে কাজ করার উপায় ছিল । তাহলে আমি মনে করি এটি আরও সহজ হবে
16 ই

আপনি কি কখনও88 এর ফ্ল্যাশ অংশটি সম্পর্কে জানতে পেরেছেন?
নীরজ

@ নীরাজ চূড়ান্ত সমাধানে প্লাগইন ভিডিও.জেএস জড়িত যা আই 8 এবং পছন্দগুলির জন্য ফ্যালব্যাক হিসাবে ফ্ল্যাশ প্লেয়ার ব্যবহার করে। উন্নত প্লাগইন যদিও আজ থাকতে পারে। প্লাগইন ব্যবহার করা লোড () পদ্ধতি সম্পর্কিত ফায়ারফক্স ইস্যুতে সহায়তা করে নি, যা এই পোস্টের প্রাথমিক প্রেরণা ছিল। আজ, এই সমস্যাটি দীর্ঘকাল স্থির হয়েছে, মনে হয়।
sashn

উত্তর:


169

আমি এই সমস্ত উত্তর ঘৃণা করেছি কারণ সেগুলি খুব সংক্ষিপ্ত বা অন্যান্য ফ্রেমওয়ার্কগুলিতে নির্ভর ছিল।

ক্রোমে কাজ করে এটির জন্য "এক" ভ্যানিলা জেএস উপায়, দয়া করে অন্যান্য ব্রাউজারগুলিতে পরীক্ষা করুন:

http://jsfiddle.net/mattdlockyer/5eCEu/2/

এইচটিএমএল:

<video id="video" width="320" height="240"></video>

জাতীয়:

var video = document.getElementById('video');
var source = document.createElement('source');

source.setAttribute('src', 'http://www.tools4movies.com/trailers/1012/Kill%20Bill%20Vol.3.mp4');

video.appendChild(source);
video.play();

setTimeout(function() {  
    video.pause();

    source.setAttribute('src', 'http://www.tools4movies.com/trailers/1012/Despicable%20Me%202.mp4'); 

    video.load();
    video.play();
}, 3000);

11
এটি আমার জন্য সবচেয়ে পরিষ্কার এবং সবচেয়ে দক্ষ ছিল।
ফিল ম্যাককার্টি

আমি এটি দিয়ে ক্রোমকে বল খেলতে পারি না। কেবলমাত্র আমি যদি ওয়েবম পাথটিতে ভিডিও এসসিআর বিশিষ্টতা সেট করি
অ্যাডাম হেই

2
প্লে পদ্ধতিটি কেবল কিছু ব্রাউজার নীতিগুলিতে কেবল কোনও ব্যবহারকারী ইশারা দ্বারা অনুমোদিত।
আনসন

আমি অন্য কারণে এই এত প্রশংসা! আমি এমন একটি ভিডিও পৃষ্ঠা সেট আপ করার চেষ্টা করেছি যা দর্শক একটি নির্বাচন না করা পর্যন্ত কোনও ভিডিও দেখায় না। আমি একটি খালি উত্স ট্যাগ সহ একটি ভিডিও ট্যাগ সেট আপ করতে পারতাম, তবে এটি জাভাস্ক্রিপ্ট ডিবাগ কনসোলটিতে সর্বদা একটি ব্যর্থতা তৈরি করবে। এখন আমি জানি যে ব্যবহারকারী কোনওটি না নির্বাচন করা পর্যন্ত আমি একটি 'উত্স' যুক্ত করা বন্ধ রাখতে পারি। এখন অবধি, আমি বুঝতে পারি না যে উত্স তৈরির জন্য আমার ক্রিয়েটইলিমেন্ট () ব্যবহার করা দরকার, এবং তারপরে ভিডিও উপাদানটিতে যুক্ত করতে অ্যাপেনডিল্ড () ব্যবহার করুন! পরবর্তী নির্বাচনের জন্য, উত্স উপাদান উপস্থিত রয়েছে কিনা তা আমি প্রথমে পরীক্ষা করে দেখতে পারি তাই আমি সেই পদক্ষেপটি পুনরায় না বলি।
র্যান্ডি

এই সমাধানটি দুর্দান্ত কাজ করে যদি প্যালোডের প্রতিক্রিয়া থেকে যে কোনও বিষয়বস্তু ধরণের সমস্যার মুখোমুখি হয় যদি নির্দিষ্ট করা সামগ্রী-প্রকারটি সঠিক হয় তবে তবুও অদ্ভুত আচরণ করে।
me দীদীপজাইন

63

মডার্নিজার আমার জন্য কবজির মতো কাজ করেছেন।

আমি যা করেছি তা হ'ল আমি ব্যবহার করিনি <source>। যেহেতু ভিডিওটি প্রথমবারের মতো লোড () ডাকা হয়েছিল তখনই এই বিভ্রান্তিকর জিনিসগুলি আপ হয়। পরিবর্তে আমি ভিডিও ট্যাগের মধ্যে উত্স বৈশিষ্ট্যটি ব্যবহার করে -> <video src="blabla.webm" />এবং ব্রাউজারটি কোন ফর্ম্যাটটি সমর্থন করে তা নির্ধারণ করতে মডারিনিজার ব্যবহার করে।

<script>
var v = new Array();

v[0] = [
        "videos/video1.webmvp8.webm",
        "videos/video1.theora.ogv",
        "videos/video1.mp4video.mp4"
        ];
v[1] = [
        "videos/video2.webmvp8.webm",
        "videos/video2.theora.ogv",
        "videos/video2.mp4video.mp4"
        ];
v[2] = [
        "videos/video3.webmvp8.webm",
        "videos/video3.theora.ogv",
        "videos/video3.mp4video.mp4"
        ];

function changeVid(n){
    var video = document.getElementById('video');

    if(Modernizr.video && Modernizr.video.webm) {
        video.setAttribute("src", v[n][0]);
    } else if(Modernizr.video && Modernizr.video.ogg) {
        video.setAttribute("src", v[n][1]);
    } else if(Modernizr.video && Modernizr.video.h264) {
        video.setAttribute("src", v[n][2]);
    }

    video.load();
}
</script>

আশা রাখি, এই আপনাকে সাহায্য করবে :)

আপনি ব্যবহার করতে না চান তাহলে Modernizr , আপনি সবসময় ব্যবহার করতে পারেন CanPlayType ()


আপনি কি দ্বিতীয়টির জন্য ভি [এন] [1] বোঝাতে চাইছেন না (মডার্নিজারভিডিও এবং অ্যান্ড মডার্নিজআরভিডিও.ওগ) যদি সত্য হয়?
bergie3000

1
অন্যান্য পদ্ধতি চেষ্টা করার পরে, আমি এই মডারিনিজার পদ্ধতির চেষ্টা করেছি এবং এটি ভালভাবে কাজ করেছে। ক্রোম (কোনও কারণে) আমার ক্ষেত্রে এমপি 4 লোড করবে না, তবে একটি ওয়েবম লোড করবে। ধন্যবাদ @ মারিয়াসএজেনহাগেন
অ্যাডাম হে

খুশি আমি @ অ্যাডাহে
মারিয়াস এঞ্জেন

32

আপনার মূল পরিকল্পনাটি আমার কাছে দুর্দান্ত লাগছে। ডাব্লু <source>3 স্পষ্ট নোট দ্বারা এখানে নির্দেশিত হিসাবে আপনি সম্ভবত উপাদানগুলি গতিশীলভাবে পরিচালনার সাথে সম্পর্কিত আরও ব্রাউজারের কুইর্কস দেখতে পাবেন :

উপাদানটি কোনও ভিডিও বা অডিও উপাদানটিতে ইতিমধ্যে isোকানো হলে কোনও উত্স উপাদান এবং এর বৈশিষ্ট্যকে গতিশীলভাবে সংশোধন করার কোনও প্রভাব পড়বে না। কী চলছে তা পরিবর্তনের জন্য, উপলভ্য সংস্থানগুলির মধ্যে থেকে বেছে নিতে ক্যানপ্লেটাইপ () পদ্ধতিটি সম্ভবত ব্যবহার করে সরাসরি মিডিয়া উপাদানটিতে src বৈশিষ্ট্যটি ব্যবহার করুন। সাধারণত, নথিকে বিশ্লেষণ করার পরে উত্স উপাদানগুলিতে ম্যানুয়ালি করা হ'ল একটি অযৌক্তিকভাবে [sic] জটিল পদ্ধতি।

http://dev.w3.org/html5/spec/Overview.html#the-source-element



10

নতুন ফাইল লোড করার জন্য একই ভিডিও প্লেয়ারটি পাওয়ার পরিবর্তে, কেন না পুরো <video>উপাদানটি মুছুন এবং পুনরায় তৈরি করুন। বেশিরভাগ ব্রাউজারগুলি এসআরসি-র সঠিক হলে এটি স্বয়ংক্রিয়ভাবে লোড হবে।

উদাহরণ ( প্রোটোটাইপ ব্যবহার করে ):

var vid = new Element('video', { 'autoplay': 'autoplay', 'controls': 'controls' });
var src = new Element('source', { 'src': 'video.ogg', 'type': 'video/ogg' });

vid.update(src);
src.insert({ before: new Element('source', { 'src': 'video.mp4', 'type': 'video/mp4' }) });

$('container_div').update(vid);

6
ভিডিও ট্যাগ সরানোর পরেও এটি সামগ্রিক ব্রাউজারটি উল্লেখযোগ্যভাবে ধীর করে দেয়, ব্রাউজারটি এখনও অপসারণ করা ভিডিওগুলি শেষ অবধি লোড করে।
মো মিষ্টি

কিছু ব্রাউজার (মোবাইল) আপনাকে ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই প্রোগ্রামিয়ালি মিডিয়া প্লে করতে দেয় না এবং যেহেতু ইতিমধ্যে আপনার উপাদানটির সাথে একটি ইন্টারঅ্যাকশন হয়েছে, একে নতুনের সাথে প্রতিস্থাপন করা সেই ক্ষমতাটি হারাবে।
সর্বোচ্চ ওয়াটারম্যান

6

কেবল একটি ডিভ রাখুন এবং সামগ্রী আপডেট করুন ...

<script>
function setvideo(src) {
    document.getElementById('div_video').innerHTML = '<video autoplay controls id="video_ctrl" style="height: 100px; width: 100px;"><source src="'+src+'" type="video/mp4"></video>';
    document.getElementById('video_ctrl').play();
}
</script>
<button onClick="setvideo('video1.mp4');">Video1</button>
<div id="div_video"> </div>

6

জল্পনা অনুযায়ী

উপাদানটি কোনও ভিডিও বা অডিও উপাদানটিতে ইতিমধ্যে isোকানো হলে কোনও উত্স উপাদান এবং এর বৈশিষ্ট্যকে গতিশীলভাবে সংশোধন করার কোনও প্রভাব পড়বে না। কী চলছে তা পরিবর্তনের জন্য, উপলভ্য সংস্থানগুলির মধ্যে থেকে বেছে নিতে ক্যানপ্লেটাইপ () পদ্ধতিটি সম্ভবত ব্যবহার করে সরাসরি মিডিয়া উপাদানটিতে src বৈশিষ্ট্যটি ব্যবহার করুন। সাধারণত, নথিকে বিশ্লেষণ করার পরে উত্স উপাদানগুলিতে ম্যানুয়ালি করা একটি অযৌক্তিকভাবে জটিল পদ্ধতি।

সুতরাং আপনি যা করার চেষ্টা করছেন তা দৃশ্যত কাজ করার কথা নয়।


@ গ্রেগ.কিন্ডেল আমি পোস্ট করার পরে আমি লক্ষ্য করেছি ... তবে যে কারণটি আমি প্রথমে লক্ষ্য করিনি তা হ'ল আপনার পরিচয়ের পাঠটি বিভ্রান্তিকর। আমরা কোন মূল পরিকল্পনার কথা বলছি? আসল মূল পরিকল্পনা যা কাজ করবে না বা আপডেট হওয়া মূল পরিকল্পনা যা আমরা দুজনেই পোস্ট করেছিলাম সেই গাইডেন্স অনুসরণ করে?
ইয়াহুর

যথেষ্ট ভাল, আমার উদ্ধৃত করা উচিত ছিল। আমি তার পরিকল্পনাকে "কেবলমাত্র সেই সিআরসি বৈশিষ্ট্যটি ব্যবহার এবং ক্যানপ্লেটাইপ () ফাংশনটি ব্যবহার করে উপযুক্ত ফাইলটি নির্ধারণ করতে" বোঝাতে চাইছিলাম) যা কাজ করে।
গ্রেগ.কিন্ডেল

4

ইয়াউর: আপনি যা অনুলিপি করেছেন এবং তা আটকে দিয়েছেন তা ভাল পরামর্শ, তবে এর অর্থ এই নয় যে এইচটিএমএল 5 ভিডিও উপাদানটির উত্স উপাদানটি মার্জিতভাবে পরিবর্তন করা অসম্ভব, এমনকি আই 9 (অথবা সেই বিষয়ে আইই 8 )ও রয়েছে। (এই সমাধানটি জড়িত না পুরো কোড উপাদানটি প্রতিস্থাপন করা, কারণ এটি খারাপ কোডিং অনুশীলন।

জাভাস্ক্রিপ্টের মাধ্যমে এইচটিএমএল 5 ভিডিও ট্যাগগুলিতে ভিডিও পরিবর্তন / স্যুইচ করার সম্পূর্ণ সমাধানটি এখানে পাওয়া যাবে এবং সমস্ত এইচটিএমএল 5 ব্রাউজারে (ফায়ারফক্স, ক্রোম, সাফারি, আই 9 ইত্যাদি) পরীক্ষা করা হয়।

এটি যদি সহায়তা করে বা আপনার যদি সমস্যা হয় তবে দয়া করে আমাকে জানান।


উজ্জ্বল! এই এটা করতে হয়। এমনকি আপনার jQuery প্রয়োজন হয় না; লিঙ্কযুক্ত কোডে, বিকল্প: mp4Vid.setAttribute ('src', "/pathTo/newVideo.mp4");
ভেলোজেট

3

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

var loadVideo = function(movieUrl) {
    console.log('loadVideo()');
    $videoLoading.show();
    var isReady = function (event) {
            console.log('video.isReady(event)', event.type);
            video.removeEventListener('canplay', isReady);
            video.removeEventListener('loadedmetadata', isReady);
            $videoLoading.hide();
            video.currentTime = 0;
            video.play();
        },
        whenPaused = function() {
            console.log('video.whenPaused()');
            video.removeEventListener('pause', whenPaused);
            video.addEventListener('canplay', isReady, false);
            video.addEventListener('loadedmetadata', isReady, false); // Sometimes Firefox don't trigger "canplay" event...
            video.src = movieUrl; // Change actual source
        };

    if (video.src && !video.paused) {
        video.addEventListener('pause', whenPaused, false);
        video.pause();
    }
    else whenPaused();
};

ফিক্স, অবশ্যই আমার জন্য কাজ করেছে, ফায়ারফক্স ভিডিও হ্যান্ডলারের সাথে সম্পত্তিও পরিচালনা করছে canplayনা canplaythroughএবং lodedmetadataযুক্ত করতে হবে (এবং পরে মুছে ফেলা হবে) :-(
লর্ড অফ ফ্রিক্স

3

এটি আমার সমাধান:

<video id="playVideo" width="680" height="400" controls="controls">
    <source id="sourceVideo" src="{{video.videoHigh}}" type="video/mp4">
</video>
    <br />
<button class="btn btn-warning" id="{{video.videoHigh}}" onclick="changeSource(this)">HD</button>
<button class="btn btn-warning" id="{{video.videoLow}}" onclick="changeSource(this)">Regular</button>

<script type="text/javascript">
    var getVideo = document.getElementById("playVideo");
    var getSource = document.getElementById("sourceVideo");
    function changeSource(vid) {
        var geturl = vid.id;
        getSource .setAttribute("src", geturl);
        getVideo .load()
        getVideo .play();
        getVideo .volume = 0.5;
    }
</script>

2

বিশেষ করে <source />ক্রোম 14.0.835.202 এ ট্যাগগুলি ব্যবহার করা আমার পক্ষে কঠিন প্রমাণিত হয়েছে, যদিও এটি ফায়ারফক্সে আমার পক্ষে ভাল কাজ করেছিল। (এটি আমার জ্ঞানের অভাব হতে পারে, তবে আমি ভেবেছিলাম যে কোনও বিকল্প সমাধান যেভাবেই কার্যকর হতে পারে)) সুতরাং, আমি কেবল একটি <video />ট্যাগ ব্যবহার করে সিডিআর অ্যাট্রিবিউটটি ঠিক ভিডিও ট্যাগে সেট করেছিলাম । canPlayVideo('<mime type>')নির্দিষ্ট ব্রাউজারটি ইনপুট ভিডিওটি খেলতে পারে কিনা তা নির্ধারণ করতে এই ফাংশনটি ব্যবহৃত হয়েছিল। নিম্নলিখিত ফায়ারফক্স এবং ক্রোমে কাজ করে।

ঘটনাচক্রে, ফায়ারফক্স এবং ক্রোম উভয়ই "ওজিজি" ফর্ম্যাটটি খেলছে, যদিও ক্রোম "ওয়েবম" এর প্রস্তাব দেয়। আমি "ওগ" ব্রাউজারের সমর্থনের জন্য চেকটি প্রথমে রেখেছি কারণ অন্যান্য পোস্টে উল্লেখ করা হয়েছে যে ফায়ারফক্স ওগ উত্সকে প্রথমে পছন্দ করে (যেমন <source src="..." type="video/ogg"/>)। তবে, ভিডিও ট্যাগে "এসসিআর" সেট করার সময় কোডটিতে অর্ডারটি আদৌ কোনও পার্থক্য করে কিনা তা আমি পরীক্ষিত (এবং অত্যন্ত সন্দেহের সাথে) করি নি।

এইচটিএমএল

<body onload="setupVideo();">
    <video id="media" controls="true" preload="auto" src="">
    </video>
</body>

জাভাস্ক্রিপ্ট

function setupVideo() {
       // You will probably get your video name differently
       var videoName = "http://video-js.zencoder.com/oceans-clip.mp4";

       // Get all of the uri's we support
       var indexOfExtension = videoName.lastIndexOf(".");
       //window.alert("found index of extension " + indexOfExtension);
       var extension = videoName.substr(indexOfExtension, videoName.length - indexOfExtension);
       //window.alert("extension is " + extension);
       var ogguri = encodeURI(videoName.replace(extension, ".ogv"));
       var webmuri = encodeURI(videoName.replace(extension, ".webm"));
       var mp4uri = encodeURI(videoName.replace(extension, ".mp4"));
       //window.alert(" URI is " + webmuri);


       // Get the video element
       var v = document.getElementById("media");
       window.alert(" media is " + v);

       // Test for support
       if (v.canPlayType("video/ogg")) {
            v.setAttribute("src", ogguri);
           //window.alert("can play ogg");
       }
       else if (v.canPlayType("video/webm")) {
           v.setAttribute("src", webmuri);
           //window.alert("can play webm");
       }
       else if (v.canPlayType("video/mp4")) {
           v.setAttribute("src", mp4uri);
           //window.alert("can play mp4");
       }
       else {
           window.alert("Can't play anything");
       }

      v.load();
      v.play();
  }

2

আমি এটি বেশ কিছুদিন ধরে গবেষণা করে চলেছি এবং আমি একই জিনিসটি করার চেষ্টা করছি, তাই আশা করি এটি অন্য কারও পক্ষে সহায়তা করবে। আমি ক্রসব্রোসেটেস্টিং ডট কম ব্যবহার করেছি এবং আক্ষরিকভাবে এটি মানুষের কাছে পরিচিত প্রতিটি ব্রাউজারে পরীক্ষা করে দেখছি। আমি যে সমাধানটি পেয়েছি তা বর্তমানে অপেরা, ক্রোম, ফায়ারফক্স 3.5+, আই 8 +, আইফোন 3 জি, আইফোন 4, আইফোন 4 এস, আইফোন 5, আইফোন 5 এস, আইপ্যাড 1+, অ্যান্ড্রয়েড 2.3+, উইন্ডোজ ফোন 8 এ কাজ করে।

পরিবর্তনশীল উত্স

ডায়নামিকভাবে ভিডিওটি পরিবর্তন করা খুব কঠিন এবং আপনি যদি কোনও ফ্ল্যাশ ফ্যালব্যাক চান তবে আপনাকে ভিডিওটি ডিওএম / পৃষ্ঠা থেকে সরিয়ে পুনরায় যুক্ত করতে হবে যাতে ফ্ল্যাশ আপডেট হবে কারণ ফ্ল্যাশ ফ্ল্যাশ ওয়ার্সে গতিশীল আপডেটগুলি স্বীকৃতি দেবে না। জাভাস্ক্রিপ্ট ব্যবহার করার জন্য এটি পরিবর্তনশীল পরিবর্তন করতে যাচ্ছেন থাকেন, তবে আমি পুরোপুরি সব সরান হবে <source>উপাদান এবং মাত্র ব্যবহার canPlayTypeসেট করতে srcজাভাস্ক্রিপ্ট এবং breakবা returnপ্রথম সমর্থিত ভিডিও টাইপ পরে এবং ভুলবেন না পরিবর্তনশীল ফ্ল্যাশ Var MP4 আপডেট করার জন্য। এছাড়াও, কিছু ব্রাউজার রেজিস্ট্রেশন করবে না যে আপনি কল না করা পর্যন্ত আপনি উত্স পরিবর্তন করেছেন video.load()। আমি বিশ্বাস করি আপনার সাথে যে সমস্যাটি .load()ছিল তা প্রথম কল করে সমাধান করা যেতে পারেvideo.pause()। ভিডিও উপাদানগুলি অপসারণ এবং যুক্ত করা ব্রাউজারকে ধীর করতে পারে কারণ এটি সরানো ভিডিওতে বাফারিং অব্যাহত রাখে, তবে এর একটি কার্যকারিতা রয়েছে

ক্রস ব্রাউজার সমর্থন

প্রকৃত ক্রস-ব্রাউজার অংশ হিসাবে, আমি ভিডিও ফর অ্যাওয়ার্ডেও এসেছি । আমি ইতিমধ্যে মিডিয়ালেটমেন্টজেএস ওয়ার্ডপ্রেস প্লাগইনটি চেষ্টা করেছি, যা সমাধান হওয়ার চেয়ে আরও অনেক সমস্যার কারণ হয়ে দাঁড়িয়েছে। আমার সন্দেহ হয় যে সমস্যাগুলি ওয়ার্ডপ্রেস প্লাগ-ইন করার কারণে হয়েছিল এবং প্রকৃত লাইব্রেরি নয়। আমি জাভাস্ক্রিপ্ট ছাড়াই কাজ করে এমন কিছু সন্ধান করার চেষ্টা করছি, যদি সম্ভব হয়। এখনও অবধি, আমি যা নিয়ে এসেছি তা হল এই সরল এইচটিএমএল:

<video width="300" height="150" controls="controls" poster="http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg" class="responsive">
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.ogv" type="video/ogg" />
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4" />
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.webm" type="video/webm" />
<source src="http://alex-watson.net/wp-content/uploads/2014/07/big_buck_bunny.iphone.mp4" type="video/mp4" />
<source src="http://alex-watson.net/wp-content/uploads/2014/07/big_buck_bunny.iphone3g.mp4" type="video/mp4" />
<object type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="561" height="297">
    <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
    <param name="allowFullScreen" value="true" />
    <param name="wmode" value="transparent" />
    <param name="flashVars" value="config={'playlist':['http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg',{'url':'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4','autoPlay':false}]}" />
    <img alt="No Video" src="http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg" width="561" height="297" title="No video playback capabilities, please download the video below" />
</object>
<strong>Download video:</strong>  <a href="video.mp4">MP4 format</a> | <a href="video.ogv">Ogg format</a> | <a href="video.webm">WebM format</a>
</video>

গুরুত্বপূর্ণ নোট :

  • ওগ প্রথম স্থান হিসাবে শেষ করা শেষ হয়েছে <source>কারণ ম্যাক ওএস ফায়ারফক্স ভিডিওটি প্লে করার চেষ্টা ছেড়ে দিলে যদি এটি এমপি 4 প্রথম হিসাবে দেখা হয় <source>
  • সঠিক MIME প্রকারসমূহ গুরুত্বপূর্ণ .ogv ফাইল হওয়া উচিত video/ogg, না video/ogv
  • আপনার যদি এইচডি ভিডিও থাকে তবে এইচডি মানের ওজিজি ফাইলগুলির জন্য আমি যে সেরা ট্রান্সকোডারটি পেয়েছি সেটি হ'ল ফায়ারফগ
  • .iphone.mp4ফাইল আইফোন 4+ জন্য যা হবে শুধুমাত্র ভিডিওগুলি সঙ্গে H.264 বেসলাইন 3 ভিডিও ও এএসি অডিও এমপিইজি -4 হয় খেলা এবং খেলার। আমি এই ফর্ম্যাটের জন্য সেরা ট্রান্সকোডারটি পেয়েছি হ্যান্ডব্রেক, আইফোন এবং আইপড টাচ প্রিসেট ব্যবহার করে আইফোন 4+ এ কাজ করবে, তবে আইফোন 3 জিএস পেতে আপনাকে আইপড প্রিসেটটি ব্যবহার করতে হবে যা আমি খুব কম রেজুলেশন রেখেছি video.iphone3g.mp4
  • ভবিষ্যতে আমরা মিডিয়া প্রশ্নের সাথে মোবাইল ডিভাইসগুলিকে টার্গেট mediaকরতে <source>উপাদানগুলিতে একটি বৈশিষ্ট্য ব্যবহার করতে সক্ষম হব , তবে এখনই পুরানো অ্যাপল এবং অ্যান্ড্রয়েড ডিভাইসগুলি এটি যথেষ্টভাবে সমর্থন করে না।

সম্পাদনা করুন :

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

এটি "আমি কীভাবে ভিডিও ক্রস ব্রাউজার খেলব?" এই প্রশ্নের উত্তর বলে মনে হচ্ছে? এবং এই প্রশ্নটি নয় যা "আমি কীভাবে আমার ভিডিওর জন্য প্লেলিস্ট সেট আপ করব?" is
কোয়ান্টিন

@ কুইন্টিন, এটি শুরু করার আগেই ছিল, কারণ গুগল এবং ওপির মাধ্যমে আমি এই প্রশ্নটি কীভাবে পেয়েছি বলেছিল যে তিনি সর্বত্র কাজ করে এমন একটি ভিডিও প্লেয়ার তৈরি করার চেষ্টা করছেন। আমি তার গতিশীল প্রশ্নের সমাধান করার জন্য উত্তর আপডেট করেছি।
অ্যালেক্স ডব্লিউ

2

আমার একটি অনুরূপ ওয়েব অ্যাপ্লিকেশন রয়েছে এবং আমি এ ধরণের সমস্যার মুখোমুখি হচ্ছি না। আমি যা করি তা হ'ল এরকম কিছু:

var sources = new Array();

sources[0] = /path/to/file.mp4
sources[1] = /path/to/another/file.ogg
etc..

তারপরে যখন আমি উত্সগুলি পরিবর্তন করতে চাই আমার এমন একটি ফাংশন রয়েছে যা এরকম কিছু করে:

this.loadTrack = function(track){
var mediaSource = document.getElementsByTagName('source')[0];
mediaSource.src = sources[track];

    var player = document.getElementsByTagName('video')[0];
    player.load();

}

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


1

ওজিজি উত্সকে শীর্ষে নিয়ে যাওয়ার চেষ্টা করুন। আমি লক্ষ্য করেছি যে ফায়ারফক্স কখনও কখনও বিভ্রান্ত হয়ে পড়ে এবং প্লেয়ারটিকে থামায় যখন ও খেলতে চায় ওজিজি প্রথম হয় না।

চেষ্টার গুরুত্ব.


1

জ্যাকুরিতে আপনি অন্য একটি উপায় করতে পারেন।

এইচটিএমএল

<video id="videoclip" controls="controls" poster="" title="Video title">
    <source id="mp4video" src="video/bigbunny.mp4" type="video/mp4"  />
</video>

<div class="list-item">
     <ul>
         <li class="item" data-video = "video/bigbunny.mp4"><a href="javascript:void(0)">Big Bunny.</a></li>
     </ul>
</div>

jQuery

$(".list-item").find(".item").on("click", function() {
        let videoData = $(this).data("video");
        let videoSource = $("#videoclip").find("#mp4video");
        videoSource.attr("src", videoData);
        let autoplayVideo = $("#videoclip").get(0);
        autoplayVideo.load();
        autoplayVideo.play();
    });

0

জাভাস্ক্রিপ্ট এবং jQuery ব্যবহার:

<script src="js/jquery.js"></script>
...
<video id="vid" width="1280" height="720" src="v/myvideo01.mp4" controls autoplay></video>
...
function chVid(vid) {
    $("#vid").attr("src",vid);
}
...
<div onclick="chVid('v/myvideo02.mp4')">See my video #2!</div>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.