HTML5 जांचें कि क्या ऑडियो चल रहा है?


जवाबों:


152
function isPlaying(audelem) { return !audelem.paused; }

ऑडियो टैग में एक pausedसंपत्ति है। यदि इसे रोका नहीं गया, तो यह खेल रहा है।


चूंकि कोई रोक नहीं है यह एक साफ समाधान है।
टोड मूसा

11
अगर यह कभी शुरू नहीं हुआ तो क्या होगा?
हैरी

30
यह गलत उत्तर है। मैं सिर्फ इसके साथ काम कर रहा हूं, और पहली शुरुआत से पहले। गलत है।
टॉमस

2
@ क्या आपके पास एक jsbin है? मैंने यह कोशिश की और यह सही उत्तर की तरह लगता है।
हैरी

3
@ हेरी मैं इसके साथ और अधिक खेल रहा था और ऐसा लगता है कि कुछ ब्राउज़रों में यह काम करता है और यह कुछ नहीं। मुझे लगता है कि यह कार्यान्वयन पर निर्भर करता है। लेकिन क्रोम और फ़ायरफ़ॉक्स के लिए सभी नवीनतम अपडेट के लिए यह काम करने लगता है, इसलिए यह उत्तर नवीनतम कार्यान्वयन के लिए सही है।
टॉमस

44

आप अवधि की जांच कर सकते हैं। यह खेल रहा है यदि अवधि 0 सेकंड से अधिक है और इसे रोका नहीं गया है।

var myAudio = document.getElementById('myAudioID');

if (myAudio.duration > 0 && !myAudio.paused) {

    //Its playing...do your job

} else {

    //Not playing...maybe paused, stopped or never played.

}

2
निजी तौर पर मेरा मानना ​​है कि !myAudio.paused||!myAudio.currentTimeयह बेहतर काम करेगा।
14:93 पर m93a

11
@ m93a क्या आपका मतलब नहीं है !myAudio.paused || myAudio.currentTime?
मैल्कमऑनियन

5
हां, होना चाहिए !myAudio.paused || myAudio.currentTime। कभी जवाब नहीं दिया यह लगता है ...
पार्थ

16

जब तक मैं वास्तव में इस धागे के लिए देर हो चुकी हूं, मैं इस कार्यान्वयन का उपयोग यह पता लगाने के लिए करता हूं कि क्या ध्वनि बज रही है:

service.currentAudio = new Audio();

var isPlaying = function () {
    return service.currentAudio
        && service.currentAudio.currentTime > 0
        && !service.currentAudio.paused
        && !service.currentAudio.ended
        && service.currentAudio.readyState > 2;
}

मुझे लगता है कि ऑडियो तत्व पर अधिकांश झंडे तैयार राज्य से अलग हैं जो आप यहां पढ़ सकते हैं: MDN HTMLMediaElement.readyState


लॉक होने पर iOS द्वारा ऑडियो को स्वचालित रूप से रोकने पर काम नहीं करता है।
शुक्शिन.विवान

13
document.getElementsByTagName('audio').addEventListener('playing',function() { myfunction(); },false); 

चाल चलनी चाहिए।


5

इस फ़ंक्शन का प्रयास करें! यदि स्थिति की शुरुआत या समाप्ति होती है तो ऑडियो प्लेइंग निष्पादित नहीं की जाएगी

function togglePause() {
     if (myAudio.paused && myAudio.currentTime > 0 && !myAudio.ended) {
         myAudio.play();
     } else {
         myAudio.pause();
     }
}

0

यह जांचने के लिए कि क्या ऑडियो वास्तव में बजना शुरू हो रहा है, खासकर यदि आपके पास एक स्ट्रीम है, तो जांचने की आवश्यकता audio.played.lengthहै 1। यह केवल 1 होगा यदि ऑडियो वास्तव में ध्वनि शुरू होता है। नहीं तो होगा 0। यह एक हैक की तरह है, लेकिन यह अभी भी सफारी और क्रोम जैसे मोबाइल ब्राउज़रों में काम करता है।


0

तुम onplay घटना का उपयोग कर सकते हैं।

var audio = document.querySelector('audio');
audio.onplay = function() { /* do something */};

या

var audio = document.querySelector('audio');
audio.addEventListener('play', function() { /* do something */ };

0

इस jquery कोड withe टो बटन प्ले और स्टॉप का उपयोग कर रहा हूँ, प्ले बटन एक प्ले और पॉज़ बटन है

const help_p = new Audio("audio/help.mp3");//Set Help Audio Name
$('#help_play').click(function() {//pause-Play
if (help_p.paused == false) {
  help_p.pause();//pause if playing
} else {
  help_p.play();//Play If Pausing
}
});

$('#help_stop').click(function() {//Stop Button
  help_p.pause();//pause
  help_p.currentTime = 0; //Set Time 0
});

-2

जबकि वहाँ कोई विधि नहीं है नामकरण या कुछ इसी तरह, इसे पूरा करने के लिए कुछ तरीके हैं।

इस विधि को प्रगति का% प्राप्त होता है जैसा कि ऑडियो चला रहा है:

function getPercentProg() {
    var myVideo = document.getElementById('myVideo');
    var endBuf = myVideo.buffered.end(0);
    var soFar = parseInt((endBuf / myVideo.duration) * 100);
    document.getElementById('loadStatus').innerHTML =  soFar + '%';
}

यदि प्रतिशत 0 से अधिक है और 100 से कम है, तो यह खेल रहा है, अन्यथा इसे रोक दिया जाता है।


अगर मैं ऑडियो को बीच में रोक देता हूं तो क्या होगा?
नीट द डार्क एबसोल

1
तब यह खेल नहीं होगा।
टॉड मूसा

यह केवल बफ़र्ड राशि का पता लगाता है। यदि, उदाहरण के लिए, ऑडियो तत्व ने बफ़रिंग डेटा शुरू कर दिया है, लेकिन खेलना शुरू नहीं किया है क्योंकि इसमें पर्याप्त डेटा नहीं है, तो यह विधि अभी भी सही हो सकती है। या अगर तत्व ने प्लेबैक के भाग के रूप में डेटा को बफर कर दिया है और बाद में रोक दिया गया है।
धसानन

getElementsByTagName ('myVideo')? मुझे लगता है कि यह GetElementById ('myVideo') होना चाहिए
लकी सोनी

2
एम ... क्यों minusing? एक महान विचार, हालांकि बुरा लिखा। अगर रियलटाइम ऑडियो (WebRTC) .paused के साथ खेल रहा है तो आप कैसे जांच सकते हैं? केवल बफर जाँच के साथ। योग्य माइनसिंग नहीं। मैं उत्थान करता हूं।
igorpavlov 10
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.