Ich arbeite gerade an einem Ionic 2 App-Projekt, mit dem Benutzer ihren eigenen Sound aufnehmen, die Aufnahme stoppen und diesen Sound auch wiedergeben können. Laut ionischen-nativen kann ich sehen, dass sie 2 Plugins zur Verfügung stellen, die MediaPlugin und MediaCapture sind. Ich habe versucht, MediaPlugin zu verwenden, aber ich hatte Probleme beim Starten der Aufnahme, stoppe sie und spiele sie ab. Haben Sie schon einmal mit diesem Plugin experimentiert? Ich habe die ionischen Dokumente und einige andere Blogs durchgesehen, aber ich bin immer noch nicht in der Lage, es zu machen. Ich bin sehr neu, vielen Dank für Ihre Bemühungen. Ich schätze all deine Idee.Wie nehme ich Audio und Playback auf Ionic 2 auf?
Grüße,
Dies ist die Protokolle I von Emulator bekam, während die Aufnahme starten:
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
Dies ist die Protokolle I von Emulator bekam, während die Aufnahme zu stoppen:
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().
Hier ist mein home.ts Code:
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';
}
}