জাভাস্ক্রিপ্ট দিয়ে অডিও খেলছেন?


691

আমি এইচটিএমএল 5 এবং জাভাস্ক্রিপ্ট দিয়ে একটি গেম তৈরি করছি।

আমি জাভাস্ক্রিপ্টের মাধ্যমে গেম অডিও কীভাবে খেলতে পারি?


9
যেহেতু এটি এইচটিএমএল 5, আছে <audio>। সেই উপাদানটিতে 'প্লে', 'বিরতি' ইত্যাদি ইত্যাদির জন্য উপযুক্ত জেএস হুক থাকবে ...
মার্ক বি বি

1
@ মার্ক ভাল আপনি কি এই হুকগুলি সম্পর্কে কিছু তথ্য সরবরাহ করতে পারেন?
রায়ান এস

উত্তর:


1330

আপনি যদি এইচটিএমএল উপাদানগুলির সাথে ঝামেলা করতে না চান:

var audio = new Audio('audio_file.mp3');
audio.play();

এটি HTMLAudioElementইন্টারফেস ব্যবহার করে , যা <audio>উপাদানটির মতো অডিও চালায়


আপনার যদি আরও কার্যকারিতা প্রয়োজন হয় তবে আমি howler.js গ্রন্থাগারটি ব্যবহার করেছি এবং এটি সহজ এবং দরকারী বলে মনে করেছি।


9
এই পদ্ধতিটি এমপি 3 বাজানোর জন্য কাজ করে তবে ওয়াভ ফাইলগুলির জন্য নয়। ওয়াভ ফাইলগুলি খেলার কোনও উপায় আছে?
ব্যবহারকারী 781486

12
@ user3293156 এই পদ্ধতিটি HTML5 এর মতো একই ফর্ম্যাটগুলিকে সমর্থন করে <audio>। উইকিপিডিয়ায় একটি অডিও বিন্যাসের সামঞ্জস্যতা টেবিল রয়েছেnew Audio()ইন্টারনেট এক্সপ্লোরার ব্যতীত সমস্ত ব্রাউজারে ডাব্লুএইভি ফাইল খেলতে পারে।
ররি ও'কেনে

283
@ ররিও'কেন যাতে সবাই মাইক্রোসফ্ট ছাড়া মাইক্রোসফ্টের অডিও ফর্ম্যাটটি খেলতে পারে? lol
ডেভ কাজিনো

10
দম্পতি সতর্কতা: (1) ফায়ারফক্স এমপি 3 খেলবে না । পরিবর্তে আপনার একটি ওগ ফাইল দরকার হবে। (২) আপনি https- র মাধ্যমে পরিবেশন করলে সাফারি / আইওএস বাজবে না । আপনার একটি বৈধ শংসাপত্র থাকা দরকার।
পিটার

9
লক্ষ করুন যে এপ্রিল 2018 এ Chrome এ অডিও ফাইলগুলি খেলবে না যদি না ব্যবহারকারী নথিতে কমপক্ষে একবার ক্লিক না করে। এখানে দেখুন ।
নীলস লিন্ডেমন

181

এটি সহজ, কেবল আপনার audioউপাদানটি পান এবং play()পদ্ধতিটি কল করুন :

document.getElementById('yourAudioTag').play();

এই উদাহরণটি দেখুন: http://www.storiesinflight.com/html5/audio.html

এই সাইটটি অন্যান্য শীতল জিনিস আপনি যেমন করতে পারেন তা uncovers load(), pause(), এবং কয়েক অন্যান্য বৈশিষ্ট্য audioউপাদান।


38

http://www.schillmania.com/projects/soundmanager2/

সাউন্ডম্যানেজার 2 এপিআই ব্যবহারের সহজ উপায় সরবরাহ করে যা IE 6+ সহ যে কোনও আধুনিক ব্রাউজারে শব্দটি চালানোর অনুমতি দেয়। যদি ব্রাউজার HTML5 সমর্থন করে না, তবে এটি ফ্ল্যাশ থেকে সহায়তা পায়। আপনি যদি এইচটিএমএল 5 এবং কোনও ফ্ল্যাশ চান না তবে তার জন্য একটি সেটিংস রয়েছে,preferFlash=false

এটি আইপ্যাড, আইফোন (আইওএস 4) এবং অন্যান্য এইচটিএমএল 5-সক্ষম ডিভাইস + ব্রাউজারগুলিতে 100% ফ্ল্যাশ-মুক্ত অডিও সমর্থন করে

ব্যবহার যতটা সহজ:

