作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在开发一个 Ionic 2 应用程序项目,该项目允许用户录制自己的声音、停止录制以及回放该声音。根据 ionic-native,我可以看到他们提供了 2 个插件,分别是 MediaPlugin 和 MediaCapture。我尝试过使用 MediaPlugin,但在开始录制、停止录制和播放时遇到了问题。有没有人使用过这个插件?我已经浏览了 ionic 文档和其他一些博客,但我仍然无法做到。我对此很陌生,非常感谢您的努力。我很欣赏你的所有想法。
问候,
这是我在开始录制时从模拟器得到的日志:
I/MPEG4Writer( 401): limits: 2147483647/0 bytes/us, bit rate: 12200 bps and the estimated moov size 3072 bytes
D/Genyd ( 56): Received Set Clipboard
D/Genymotion( 56): Received Set Clipboard
D/dalvikvm( 379): GC_CONCURRENT freed 717K, 13% free 6011K/6864K, paused 0ms+1ms, total 10ms
E/genymotion_audio( 401): get_next_buffer() pcm_read error -1
W/PluginManager( 1116): THREAD WARNING: exec() call to Media.startRecordingAudio blocked the main thread for 10037ms. Plugin should use CordovaInterface.getThreadPool().
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
I/MPEG4Writer( 401): setStartTimestampUs: 10031588
I/MPEG4Writer( 401): Earliest track starting time: 10031588
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
这是我停止录制时从模拟器得到的日志:
I/MPEG4Writer( 401): Received total/0-length (42/0) buffers and encoded 42 frames. - audio
I/MPEG4Writer( 401): Audio track drift time: 0 us
D/MPEG4Writer( 401): Stopping Audio track source
E/genymotion_audio( 401): get_next_buffer() pcm_read error -16
D/MPEG4Writer( 401): Audio track stopped
D/MPEG4Writer( 401): Stopping writer thread
D/MPEG4Writer( 401): 0 chunks are written in the last batch
D/MPEG4Writer( 401): Writer thread stopped
I/MPEG4Writer( 401): The mp4 file will not be streamable.
D/MPEG4Writer( 401): Stopping Audio track
D/AudioPlayer( 1116): renaming /storage/emulated/0/tmprecording.3gp to /storage/emulated/0/../Documents/undefined-.wav
E/AudioPlayer( 1116): FAILED renaming /storage/emulated/0/tmprecording.3gp to /storage/emulated/0/../Documents/undefined-.wav
W/PluginManager( 1116): THREAD WARNING: exec() call to Media.stopRecordingAudio blocked the main thread for 135ms. Plugin should use CordovaInterface.getThreadPool().
这是我的 home.ts 代码:
import {Component} from '@angular/core';
import {NavController, Platform, Page, Events} from 'ionic-angular';
import {MediaPlugin} from 'ionic-native';
@Component({
templateUrl: 'build/pages/home/home.html'
})
export class HomePage {
private _platform: Platform;
private _fileRecord: MediaPlugin;
private _pathFile: string;
private _nameFile: string;
constructor(private navCtrl: NavController, platform: Platform) {
this._platform = platform;
}
public startRecord(): void {
this._pathFile = this.getPathFileRecordAudio();
this._fileRecord = new MediaPlugin(this._pathFile);
this._fileRecord.startRecord();
}
public stopRecord(): void {
this._fileRecord.stopRecord();
}
private startPlay(): void {
this._fileRecord = new MediaPlugin(this._pathFile);
this._fileRecord.play();
}
private getPathFileRecordAudio(): string {
let path: string = (this._platform.is('ios') ? '../Library/NoCloud/': '../Documents/');
return path + this._nameFile + '-' + '.wav';
}
}
最佳答案
关于audio - 如何在 Ionic 2 上录音和播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520888/
我是一名优秀的程序员,十分优秀!