以下は、h5 カスタム オーディオ (問題と解決策) についての簡単な説明です。内容がとても良かったので、参考としてシェアさせていただきます。
h5アクティビティはオーディオを挿入する必要がありますが、スタイルをカスタマイズする必要もあるので、自分で作成します
html
<!-- cur表示当前时间 max表示总时长 input表示进度条 --> <span class='cur'></span><input type="range" min=0 max=100 class='range' value=0><span class='max'></span>
css
/* 进度条 */ .range { width: 5.875rem; height: 0.15rem; background: #2386e4; border-radius: 0.25rem; -webkit-appearance: none !important; position: absolute; top: 3.55rem; left: 6rem; } /* 进度滑块 */ .range::-webkit-slider-thumb { width: 0.5rem; height: 0.5rem; background: #fff; border: 1px solid #f18900; cursor: pointer; border-radius: 0.25rem; -webkit-appearance: none !important; }
js
//将秒数转为00:00格式 function timeToStr(time) { var m = 0, s = 0, _m = '00', _s = '00'; time = Math.floor(time % 3600); m = Math.floor(time / 60); s = Math.floor(time % 60); _s = s < 10 ? '0' + s : s + ''; _m = m < 10 ? '0' + m : m + ''; return _m + ":" + _s; } //触发播放事件 $('.play').on('click',function(){ var audio=document.getElementById('ao'); audio.play(); setInterval(function(){ var t=parseInt(audio.currentTime); $(".range").attr({'max':751}); $('.max').html(timeToStr(751)); $(".range").val(t); $('.cur').text(timeToStr(t)); },1000); }); //监听滑块,可以拖动 $(".range").on('change',function(){ document.getElementById('ao').currentTime=this.value;$(".range").val(this.value); });
上記基本的には自己定義のオーディオ再生を実現できますが、プログレスバーをドラッグするときに問題が発生します。コンピュータでは問題ありませんが、携帯電話ではドラッグできますが、オーディオの合計時間は通常のものよりも数分短くなります。通常の再生では、進行状況バーをドラッグした後の再生が不正確になります。テストの結果、携帯電話で取得される継続時間(合計継続時間)がコンピュータで取得される継続時間と異なるため、スライド後の再生位置が不正確になることが判明しました。アップロードした音声は私が圧縮したため、携帯電話で受信した長さが通常のものと異なることがわかりました。したがって、オーディオを圧縮すると、(コンピュータではなく) 携帯電話でその長さが変化するため、今後は注意する必要があります。音声を圧縮して携帯電話で通常の長さを得る方法があれば、ぜひ教えてください(笑)。
上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
以上がh5カスタムオーディオの解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。