<script src="soundmanager2.js"></script>
<script>
    // where to find flash SWFs, if needed...
    soundManager.url = '/path/to/swf-files/';

    soundManager.onready(function() {
        soundManager.createSound({
            id: 'mySound',
            url: '/path/to/an.mp3'
        });

        // ...and play it
        soundManager.play('mySound');
    });
</script>

এখানে এটির একটি ডেমো কার্যকর রয়েছে: http://www.schillmania.com/projects/soundmanager2/demo/christmas-lights/


3
সাধারণত আপনি যখন এই ওয়েবসাইটে কোনও লিঙ্ক দেন তখন আপনি আপনার পোস্টের লিঙ্কটি থেকে কিছু তথ্য সরবরাহ করেন। এটি কেবল একটি সাধারণ লিঙ্ক পোস্ট করতে এবং "এটি ক্লিক করুন" বলে নিরুৎসাহিত করা হয়।
রায়ান এস

7
দুঃখিত, আমি অনুভব করেছি যে সাইটটি নিজেই ব্যাখ্যা করবে। আমি এটি তখন সম্পাদনা করব
লর্ডজারডেক

32

এটি বেশ পুরানো প্রশ্ন তবে আমি কিছু দরকারী তথ্য যুক্ত করতে চাই। টপিক স্টার্টার উল্লেখ করেছেন যে তিনি "making a game"। সুতরাং গেম বিকাশের জন্য অডিও দরকার এমন প্রত্যেকের জন্য কেবল একটি <audio>ট্যাগ বা একটির চেয়ে ভাল পছন্দ HTMLAudioElement। আমি মনে করি আপনার ওয়েব অডিও API এর ব্যবহার বিবেচনা করা উচিত :

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


22

Jquery সঙ্গে সহজ

// প্রিলোড ছাড়াই অডিও ট্যাগ সেট করুন

<audio class="my_audio" controls preload="none">
    <source src="audio/my_song.mp3" type="audio/mpeg">
    <source src="audio/my_song.ogg" type="audio/ogg">
</audio>

// লোড করতে jquery যোগ করুন

$(".my_audio").trigger('load');

// খেলা এবং থামার জন্য পদ্ধতি লিখুন

function play_audio(task) {
      if(task == 'play'){
           $(".my_audio").trigger('play');
      }
      if(task == 'stop'){
           $(".my_audio").trigger('pause');
           $(".my_audio").prop("currentTime",0);
      }
 }

// কীভাবে অডিও নিয়ন্ত্রণ করবেন তা স্থির করুন

<button onclick="play_audio('play')">PLAY</button>
<button onclick="play_audio('stop')">STOP</button>

সম্পাদনা

@ স্টোমির প্রশ্নের সমাধানের জন্য, প্লেলিস্ট খেলতে আপনি কীভাবে এই পদ্ধতির ব্যবহার করবেন :

আপনার গান একটি বস্তুতে সেট করুন:

playlist = {
    'song_1' : 'audio/splat.mp3',
    'song_2' : 'audio/saw.mp3',
    'song_3' : 'audio/marbles.mp3',
    'song_4' : 'audio/seagulls.mp3',
    'song_5' : 'audio/plane.mp3'
}

ট্রিগারটি ব্যবহার করুন এবং আগের মতো ফাংশনগুলি খেলুন:

$(".my_audio").trigger('load');

function play_audio(task) {
      if(task == 'play'){
           $(".my_audio").trigger('play');
      }
      if(task == 'stop'){
           $(".my_audio").trigger('pause');
           $(".my_audio").prop("currentTime",0);
      }
 }

প্রথম গানটি গতিশীলভাবে লোড করুন:

keys = Object.keys(playlist);
$('.my_audio').append("<source id='sound_src' src=" + playlist[keys[0]] + " type='audio/mpeg'>");

প্লেলিস্টের পরবর্তী গানে অডিও উত্সটি পুনরায় সেট করুন, যখন বর্তমান গানটি শেষ হবে:

count = 0; 
$('.my_audio').on('ended', function() { 
   count++;  
   $("#sound_src").attr("src", playlist[keys[count]])[0];
   $(".my_audio").trigger('load');
   play_audio('play');
});

ক্রিয়াকলাপে এই কোডটির উদাহরণের জন্য এখানে দেখুন ।


এটি একই সাথে ক্লাস = "আমার_উডিও" সহ সমস্ত অডিও ট্যাগ খেলছে। আপনি কীভাবে একের পর এক খেলবেন (প্লে তালিকায়)?
stomy

