1. ホーム
  2. Web制作
  3. html5

HTML5ページオーディオの自動再生実装

2022-01-21 14:38:03

最近、携帯電話でページを読み込むと、自動的に音楽リソースを再生する要件がありました。通常であれば解決するのですが、様々な携帯電話で安定したパフォーマンスを確保するのはなかなか大変というか、一工夫が必要です。自動再生オーディオ・オブジェクトを作成するには、一般的に3つの方法があります。

1つ目は、ページ内にaudioタグを作成し、autoplay='autoplay'などの関連属性を書き、通常であればここにリソースアドレスを書いた後、ページにアクセスし自動再生できるようにします。しかし、音楽リソースのアドレスが不確かで、JSで変更する必要がある場合は、JSで実現する必要がある。

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
import matplotlib.pyplot as plt
import sys

import seaborn as sns
#import lightgbm as lgb
import gc
import time
from sklearn import preprocessing
from sklearn.metrics import precision_recall_curve
from sklearn.model_selection import train_test_split
from sklearn.feature_selection import VarianceThreshold

# Read the data content and save it in dataframe format
data = pd.read_csv('. /input/atec_anti_fraud_train.csv')
data['id'] = data['id'].astype('category')
data['label'] = data['label'].astype('category')
# print(data.describe())
# View the distribution of the labels of the sample
fre = data.label.value_counts()
# Observe the amount of data per day
date_info = data['date'].value_counts().sort_index()

 2つ目:1つ目と似ていますが、すべてのタグがJSで作成され、後からページに挿入される点が異なります。

data.describe()
               date f1 ...           f296 f297
count 9.947310e+05 994731.000000 ...  787146.000000 787146.000000
mean 2.017098e+07 0.726283 ...      41.244121 99.023500
std 6.011735e+01 0.651947 ...      45.658241 96.240483
min 2.017090e+07 0.000000 ...       1.000000 1.000000
25% 2.017092e+07 0.000000 ...       2.000000 2.000000
50% 2.017101e+07 1.000000 ...      17.000000 115.000000
75% 2.017102e+07 1.000000 ...      79.000000 194.000000
max 2.017110e+07 2.000000 ...     280.000000 299.000000

[8 rows x 298 columns]
----------------------------------------
fre = data.label.value_counts()
 0 977884
 1 12122
-1 4725
Name: label, dtype: int64
----------------------------------------
# print(date_info) # Average daily record size, from 20170905 to 20171105
# 20171029 15592
# 20171030 16455
# 20171031 16596
# 20171101 17884
# 20171102 17305
# 20171103 16406
# 20171104 15639
# 20171105 15891
# Name: date, Length: 62, dtype: int64


3つ目は、domタグを使わずに、JSでオーディオオブジェクトを作成し、JSでオーディオオブジェクトの各種apiを制御して、リソース置換と自動再生を実現する方法です。

# Check for missing features, the first column is the number of missing features, the second column is the number of feature columns
data_lost=data.isnull().sum().reset_index(name='count')
data_lost.columns=['feature','counts']
lost_count=data_lost.groupby('counts',as_index='False').count()

  追伸:上記3つのメソッドの デモ

また、オーディオリソースの実装、再生、制御を行うサードパーティライブラリを追加します。  音楽を再生するだけでなく、他の機能を持ったサードパーティライブラリをいくつかまとめてみたので、自分で勉強してみてください。

print(data.isnull().sum())
id 0
label 0
date 0
f1 0
f2 0
f3 0
f4 0
f5 199825
f6 0
...
f288 207585
f289 207585
f290 207585
f291 207585
f292 207585
(f293 207585)
f294 207585
f295 207585
f296 207585
f297 207585
Length: 300, dtype: int64

#print(lost_count)
# feature
# counts
# 0 21
# 919 48
# 136021 69
# 199825 1 # Only one feature with missing number 199825
# 207448 6
# 207585 24
# 211036 4
# 270515 78
# 273904 14
# 286285 5
# 341661 14
# 341887 4
# 925781 12


上記の方法を使った結果、Iphoneの携帯電話では( 詳細 と一部のアンドロイド端末では、まだ自動再生ができません。

彼の再生条件は、再生するためにユーザーのアクション操作が必要であることです。

そこで、どのような方法でユーザーアクションをシミュレートできるかを考える必要があります。ウェブでは、自動再生を実現するために、次のような方法があります。

  • Imageオブジェクトを作成し、Imageが読み込まれたかどうかを聞き、読み込まれた場合は音声再生を行い、自動再生効果を実現する。
  • 同様の方法として、iframeを作成し、リソースは直接オーディオリソースのアドレスとし、iframeが読み込まれると自動的に再生されるようにする。
  • touchstartイベントをドキュメントまたはボディにバインドし、ユーザーがページに触れるとすぐに再生できるようにします。

上記の最初の2つは、私がテストしたところ、基本的に何の効果もないことがわかりました。3つ目に関しては、確かに問題ありませんが、この方法は正確には自動再生とみなされません。なぜなら、ユーザーがページに触れないだけで、再生されないことも十分にあり得るからです。しかし、いくつかのシナリオでは、それは、シナリオを区別するために、この動作します。

で、考えたのが、スマホの動きやモーションを聞いて、音声を再生できないか、ということです。と思い、devicemotionを聴いてみました( 詳細 )のイベントで、やはりうまくいかないことがわかり、もうメチャクチャで死にたくなりました。

最終的には、ページ上にaudioタグを作成し、JSでオーディオ関連のプロパティや値を調整し、オーディオ再生を制御する方法を採用しました。

この方法では、基本的に、異なる携帯電話で同じ効果を表示することができますが、私がテストした5Sの携帯電話のうちの1つでは、うまくいきませんでした。他の5Sでも同じですが、問題はなく、今まで具体的な理由は、私が黙って彼を無視したことを発見していない。

それが自動的に再生することはできません場合でも、少なくともタッチページで再生することができるように、自動的に再生することはできませんし、タッチ開始イベントをバインドするの経験を改善するために、それは経験の改善です。

追記:2015年5月31日 iOS WeChat オーディオ・ビデオ自動再生

上記はHTML5ページの音声自動再生問題の詳細です。HTML5音声自動再生に関するより詳しい情報はBinaryDevelopの他の関連記事に注目してください