मेरे पास पृष्ठ में एक HTML5 <audio>
टैग है, लेकिन मैं इसकी अवधि का समय कैसे जान सकता हूं?मैं html5 ऑडियो की अवधि का समय कैसे प्राप्त कर सकता हूं
<audio controls="">
<source src="p4.2.mp3">
</audio>
मेरे पास पृष्ठ में एक HTML5 <audio>
टैग है, लेकिन मैं इसकी अवधि का समय कैसे जान सकता हूं?मैं html5 ऑडियो की अवधि का समय कैसे प्राप्त कर सकता हूं
<audio controls="">
<source src="p4.2.mp3">
</audio>
कौन सा ब्राउज़र आप इस पर कोशिश कर रहे हैं? कुछ ब्राउज़रों पर duration
जैसा कि आपने उल्लेख किया है, NaN
लौटने पर काम नहीं करना चाहिए।
क्या आप यह भी सुनिश्चित कर रहे हैं कि ऑडियो फ़ाइल अवधि को पुनर्प्राप्त करने से पहले लोड हो गई है?
मुझे यह आलेख मिला, यह आसान हो सकता है।
http://neutroncreations.com/blog/building-a-custom-html5-audio-player-with-jquery/
बस audioElement.duration
डेव
नहीं, यह काम नहीं करता है, मैंने कोशिश की: 'var audio = $ ('# audio') [0]; console.log ('ऑडियो', audio.duration); 'लेकिन परिणाम' NaN' – hh54188
है यह सही अवधि (फ़ायरफ़ॉक्स में परीक्षण किया गया) देता है, लेकिन केवल लोडेडमेडडेटा घटना के बाद ही हुआ है। –
जब आप 'setTimeout (function() {...}, 10) का उपयोग करते हैं तो काम करने लगता है;' इसे तुरंत निष्पादित करने के बजाय। – AlexioVay
var au = document.createElement('audio');
au.addEventListener('loadedmetadata',function(){
au.setAttribute('data-time',au.duration);
},false);
केवल क्रोम आईई काम नहीं किया = / –
उपर्युक्त टिप्पणी में, यह उल्लेख किया गया था कि समाधान ईवेंट लोडेडमेडडेटा को ईवेंट इवेंट को बाध्य करना है। इस तरह मैंने यह किया -
audio.onloadedmetadata = function() {
alert(audio.duration);
};
मैंने ट्रैक अवधि प्राप्त करने के लिए "कैनप्लेथ्रू" ईवेंट का उपयोग किया। मेरे पास एक ऐसा मामला है जहां मेरे पास दो खिलाड़ी हैं, और मैं पहले खिलाड़ी को पूरा होने से पहले 2 सेकंड को दूसरे खिलाड़ी को रोकना चाहता हूं।
$('#' + _currentPlayerID).on("canplaythrough", function (e) {
var seconds = e.currentTarget.duration;
var trackmills = seconds * 1000;
var subTimeout = trackmills - 2000; //2 seconds before end
//console.log('seconds ' + seconds);
//console.log('trackmills ' + trackmills);
//console.log('subTimeout ' + subTimeout);
//Stop playing before the end of thet track
//clear this event in the Pause Event
_player2TimeoutEvent = setTimeout(function() { pausePlayer2(); }, subTimeout);
});
2018 समाधान:
आप undefined
या NaN
(नहीं एक नंबर) मिल जाएगा जब ऑडियो मेटाडाटा अभी तक लोड नहीं है। इसलिए कुछ लोगों ने यह सुनिश्चित करने के लिए onloadedmetadata
का उपयोग करने का सुझाव दिया है कि ऑडियो फ़ाइल का मेटाडेटा पहले लाया गया है। वेनिला जावास्क्रिप्ट -
:
var audio = $("#audio-1")[0];
audio.onloadedmetadata = function() {
alert(audio.duration);
};
अगर यह काम नहीं होगा इसके अलावा, ज्यादातर लोगों का उल्लेख नहीं था आप [0]
इस तरह के साथ ऑडियो DOM तत्व का पहला सूचकांक को लक्षित करना है उन कनेक्शन पर इस कोशिश, फिर भी इतना विश्वसनीय और निर्भर नहीं:
setTimeout(function() {
var audio = $("#audio-1")[0];
console.log("audio", audio.duration);
}, 100);
- JQuery:
$(document).ready(function() {
var audio = $("#audio-1")[0];
$("#audio-1").on("loadedmetadata", function() {
alert(audio.duration);
});
});
मैंने इसे हल किया है, मैं ईवेंट 'loadedmetadata' ईवेंट में एक ईवेंट हैंडल बांधता हूं, इस घटना में मुझे 'अवधि' प्रॉपर्टी – hh54188
मिल सकती है जो कि आपके उत्तर के आधार पर मेरा सुझाव होगा, लेकिन यह देखने में खुशी होगी कि आपने अनुमान लगाया है यह अपने लिए बाहर! –