স্টস্টওভারফ্লোতে এটি আপনার নিজের প্রশ্ন হিসাবে আপনি কি পোস্ট করেছেন? আপনি যদি আমাকে জানাবেন। আমি আপনাকে এটি সাহায্য করতে পারে। অন্যথায়, আমি এটি অফার করব - আপনি (আপনি একটি গান বাজানো শুরু করার পরে) endedইভেন্টটি নির্গত হওয়ার জন্য শুনতে পারেন এবং তালিকার পরবর্তী অডিও ফাইলটি শুরু করতে পারেন (সম্ভবত আপনি ডোম, জেএস মেমরি ইত্যাদিতে ট্র্যাক রাখছেন ইত্যাদি) )। বিকাশকারী.মোজিলা.আর.ইন-
ইউএস

@ স্টোমী ক্রমাগত গান বাজায় এমন প্লেলিস্ট তৈরি করতে আমার উত্তরে সম্পাদনা পরীক্ষা করে দেখুন।
সাইবারনেটিক

15

একটি লুকানো অডিও যুক্ত করুন এবং এটি প্লে করুন।

function playSound(url){
  var audio = document.createElement('audio');
  audio.style.display = "none";
  audio.src = url;
  audio.autoplay = true;
  audio.onended = function(){
    audio.remove() //Remove when played.
  };
  document.body.appendChild(audio);
}

14

আপনি যদি নিম্নলিখিত ত্রুটিটি পেয়ে থাকেন:

অপ্রকাশিত (প্রতিশ্রুতিতে) ডমেক্সেক্সেপশন: প্লে () ব্যর্থ হয়েছে কারণ ব্যবহারকারী প্রথমে নথির সাথে ইন্টারঅ্যাক্ট করেননি।

এর অর্থ ব্যবহারকারীকে প্রথমে ওয়েবসাইটের সাথে যোগাযোগ করতে হবে (ত্রুটির বার্তাটি যেমন বলে) এই ক্ষেত্রে আপনাকে clickবা অন্য কোনও ইভেন্ট শ্রোতা ব্যবহার করা দরকার , যাতে ব্যবহারকারী আপনার ওয়েবসাইটের সাথে যোগাযোগ করতে পারে।

আপনি যদি অডিওটি স্বয়ংক্রিয়ভাবে লোড করতে চান এবং ব্যবহারকারীটি নথির সাথে প্রথমে ইন্টারঅ্যাক্ট করতে না চান, আপনি ব্যবহার করতে পারেন setTimeout

setTimeout(() => {
  document.getElementById('mySound').play();
}, 500)
<audio id="mySound" src="sound.mp3"></audio>

শব্দটি 0.5 সেকেন্ডের পরে শুরু হবে।


এটি কাজ করে না। ক্রোমে নেই। আর না.
আরেফিও



5

নীচের মতো কোনও HTML ট্যাগ থাকলে খুব সহজ সমাধান:

<audio id="myAudio" src="some_audio.mp3"></audio>

এটি খেলতে কেবল জাভাস্ক্রিপ্ট ব্যবহার করুন:

document.getElementById('myAudio').play();

আপনি কি বোঝাতে চেয়েছিলেন </a> বা </audio>। উৎসুক.
কুপার 4

আমি <অডিও> ট্যাগ ব্যবহার করেছি।
বেন স্টাফোর্ড 21

1
বেন, আপনার উদাহরণটিতে একটি ভুল সমাপ্তি ট্যাগ ছিল যার কারণে @ কুপার এই প্রশ্নটি করেছিলেন। আমি উত্তরটি সঠিক সমাপনী ট্যাগ সহ সম্পাদনা করেছি।
Sgnl

4

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

আমি নাটকটি বাস্তবায়নের জন্য সুপারিশ করব যা ব্যবহারকারীরা ইন্টারঅ্যাকশন ইভেন্টটি ব্যবহার করছেন তার সবচেয়ে নিকটতম।

var soundPlayer = {
  audio: null,
  muted: false,
  playing: false,
  _ppromis: null,
  puse: function () {
      this.audio.pause();
  },
  play: function (file) {
      if (this.muted) {
          return false;
      }
      if (!this.audio && this.playing === false) {
          this.audio = new Audio(file);
          this._ppromis = this.audio.play();
          this.playing = true;

          if (this._ppromis !== undefined) {
              this._ppromis.then(function () {
                  soundPlayer.playing = false;
              });
          }

      } else if (!this.playing) {

          this.playing = true;
          this.audio.src = file;
          this._ppromis = soundPlayer.audio.play();
          this._ppromis.then(function () {
              soundPlayer.playing = false;
          });
      }
  }
};

