![HTML5 APP开发从入门到精通(微课精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/420/31794420/b_31794420.jpg)
上QQ阅读APP看书,第一时间看更新
5.2 案例实战
下面结合案例演示HTML5访问多媒体设备的基本方法。
5.2.1 拍照和摄像
本例将使用HTML5的WebRTC技术,借助video标签实现网页视频,同时利用Canvas实现照片拍摄。本例不能直接用浏览器打开文件,需要将文件部署在Web服务器上,如Apache和IIS等。示例主要代码如下。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P98_41002.jpg?sign=1738900056-R3xk0uLgqMejhSA5KO2wcwB20VtadsRv-0-32ab9ac22491e9a527515c639a7c2e38)
在Chrome中打开页面,根据浏览器界面提示,允许用户使用摄像头。浏览器将启动摄像头,左侧video标签内出现摄像头捕捉的画面,单击“快照”按钮,截取左侧视频显示在右侧画布,单击“保存”按钮,画布图片将被保存为“照片.png”以供下载,演示效果如图5.3所示。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P99_11713.jpg?sign=1738900056-uK2AWAkHv9t5xuostMCRX1v6H9y1txGT-0-1962b75912a4b561c492dd8208a7a39d)
图5.3 拍照和摄像
5.2.2 录音并压缩
本例使用getUserMedia获取用户设备的媒体访问权,然后获取麦克风的音频信息,并把它传递给audio标签进行播放,再把Blob数据发送给服务器端,保存为mp3格式的音频文件,演示效果如图5.4所示。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P99_11718.jpg?sign=1738900056-ggtW59wLfRUANN5PKcfqMRkrmDMfKTHM-0-f4e2536bb9bac5201a0a71c576ca7bc0)
图5.4 录音并保存到服务器端
第1步,使用getUserMedia获取用户多媒体的访问权,具体代码如下。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P100_41006.jpg?sign=1738900056-oHV21Sdmm9dTt2GUkybBrkeOA7rpWglx-0-fe7fc5b1819e137b3933d647d0b1ccbf)
第2步,利用Ajax技术,使用HTML5的FormData对象把Blob数据传递给服务器端,具体代码如下。
var fd = new FormData(); fd.append("audioData", blob); var xhr = new XMLHttpRequest(); xhr.open("POST", url); xhr.send(fd);
第3步,使用HTML5的AudioContext对象获取音频数据流。如果直接录音,保存后基本上2秒就需要400K,一段20秒的录音就达到了4M。这样的数据根本无法使用,必须想办法压缩数据。具体方法和代码如下。
把双声道变为单声道。
缩减采样位数,默认是16位,现在改成8位,可以减少一半。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P100_41010.jpg?sign=1738900056-4B6Uh7Z17ddVgw4y6LJbhQtI3XgT4uUQ-0-f43757388cded9622e781c079bcdebbd)
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P101_11955.jpg?sign=1738900056-yUoqHwS1AyqvDcyTGcdVKRbqttz1Mjv5-0-e1a2acc591f31ede00503c14a6145759)
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P102_41011.jpg?sign=1738900056-TSPirJRQCEs48PBGPXd66EgyLnzz5ICN-0-213354408f8b0840698e3ecdb8a5a8c1)