1

THE SETUP 私のウェブサイトにSoundmanager2をインストールしました。MP3 へのリンクは自動的に生成されます。

問題 360-ui を使用すると、このデモ (http://www.schillmania.com/projects/soundmanager2/demo/360-player/) の左上のようにアニメーションが再生されるため、サウンドの読み込みが表示されますが、再生されず、秒カウンターも動きません。

プレーヤーのロード方法

<link rel="stylesheet" type="text/css" href="/css/360player.css" />
<link rel="stylesheet" type="text/css" href="/css/flashblock.css" />
<!-- special IE-only canvas fix -->
<!--[if IE]><script type="text/javascript" src="/js/excanvas.compiled.js"></script><![endif]-->

<!-- Apache-licensed animation library -->
<script type="text/javascript" src="/js/berniecode-animator.js"></script>
<script type="text/javascript" src="/js/soundmanager2.js"></script>
<script type="text/javascript" src="/js/360player.js"></script>

<script type="text/javascript">
soundManager.setup({
  // path to directory containing SM2 SWF
  url: '/swf/',  debugMode: true 
});
</script>

デバッグコード

-- SoundManager 2: HTML5 support tests (/^(probably|maybe)$/i): mp3: true (preferring flash), mp4: true (preferring flash), ogg: true, wav: true -- soundmanager2.js:1155
-- SoundManager 2 V2.97a.20121104 (AS3/Flash 9) + HTML5 audio, high performance mode, normal polling, wmode: transparent, flashBlock mode -- soundmanager2.js:1155
soundManager::createMovie(): Trying to load /swf/soundmanager2_flash9_debug.swf soundmanager2.js:1155
soundManager::initMovie(): Waiting for ExternalInterface call from Flash... soundmanager2.js:1157
soundManager::externalInterfaceOK() (~2 ms) soundmanager2.js:1157
soundManager::init() soundmanager2.js:1157
soundManager: Attempting JS to Flash call... soundmanager2.js:1157
(Flash): SM2 SWF V2.97a.20121104 (AS3/Flash 9) soundmanager2.js:1157
Flash security sandbox type: remote soundmanager2.js:1157
(Flash): JS to/from Flash OK soundmanager2.js:1157
(Flash): Enabling polling, 10 ms interval soundmanager2.js:1157
-- SoundManager 2 loaded (OK) -- soundmanager2.js:1155
soundManager: Firing 1 onready() item soundmanager2.js:1157
threeSixtyPlayer.init() soundmanager2.js:1157
threeSixtyPlayer.init(): Found 5 relevant items. soundmanager2.js:1157
handleClick() soundmanager2.js:1157
soundManager.createSound(): ui360Sound0 (http://clients.activemd.net/external/x.mp3) soundmanager2.js:1155
SMSound() merged options: {
 id: ui360Sound0, 
 url: http://clients.activemd.net/external/x.mp3, 
 onplay: { pl.removeClass(this._360data.oUIBox,this._360data.className); t... }, 
 onstop: { pl.removeClass(this._360data.oUIBox,this._360data.className); t... }, 
 onpause: { pl.removeClass(this._360data.oUIBox,this._360data.className); t... }, 
 onresume: { pl.removeClass(this._360data.oUIBox,this._360data.className); t... }, 
 onfinish: { var nextLink; pl.removeClass(this._360data.oUIBox,this._360data... }, 
 onbufferchange: { if (this.isBuffering) { pl.addClass(this._360data.oUIBox,pl.css... }, 
 whileloading: { if (this.paused) { self.updatePlaying.apply(this); } }... }, 
 whileplaying: { self.updatePlaying.apply(this); this._360data.fps++; }... }, 
 useWaveformData: 0, 
 useEQData: 0, 
 usePeakData: 0, 
 autoLoad: false, 
 autoPlay: false, 
 loops: 1, 
 multiShot: true, 
 multiShotEvents: false, 
 pan: 0, 
 stream: true, 
 usePolicyFile: false, 
 volume: 100, 
 isMovieStar: false, 
 bufferTime: 3
} soundmanager2.js:1157
(Flash): SoundManager2_SMSound_AS3: Got duration: 0, autoPlay: false soundmanager2.js:1157
SMSound.play(): Attempting to load "ui360Sound0" soundmanager2.js:1155
SMSound.load(): http://clients.activemd.net/external/x.mp3 soundmanager2.js:1155
SMSound.play(): "ui360Sound0" is starting to play soundmanager2.js:1157
fanOut: ui360Sound0: http://clients.activemd.net/external/x.mp3 soundmanager2.js:1157
SMSound._onbufferchange(): 1 soundmanager2.js:1157
(Flash): start (ui360Sound0): 0 soundmanager2.js:1157
SMSound._onbufferchange(): 0 soundmanager2.js:1157
SMSound._onload(): "ui360Sound0" loaded.

奇妙な点 リンクは私の Chrome 開発者ビューでクリック可能であり、MP3 は別のブラウザ ウィンドウで開き、通常どおり再生されます (Chrome で MP3 リンクをクリックしたときのデフォルト)。

考えられる 1 つの理論 サウンドはロードされていますが、「よし、自分で演奏してください」とは言われていません。

別の可能性のある理論 jQuery はどういうわけかそれを台無しにしています。

サウンドが読み込まれているのに再生されない理由を特定する方法を教えてください。

ありがとう。リック

4

1 に答える 1

1

自動再生で同様の問題が発生しました。Safari では問題なく動作しましたが、Chrome と FireFox、IE では再生中とトレースしただけで、何も起こりませんでした。私は最終的にsetTimeoutを入れてsoundManager.play(id)を呼び出しましたが、私はそれをしなければならなかったことを楽しんでいません。

他の開発者が click() イベントを使用して曲をトリガーしていることに気付きました。クリックイベントを介してルーティングするマイナーラグが再生に必要かどうかはわかりませんが、タイムアウトを200に設定してみましたが、500ミリ秒以上がチケットのようです。また、自動再生が失敗したときに、バッファリング イベントまたは読み込みイベントが再生をトリガーできる可能性があると考えました。また、soundManager.createSound(e) の直後に soundManager.play(id) を呼び出しても、私の側ではまったく何もしません。

onbufferchange イベントを追加し、playState を確認しました。再生されていない場合は、再生するように言いました。これにより、setTimeout の必要がなくなりました。

于 2013-02-27T15:58:19.490 に答える