এবং নিম্নলিখিত হিসাবে এটি বাস্তবায়ন:

<button onclick="soundPlayer.play('https://interactive-examples.mdn.mozilla.net/media/examples/t-rex-roar.mp3');">Play</button>

আমি যদি জেএস থেকে অটোপ্লে ট্রিগার করি তবে একটি সাফারিতে কাজ করছেন না।
maki10

1
@ maki10 হাই, আমি এটি সাফারি ডেস্কটপ সংস্করণ 12.0.3 (14606.4.5) এ পরীক্ষা করেছি এবং এটি এখানে কাজ করে: jsfiddle.net/xf5zyv4q/5
talsibony

এছাড়াও সাফারি মোবাইল আইওএস 12
টালসিবনি

আমি আমার সমস্যার জন্য লিঙ্কটি আপডেট করেছি jsfiddle.net/6431mfb5 । আমার জন্য, অটোপ্লে সাফারিতে আরও প্রথমবারের কাজ করে এবং আরও আরও নতুন।
maki10

@ maki10 কারণ আপনি এটি ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই কল করেছেন, ক্লিক করুন স্পর্শের মতো ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই অটোপ্লে কাজ করবে না, সর্বশেষ লাইনটি সরিয়ে ফেলবে: সাউন্ডপ্লেয়ার.প্লে (' ইন্টারেক্টিভ- উদাহরণসমূহ mmdn.mozilla.net/media/exferences/… );
talsibony

3

আমি একটি শব্দ বাজানোর জন্য এই পদ্ধতিটি ব্যবহার করেছি ...

var audioElement;
if(!audioElement) {
  audioElement = document.createElement('audio');
  audioElement.innerHTML = '<source src="' + '/audio/sound.mp3'+ '" type="audio/mpeg" />'
}
audioElement.play();

2

আপনি যখনই পৃষ্ঠাটি খোলার সময় অডিওটি চালাতে চান তবে এটি করুন।

<script>
  function playMusic(){
  music.play();
  }
  </script>
<html>
  <audio id="music" loop src="sounds/music.wav" autoplay> </audio>
  </html>

এবং যখনই আপনার গেম কোডের প্রয়োজন হয় তখন এই প্লে মিউজিক () কল করুন।


2

সুরক্ষার প্রয়োজনীয়তার সাথে যে কোনও ব্যবহারকারীকে অডিওর অনুমোদিত হওয়ার জন্য একটি ওয়েবপৃষ্ঠার সাথে ইন্টারঅ্যাক্ট করতে হবে এটি এই সাইট সহ অনেক নিবন্ধ পড়ার উপর ভিত্তি করে আমি এইভাবেই করব I

  1. আপনার এইচটিএমএলে প্রয়োজনীয় অডিও ফাইলগুলি সংজ্ঞায়িত করুন
  2. একটি অনক্লিক সহ একটি শুরু গেম বোতাম আছে Have
  3. যখন বোতামটি ক্লিক করা হবে তখন আপনি শুরুতে খেলতে চান এমন সমস্ত অডিও ফাইল বার করে প্লে করুন এবং বিরতি দিন

যেহেতু সমস্ত অডিও ফাইল একই অনক্লিকটিতে "প্লে" হয়ে গেছে, আপনি এখন কোনও বিধিনিষেধ ছাড়াই খেলায় খেলতে পারবেন

নোট করুন যে সর্বোত্তম সংযোগের জন্য ওয়াভ ফাইলগুলি ব্যবহার করবেন না, এমএস তাদের সমর্থন করে না

এমপি 3 এবং অগ ব্যবহার করুন, যা সমস্ত ডিভাইসকে কভার করে

উদাহরণ:

<audio id="welcome">
    <source src="URL/welcome.ogg" type="audio/ogg">
    <source src="URL/welcome.mp3" type="audio/mpeg">
    Your browser does not support the audio element.
</audio>

গেমের সমস্ত অডিওর জন্য প্রয়োজনীয় হিসাবে পুনরাবৃত্তি করুন

তারপর:

document.getElementById("welcome").play();
document.getElementById("welcome").pause();

গেমটি শুরু হওয়ার পরে আপনি যে অডিও শুনতে চান তা থামান না বাদে প্রয়োজন অনুসারে পুনরাবৃত্তি করুন


1

শব্দ বাজানোর জন্য আপনি ওয়েব অডিও এপিআই ব্যবহার করতে পারেন। সেখানে বেশ কিছু অডিও লাইব্রেরি সেখানে howler.js, soundjs ইত্যাদি আপনি পুরানো ব্রাউজার সম্পর্কে চিন্তা করবেন না, তাহলে আপনার কাছে চেক করতে পারেন http://musquitojs.com/ । এটি শব্দ তৈরি এবং প্লে করার জন্য একটি সহজ এপিআই সরবরাহ করে।

উদাহরণস্বরূপ, একটি শব্দ বাজানো আপনার যা করতে হবে তা হ'ল।

import $buzz from 'musquito';

const buzz = $buzz('gunfire.mp3');

buzz.play();

গ্রন্থাগারটি অডিও স্প্রিটকে সমর্থন করে।


0

এটি এমন কিছু জেএস আমি নিয়ে এসেছি এমন একটি শিশুর এআই প্রকল্প নিয়ে কাজ করছি। আমি আশা করি এটি আপনাকে সহায়তা করতে সক্ষম হবে।

<!DOCTYPE html>
<html>
<head>
    <title>
        js prompt AI
    </title>
    <style>
        #button {
            border: 1px solid black;
            border-radius: 10px;
            font-size: 22px;
            height:65px;
            width:100px;
            text-align: center;
            line-height: 65px;
        }
    </style>
