精华内容
参与话题
问答
  • html5中audio的详细使用

    万次阅读 2015-03-23 21:26:43
    html5的audio功能上已经非常强大,回放,跳转,缓冲等以前只能用flash才能实现的功能,html5的audio都能轻松搞定 最近的一个项目使用到了这个功能,把我使用的情况写下来,供大家参考 audio 相关的 api 备用...

    html5的audio功能上已经非常强大,回放,跳转,缓冲等以前只能用flash才能实现的功能,html5的audio都能轻松搞定

    最近的一个项目使用到了这个功能,把我使用的情况写下来,供大家参考, 因为我需要的功能很简单,所以做的不复杂,如果要使用更多的功能,可以参考下面的api,能实现很多高大上的功能

    audio 相关的 api

    <audio src=”音频的地址”>备用(当浏览器不支持audio时显示的内容)</audio>

    控制函数功能说明

    • load()   加载音频、视频软件,通常不必调用,除非是动态生成的元素,用来在播放前预加载
    • play()    加载并播放音频、视频文件,除非文件已经暂停在其他位置,否则默认重头开始播放
    • pause() 暂停处于播放状态的音频、视频文件

    audio 的只读媒体特性有:

    只读属性属性说明

    • duration   获取媒体文件的播放时长,以s为单位,如果无法获取,则为NaN
    • paused     如果媒体文件被暂停,则返回true,否则返回false
    • ended       如果媒体文件播放完毕,则返回true
    • startTime  返回起始播放时间,一般是0.0,除非是缓冲过的媒体文件,并一部分内容已经不在缓冲区
    • error          在发生了错误后返回的错误代码
    • currentSrc  以字符串形式返回正在播放或已加载的文件,对应于浏览器在source元素中选择的文件

     

    audio 可脚本控制的特性值:

    • autoplay       自动播放已经加载的的媒体文件,或查询是否已设置为autoplay
    • loop              将媒体文件设置为循环播放,或查询是否已设置为loop
    • currentTime 以s为单位返回从开始播放到目前所花的时间,也可设置currentTime的值来跳转到特定位置
    • controls        显示或者隐藏用户控制界面
    • volume         在0.0到1.0间设置音量值,或查询当前音量值
    • muted           设置是否静音
    • autobuffer     媒体文件播放前是否进行缓冲加载,如果设置了autoplay,则忽略此特性

    对于这些属性,主流的浏览器都支持。可是别以为就没有了兼容性,在音频播放流中,有两个阵营。firefox 和 opera 支持 ogg 音频,safari 和 ie 支持 mp3.幸好Google的chrome都支持。


    <div id="audioControl">
    	<div class="play">
    		<span id="play">Play</span>
    	</div>
    </div>
    
    <audio id="media" src="test.mp3"></audio>

    var media = $('#media')[0];
    var audioTimer = null;
    
    //绑定播放暂停控制
    $('.play').bind('click', function() {
        playAudio();
    }); 
    
    //播放暂停切换
    function playAudio() {
        if(media.paused) {
            play();
        } else {
            pause();
        }
    }
    
    //播放
    function play() {
        media.play();
        $('#play').html('Pause');
    }
    
    //暂停
    function pause() {
        media.pause();
        $('#play').html('Play');
    }
    
    
    


    
    


    展开全文
  • audio 一些基本概念

    千次阅读 2018-06-11 15:21:00
    Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等,主要包括如下部分:Audio Application Framework:音频应用框架 AudioTrack:负责回放...


    Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等,主要包括如下部分:

    • Audio Application Framework:音频应用框架 
      • AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类
      • AudioRecord:负责录音数据的采集,属 Android 应用框架 API 类
      • AudioSystem: 负责音频事务的综合管理,属 Android 应用框架 API 类
    • Audio Native Framework:音频本地框架 
      • AudioTrack:负责回放数据的输出,属 Android 本地框架 API 类
      • AudioRecord:负责录音数据的采集,属 Android 本地框架 API 类
      • AudioSystem: 负责音频事务的综合管理,属 Android 本地框架 API 类
    • Audio Services:音频服务 
      • AudioPolicyService:音频策略的制定者,负责音频设备切换的策略抉择、音量调节策略等
      • AudioFlinger:音频策略的执行者,负责输入输出流设备的管理及音频流数据的处理传输
    • Audio HAL:音频硬件抽象层,负责与音频硬件设备的交互,由 AudioFlinger 直接调用

    与 Audio 强相关的有 MultiMedia,MultiMedia 负责音视频的编解码,MultiMedia 将解码后的数据通过 AudioTrack 输出,而 AudioRecord 采集的录音数据交由 MultiMedia 进行编码。


    AudioTrack Java API 两种数据传输模式:

    Transfer ModeDescription
    MODE_STATIC应用进程将回放数据一次性付给 AudioTrack,适用于数据量小、时延要求高的场景
    MODE_STREAM用进程需要持续调用 write() 写数据到 FIFO,写数据时有可能遭遇阻塞(等待 AudioFlinger::PlaybackThread 消费之前的数据),基本适用所有的音频场景

    audio playback sample

    int minBuffSize = AudioTrack.getMinBufferSize(22050, CHANNEL_OUT_STEREO, ENCODING_PCM_16BIT);

        AudioTrack track = new AudioTrack(STREAM_MUSIC, 22050, CHANNEL_OUT_STEREO, ENCODING_PCM_16BIT, minBuffSize, MODE_STREAM);

    byte data[] = new byte[minBuffSize/2];

        track.write(data, 0, data.length);

        track.play();

    float maxVol = AudioTrack.getMaxVolume();

        track.release();


    最小缓冲区的大小 = 最低帧数 * 声道数 * 采样深度,(采样深度以字节为单位)


    2.2. AudioTrack Native API

    AudioTrack Native API 四种数据传输模式:

    Transfer ModeDescription
    TRANSFER_CALLBACK在 AudioTrackThread 线程中通过 audioCallback 回调函数主动从应用进程那里索取数据,ToneGenerator 采用这种模式
    TRANSFER_OBTAIN应用进程需要调用 obtainBuffer()/releaseBuffer() 填充数据,目前我还没有见到实际的使用场景
    TRANSFER_SYNC应用进程需要持续调用 write() 写数据到 FIFO,写数据时有可能遭遇阻塞(等待 AudioFlinger::PlaybackThread 消费之前的数据),基本适用所有的音频场景;对应于 AudioTrack Java API 的 MODE_STREAM 模式
    TRANSFER_SHARED应用进程将回放数据一次性付给 AudioTrack,适用于数据量小、时延要求高的场景;对应于 AudioTrack Java API 的 MODE_STATIC 模式


    AudioTrack Native API 音频流类型:

    Stream TypeDescription
    AUDIO_STREAM_VOICE_CALL电话语音
    AUDIO_STREAM_SYSTEM系统声音
    AUDIO_STREAM_RING铃声声音,如来电铃声、闹钟铃声等
    AUDIO_STREAM_MUSIC音乐声音
    AUDIO_STREAM_ALARM警告音
    AUDIO_STREAM_NOTIFICATION通知音
    AUDIO_STREAM_DTMFDTMF 音(拨号盘按键音)


    AudioTrack Native API 输出标识:

    AUDIO_OUTPUT_FLAGDescription
    AUDIO_OUTPUT_FLAG_DIRECT表示音频流直接输出到音频设备,不需要软件混音,一般用于 HDMI 设备声音输出
    AUDIO_OUTPUT_FLAG_PRIMARY表示音频流需要输出到主输出设备,一般用于铃声类声音
    AUDIO_OUTPUT_FLAG_FAST表示音频流需要快速输出到音频设备,一般用于按键音、游戏背景音等对时延要求高的场景
    AUDIO_OUTPUT_FLAG_DEEP_BUFFER表示音频流输出可以接受较大的时延,一般用于音乐、视频播放等对时延要求不高的场景
    AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD表示音频流没有经过软件解码,需要输出到硬件解码器,由硬件解码器进行解码


    我们根据不同的播放场景,使用不同的输出标识,如按键音、游戏背景音对输出时延要求很高,那么就需要置

    AUDIO_OUTPUT_FLAG_FAST,具体可以参考 ToneGenerator、SoundPool 和 OpenSL ES。


    首先要了解音频领域中,帧(frame)的概念:帧表示一个完整的声音单元,所谓的声音单元是指一个采样样本;

    如果是双声道,那么一个完整的声音单元就是 2 个样本,如果是 5.1 声道,那么一个完整的声音单元就是 6 个样本了。

    帧的大小(一个完整的声音单元的数据量)等于声道数乘以采样深度,即 frameSize = channelCount * bytesPerSample

    帧的概念非常重要,无论是框架层还是内核层,都是以帧为单位去管理音频数据缓冲区的。

    其次还得了解音频领域中,传输延迟(latency)的概念:传输延迟表示一个周期的音频数据的传输时间。

    可能有些读者一脸懵逼,一个周期的音频数据,这又是啥?我们再引入周期(period)的概念:

    Linux ALSA 把数据缓冲区划分为若干个块,dma 每传输完一个块上的数据即发出一个硬件中断,cpu 收到中断信号后,

    再配置 dma 去传输下一个块上的数据;一个块即是一个周期,周期大小(periodSize)即是一个数据块的帧数。

    再回到传输延迟(latency),传输延迟等于周期大小除以采样率,即 latency = periodSize / sampleRate

    最后了解下音频重采样:音频重采样是指这样的一个过程——把一个采样率的数据转换为另一个采样率的数据。

    Android 原生系统上,音频硬件设备一般都工作在一个固定的采样率上(如 48 KHz),因此所有音轨数据都需要重采样

    到这个固定的采样率上,然后再输出。为什么这么做?系统中可能存在多个音轨同时播放,而每个音轨的采样率可能是不一致的;

    比如在播放音乐的过程中,来了一个提示音,这时需要把音乐和提示音混音并输出到硬件设备,而音乐的采样率和提示音的

    采样率不一致,问题来了,如果硬件设备工作的采样率设置为音乐的采样率的话,那么提示音就会失真;

    因此最简单见效的解决方法是:硬件设备工作的采样率固定一个值,所有音轨在 AudioFlinger 都重采样到这个采样率上,

    混音后输出到硬件设备,保证所有音轨听起来都不失真。


    重采样计算的:afFrameCount 是硬件设备处理单个数据块的帧数,afSampleRate 是硬件设备配置的采样率,sampleRate 是音轨的采样率,

    如果要把音轨数据重采样到 afSampleRate 上,那么反推算出应用程序最少传入的帧数为 afFrameCount * sampleRate / afSampleRate,

    而为了播放流畅,实际上还要大一点,所以再乘以一个系数(可参照 framebuffer 双缓冲,一个缓冲缓存当前的图像,一个缓冲准备下一幅的图像,

    这样图像切换更流畅),然后就得出一个可以保证播放流畅的最低帧数

     minFrameCount = (afFrameCount * sampleRate / afSampleRate) * minBufCount

        

    几个重要的类

    • AudioResampler.cpp:重采样处理类,可进行采样率转换和声道转换;由录制线程 AudioFlinger::RecordThread 直接使用
    • AudioMixer.cpp:混音处理类,包括重采样、音量调节、声道转换等,其中的重采样复用了 AudioResampler;由回放线程 AudioFlinger::MixerThread 直接使用
    • Effects.cpp:音效处理类
    • Tracks.cpp:音频流管理类,可控制音频流的状态,如 start、stop、pause
    • Threads.cpp:回放线程和录制线程类;回放线程从 FIFO 读取回放数据并混音处理,然后写数据到输出流设备;录制线程从输入流设备读取录音数据并重采样处理,然后写数据到 FIFO
    • AudioFlinger.cpp:AudioFlinger 对外提供的服务接口


    AudioFlinger 对外提供的主要的服务接口如下:

    InterfaceDescription
    sampleRate获取硬件设备的采样率
    format获取硬件设备的音频格式
    frameCount获取硬件设备的周期帧数
    latency获取硬件设备的传输延迟
    setMasterVolume调节主输出设备的音量
    setMasterMute静音主输出设备
    setStreamVolume调节指定类型的音频流的音量,这种调节不影响其他类型的音频流的音量
    setStreamMute静音指定类型的音频流
    setVoiceVolume调节通话音量
    setMicMute静音麦克风输入
    setMode切换音频模式:音频模式有 4 种,分别是 Normal、Ringtone、Call、Communicatoin
    setParameters设置音频参数:往下调用 HAL 层相应接口,常用于切换音频通道
    getParameters获取音频参数:往下调用 HAL 层相应接口
    openOutput打开输出流:打开输出流设备,并创建 PlaybackThread 对象
    closeOutput关闭输出流:移除并销毁 PlaybackThread 上面挂着的所有的 Track,退出 PlaybackThread,关闭输出流设备
    openInput打开输入流:打开输入流设备,并创建 RecordThread 对象
    closeInput关闭输入流:退出 RecordThread,关闭输入流设备
    createTrack新建输出流管理对象: 找到对应的 PlaybackThread,创建输出流管理对象 Track,然后创建并返回该 Track 的代理对象 TrackHandle
    openRecord新建输入流管理对象:找到 RecordThread,创建输入流管理对象 RecordTrack,然后创建并返回该 RecordTrack 的代理对象 RecordHandle

    可以归纳出 AudioFlinger 响应的服务请求主要有:

    • 获取硬件设备的配置信息
    • 音量调节
    • 静音操作
    • 音频模式切换
    • 音频参数设置
    • 输入输出流设备管理
    • 音频流管理

    AudioFlinger 回放录制线程

    • ThreadBase:PlaybackThread 和 RecordThread 的基类
    • RecordThread:录制线程类,由 ThreadBase 派生
    • PlaybackThread:回放线程基类,同由 ThreadBase 派生
    • MixerThread:混音回放线程类,由 PlaybackThread 派生,负责处理标识为 AUDIO_OUTPUT_FLAG_PRIMARY、AUDIO_OUTPUT_FLAG_FAST、AUDIO_OUTPUT_FLAG_DEEP_BUFFER 的音频流,MixerThread 可以把多个音轨的数据混音后再输出
    • DirectOutputThread:直输回放线程类,由 PlaybackThread 派生,负责处理标识为 AUDIO_OUTPUT_FLAG_DIRECT 的音频流,这种音频流数据不需要软件混音,直接输出到音频设备即可
    • DuplicatingThread:复制回放线程类,由 MixerThread 派生,负责复制音频流数据到其他输出设备,使用场景如主声卡设备、蓝牙耳机设备、USB 声卡设备同时输出
    • OffloadThread:硬解回放线程类,由 DirectOutputThread 派生,负责处理标识为 AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD 的音频流,这种音频流未经软件解码的(一般是 MP3、AAC 等格式的数据),需要输出到硬件解码器,由硬件解码器解码成 PCM 数据

    从 Audio HAL 中,我们通常看到如下 4 种输出流设备,分别对应着不同的播放场景:

    • primary_out:主输出流设备,用于铃声类声音输出,对应着标识为 AUDIO_OUTPUT_FLAG_PRIMARY 的音频流和一个 MixerThread 回放线程实例
    • low_latency:低延迟输出流设备,用于按键音、游戏背景音等对时延要求高的声音输出,对应着标识为 AUDIO_OUTPUT_FLAG_FAST 的音频流和一个 MixerThread 回放线程实例
    • deep_buffer:音乐音轨输出流设备,用于音乐等对时延要求不高的声音输出,对应着标识为 AUDIO_OUTPUT_FLAG_DEEP_BUFFER 的音频流和一个 MixerThread 回放线程实例
    • compress_offload:硬解输出流设备,用于需要硬件解码的数据输出,对应着标识为 AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD 的音频流和一个 OffloadThread 回放线程实例

    其中 primary_out 设备是必须声明支持的,而且系统启动时就已经打开 primary_out 设备并创建好对应的 MixerThread 实例。其他类型的输出流设备并非必须声明支持的,主要是看硬件上有无这个能力。

    可能有人产生这样的疑问:既然 primary_out 设备一直保持打开,那么能耗岂不是很大?这里阐释一个概念:输出流设备属于逻辑设备,并不是硬件设备。所以即使输出流设备一直保持打开,只要硬件设备不工作,那么就不会影响能耗。那么硬件设备什么时候才会打开呢?答案是 PlaybackThread 将音频数据写入到输出流设备时。


    最后看个金典的架构




    展开全文
  • html5 Audio标签

    千次阅读 2018-08-25 22:25:12
    javascript动态创建audio标签 在页面中添加audio元素的方法主要是两种,一种是在html中加入audio代码,可以加入一些属性(autoplay,preload)等,这些在之前的文章已经说过了。另外一种是js动态加载进来的。代码...

    javascript动态创建audio标签

    在页面中添加audio元素的方法主要是两种,一种是在html中加入audio代码,可以加入一些属性(autoplay,preload)等,这些在之前的文章已经说过了。另外一种是js动态加载进来的。代码如下:

    var audio=document.creatElement(“audio”);
    audio.src=”audio/source.ogg”;//路径
    audio.play();

    或者更简单一些
    audio=new Audio(“audio/source.ogg”);//路径
    audio.play();

    另外audio的属性,preload有三种不同的载入方式,我们可以通过preload=”auto”来实现音频的自动加载,但是我们无法通过直观的方式了解音频加载的进度,以及是否准备播放。这里提供了一个“canplaythrough”事件来监听音频是否已经加载完成。代码示例如下:

    <!DOCTYPE html >
    <html lang="en">
    <head>
    <title>Preload Ready</title>
    <script type="text/javascript">
            var audio = document.createElement("audio");
            audio.src = "test.mp3";
            audio.addEventListener("canplaythrough", function () {
                alert('音频文件已经准备好,随时待命');
            }, false);
        </script>
    </head>
    <body>
    </body>
    </html>

    运行代码复制代码另存代码(提示:可以编辑后运行)

    第一次运行时间会长一些,第二次运行由于文件已经缓存到本地,所以会直接弹出提示框。

    javascript控制audio的播放,暂停,停止

    js如何控制audio标签的播放比较简单,在上面好多案例中已经提到了。主要是audio.play();同样暂停也比较简单audio.pause();就能很轻易搞定,看到这里你估计以为想要停止的话,也会使用这种语义化的函数了,呵呵,其实不是这样的audio.stop()并不能停止audio的播放。

    如果你需要停止或者重新播放audio,必须设置它的currentTime,可见如下语句:

    audio.currentTime = 0;

    下面我给出一个完成的示例,包括了开始播放,暂停播放,停止播放

    <!DOCTYPE html >
    <html lang="en">
    <head>
    <title>Preload Ready</title>
    <script type="text/javascript">
    var audio = document.createElement("audio");
    audio.src = "test.mp3";
    audio.addEventListener("canplaythrough",
    function() {
    	alert('音频文件已经准备好,随时待命');
    },
    false);
    function aPlay() {
    	audio.play();
    }
    function aPause() {
    	audio.pause();
    }
    function aStop() {
    	audio.currentTime = 0;
    	audio.pause();
    }
    function aSkip() {
    	audio.currentTime = 50;
    	audio.play();
     }
        </script>
    </head>
    <body>
    <input type="button" onclick="aPlay();" value="播放音频">
    <input type="button" onclick="aPause();" value="暂停音频">
    <input type="button" onclick="aStop();" value="停止音频">
    <input type="button" onclick="aSkip();" value="跳到第50秒">
    </body>
    </html>

    运行代码复制代码另存代码(提示:可以编辑后运行)

    注意:以上代码中的停止加上了pause(),另外跳到50秒加上了play()。这里主要是因为一旦play开始运行无法停止的,所以需要设置currentTime后使得音频暂停。另外跳转到50秒后,加上play()的做法是如果音频在没有播放的情况下,跳转到50秒时音频不会自动播放;而如果音频在播放中,那么跳到50秒的时候还是播放的,这里的play()可以忽略。当然具体情况可以自行定义。

     javascript控制audio的声音大小:

    控制声音的大小比较简单,大概同play,pause那一套一样,主要是多了一个参数。

    示例:audio.volume = 0;//表示静音  audio.volume = 1; 表示声音最大 ,声音值可以取0-1之间

    演示不写了,可以自己修改上面代码运行框中的内容。

    javascript控制audio的快进,快退,以及显示进度与时长

    控制快进,快退的原理比较简单,只不过是设置audio的currentTime,案例如下

    比如:audio.currentTime += 10;//10秒快进

    <!DOCTYPE html >
    <html lang="en">
    <head>
    <title>Preload Ready</title>
    <script type="text/javascript">
    var audio = document.createElement("audio");
    audio.src = "test.mp3";
    audio.addEventListener("canplaythrough",
    function() {
    	alert('音频文件已经准备好,随时待命');
    },
    false);
    function aPlay() {
    	audio.play();
    }
    function go() {
    	audio.currentTime += 10;
    	audio.play();
    }
    function back() {
    	audio.currentTime -= 10;
    	audio.play();;
    }
        </script>
    </head>
    <body>
    <input type="button" onclick="aPlay();" value="播放音频">
    <input type="button" onclick="go();" value="快进10秒">
    <input type="button" onclick="back();" value="快退10秒">
    </body>
    </html>

    运行代码复制代码另存代码(提示:可以编辑后运行)

    关于显示进度的方法也不是很复杂,不过如果你想实现js配合css做一个进度条的模拟也许复杂一点。如果你对js以及css比较熟悉的话,解决的思路有很多。甚至可以做出很多酷炫的效果。我在这里只是点一下如何调用出该音频文件的时长以及播放到进度的时间。

    调用出音频的时长不难解决 “audio.duration;” 就是了

    调用处该文件的播放进度,这里需要用到一个时间监听。currentTime代表当前播放的时间,而且当currentTime改变的时候会触发timeupdate事件。因此,我们监听timeupdate,并且输出currentTime即可完成进度的判断。不多说,看示例代码:

    <!DOCTYPE html >
    <html lang="en">
    <head>
    <title>Preload Ready</title>
    <script type="text/javascript">
    var audio = document.createElement("audio");
    audio.src = "test.mp3";
    audio.addEventListener("canplaythrough",
    function() {
    	alert('音频文件已经准备好,随时待命');
    },
    false);
    audio.addEventListener("timeupdate", showtime, true);
    function showtime() {
    	document.getElementById("ltime").innerHTML = audio.duration;
    	document.getElementById("ctime").innerHTML = audio.currentTime;
    }
    function aPlay() {
    	audio.play();
    }
    function go() {
    	audio.currentTime += 10;
    	audio.play();
    }
    function back() {
    	audio.currentTime -= 10;
    	audio.play();
    }
    </script>
    </head>
    <body>
     总时长:
    <div id="ltime">
    </div>
    <br/>
    当前播放:
    <div id="ctime">
    </div>
    <br/>
    <input type="button" onclick="aPlay();" value="播放音频">
    <input type="button" onclick="go();" value="快进10秒">
    <input type="button" onclick="back();" value="快退10秒">
    </body>
    </html>

    展开全文
  • 一、Audio 介绍

    2017-09-28 21:50:33
    1、音频在iOS 中的架构和框架 2、音频编解码算法、文件封装格式 3、播放系统声音、震动、提示声音 4、AVfoundation精准中英文语言识别 编码格式:pcm\aac\mp3…Audio 流程图:

    1、音频在iOS 中的架构和框架
    2、音频编解码算法、文件封装格式
    3、播放系统声音、震动、提示声音
    4、AVfoundation精准中英文语言识别
    编码格式:pcm\aac\mp3…

    Audio 流程图:
    这里写图片描述

    展开全文
  • Android 音频系统:从 AudioTrack 到 AudioFlinger

    万次阅读 多人点赞 2017-03-09 00:01:16
    1. Android 音频框架概述Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等,主要包括如下部分: Audio Application Framework:音频应用框架...
  • 基于STM32F4Discovery板子的音频示例代码。
  • Audio基础知识

    千次阅读 2016-12-23 18:17:39
    全文来自网络搜集。 3.1.1 声音处理 ...一般我们人耳能听到的声音频率为20-20kHz,对不同频段的感知和理解不一样,所以在音效处理方面有很多发挥的空间。...声音涉及到的面很多,包括物理、语言学等方面的研究。...
  • 我们最近出了一个问题,我们点击播放音乐,然后再点击停止播放的时候,喇叭还会输出一段杂音后喇叭才会停止输出。经过排查发现,在代码里面就做了这个功能代码在AudioFlinger.h里fr...
  • Android系统Audio框架介绍

    万次阅读 多人点赞 2014-09-24 08:49:49
    音频基础知识 声音有哪些重要属性呢? 响度(Loudness) 响度就是人类可以感知到的各种声音的大小,也就是音量。响度与声波的振幅有直接关系。 音调(Pitch) 音调与声音的频率有关系,当声音的频率越大时,人耳所感知...
  • audio标签

    2018-08-27 16:47:39
    audio src=""&gt;&lt;/audio&gt;&lt;!--第一种--&gt; &lt;audio&gt; &lt;source src="" type="audio/mp3"&gt;&lt;/source&gt;&...
  • Javascript控制html5 Audio标签

    万次阅读 2016-09-02 11:27:03
    Javascript控制html5 Audio标签 9 Replies ...在上一篇文章:Html5 audio标签(属性)的使用详解中已经把关于audio...javascript动态创建audio标签 在页面中添加audio元素的方法主要是两种,一种是在html中加入a
  • audio标签实现播放音频文件,其中音频文件的后缀包括amrnb,mp3,wav。由于对音频文件个格式有的不支持,有的会进行一下转换。
  • 移动端audio标签的使用及注意点

    千次阅读 2017-10-11 08:42:59
    移动端,音乐播放,audio标签是必须的,于是直接就开写:&lt;i class="icon-music-outer"&gt; &lt;i class="forbid icon-music"&gt;&lt;/i&gt; &lt;audio lo...
  • HTML5 audio 标签 播放事件流程

    千次阅读 2019-01-18 11:04:20
    此代码包括了html5 audio 标签 整个播放流程。 你可以暂停,调整音量,拖动进度条 观察一下 var audio = new Audio(); document.body.appendChild(audio); if (!!audio){ audio.src = "allofMe.mp3"; // audio....
  • H5 audio标签属性使用

    千次阅读 2016-03-07 11:55:49
    audio标签有以下属性: 属性 值 描述 autoplay autoplay 如果出现该属性,则音频在就绪后马上播放。 controls controls 如果出现该属性,则向用户显示控件,比如播放按钮。 loop loop ...
  • HTML5 Audio标签API整理

    千次阅读 2018-08-25 14:05:27
    audio id="myAudio"&gt;&lt;/audio&gt; &lt;script&gt; var myAudio = document.getElementById('myAudio'); myAudio.src = '../content/audio/海阔天空.mp3'; myAudio.play()...
  • <!... 音频播放测试 ...<audio style="width:300;... 您的浏览器不支持 audio 标签。 </audio> 同样一段代码放桌面测试是没有问题的,放到项目底下,播放器就不好用了(出不来),求前辈们指点一二
  • audio标签的样式修改

    2020-08-19 13:05:41
    由于html5的流行,现在移动端大多数的需求都可以使用audio来播放音频,但您可能只是需要很简单的播放/停止效果,但不同的浏览器上的audio样式却不尽人意,那么...下面是audio标签的一些相关API: 控制函数功能说明 lo
  • vue使用H5的audio标签

    千次阅读 2019-04-19 10:18:28
    audio ref="audio" :src="audioUrl"></audio> data里绑定audioUrl为audio的路径 audioUrl: 'static/audio/notify.wav' // 声音源 按钮播放声音: click () { this.$refs.audio.play() } ...
  • HTML5中 audio标签的样式修改

    万次阅读 2017-03-08 17:48:16
    由于html5的流行,现在移动端大多数的需求都可以使用audio来播放音频,但您可能只是...隐藏原生的audio, 然后用div之类标签,定义css样式美化起来用来显示播放器的效果,最后用js捕获audio事件,基本就是src路径、p
  • 1、video标签: &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;video src=&amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;amp;amp;...
  • audio标签的简单用法

    千次阅读 2019-06-30 17:34:16
    audio src="song.ogg" controls="controls"> </audio> control 属性供添加播放、暂停和音量控件。 <audio> 与 </audio> 之间插入的内容是供不支持 audio 元素的浏览器显示的 <audio src...
  • Html5 audio标签实现音乐播放

    千次阅读 2017-05-28 21:59:16
    html5 的audio标签实现的音乐播放
  • 说明: 需求要求这个音频标签首先要是可适配移动端浏览器的,音频样式就是参考微信做的。...具体操作是定义 的时候去掉 controls 属性,这样就可以隐藏原生的 audio, 然后就可以加上自己写的 html
  • HTML - 解决 Audio 标签不显示问题

    千次阅读 2019-10-21 22:13:58
    H5 的 audio 标签在不设置 controls 这个属性的情况下,那么他会默认的隐藏本身的空间,但是方法还能用。
  • HTML5 audio标签的使用

    千次阅读 2015-07-24 11:48:32
    在HTML5标准网页里面,我们可以运用audio标签来完成我们对声音的调用及播放,比如音乐或其他音频流。 HTML5 Audio标签支持三种格式的音频,分别是wav mp3和ogg格式。   一、Video标签支持的部分属性列举  ...
  • audio标签的事件总结

    2020-03-09 23:27:37
    audio在音乐播放上用的频率极高,后来自己就查阅资料和度娘来总结了一下audio的JS事件: play:音频或视频文件已经就绪可以开始播放时触发 playing:音频或视频已开始播放时触发 ended:音频或视频文件播放完毕后触发 ...
  • 监听audio标签播放

    2019-10-08 09:36:39
    audio id="audio" controls="controls" loop="loop" style="display: none;"> 2 <source src="image/3.mp3" type="audio/mpeg" /> 3 </audio> 4 5 audio.play();//播放 ...
  • 谷歌浏览器audio标签自动播放音乐问题解决

    万次阅读 多人点赞 2018-10-10 14:35:17
    前面一篇博客中有audio标签自动播放音乐的代码,可是后来再打开页面时音乐自动播放报错了; 看了网上的一些帖子才知道原来在4月份谷歌浏览器做了改革,不止谷歌, 其他浏览器好像也不支持自动播放了,现贴出解决...
  • H5的新特性 ,音频不可以自动播放,除非用户自己添加。所以从后台读取出来的音频,需要做操作。 <i class="layui-icon layui-icon-...audio style="display: none" id="uploadMusic" class="layui-icon layui-...

空空如也

1 2 3 4 5 ... 20
收藏数 236,654
精华内容 94,661
关键字:

audio