</head>
<body>

    <audio id="myAudio" src="./how_are_you.m4a"></audio>
    <p>To Interact with the AI please click the button</p>
    <div id=button>click</div>

    <script>

       var button = document.getElementById("button");
       function playBack() {
           button.addEventListener("click", function (){
            var talk = prompt("If you wish for the AI to respond type hi");
            var myAudio = document.getElementById("myAudio");

            if(talk === "hi") {
                    myAudio.play();
            }
           }) ;



       }
       playBack();
   </script>
</body>

</html>

0

কেবল এটি ব্যবহার করুন:

<video controls="" autoplay="" name="media"><source src="Sound URL Here" type="audio/mpeg" /></video>

বা, এটিকে আরও সহজ করে তুলতে:

<video controls="" autoplay="" name="media">

<source src="Sound URL Here" type="audio/mpeg" />

</video>

নমুনা:

<video controls="" autoplay="" name="media">
<source src="https://interactive-examples.mdn.mozilla.net/media/examples/t-rex-roar.mp3" type="audio/mpeg">
</video>

এটি ক্রোম than৩ ব্যতীত অন্য ব্রাউজারগুলিতে কাজ করে তবে কোনও আইডিইএ রাখবেন না !!


এটি একটি সহজ, পরিষ্কার উত্তর। সব jquery নেই !!
আইএমএসমার্ট

0

অডিও বাজানো নিয়ে আমার কিছু সমস্যা ছিল, বিশেষত যেহেতু ক্রোম আপডেট করেছে যে ব্যবহারকারীকে প্রথমে নথির সাথে ইন্টারঅ্যাক্ট করতে হবে।

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

আমার ক্ষেত্রে আমি খেলোয়াড়ের সাথে যোগাযোগের সাথে সাথেই আমার গেমটি বিজিএম খেলতে চেয়েছিলাম, তাই আমি নিজেকে একটি সাধারণ শ্রোতা বানিয়েছি যা ওয়েব পৃষ্ঠায় ইন্টারেক্ট হচ্ছে কিনা তা যাচাই করে চলে।

const stopAttempt = setInterval(() => {
    const audio = new Audio('your_audio_url_or_file_name.mp3');
    const playPromise = audio.play();
    if (playPromise) {
      playPromise.then(() => {
        clearInterval(stopAttempt)
      }).catch(e=>{
        console.log('' + e);
      })
    }
}, 100 )

0

আপনি ত্রুটিটি দেখলে 2020 সালের জন্য এখানে একটি সমাধান রয়েছে:

[ত্রুটি] আনহানডেল প্রতিশ্রুতি প্রত্যাখ্যান: নয় সমর্থিত ত্রুটি: ক্রিয়াকলাপটি সমর্থিত নয়। (বেনামে ফাংশন) প্রত্যাখ্যানপ্রসেস প্লে (বেনামে ফাংশন) (টেস্টাওডিয়ো এইচটিএমএল: 96) প্রেরণ (jquery-3.4.1.min.js: 2: 42577)


<div onclick="new Audio('/assets/test.mp3').play()">aaa</div>

স্লিট হয়ে ভাববেন না ও ও এটি একটি পুরাতন স্কুল oclick, আমি কেবল পৃষ্ঠাটি আমার jQuery বা আমার বাহ্যিক জাভাস্ক্রিপ্ট ফাইলটিতে সরিয়ে দেব। নাঃ। এটি একটি হতে হবে onclick

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