idofilus / flutter_audio

Flutter Audio Plugin
MIT License
15 stars 14 forks source link

Audio errors after playing for a few seconds #4

Closed SaadArdati closed 5 years ago

SaadArdati commented 5 years ago
E/MediaPlayerNative(32336): error (-38, 0)
E/MediaPlayerNative(32336): Attempt to call getDuration in wrong state: mPlayer=0xcece1380, mCurrentState=0
E/MediaPlayerNative(32336): error (-38, 0)
V/com.idofilus.audio.AudioPlayer(32336): [invoke] player.onPlay 15dd57a0-015b-4594-9c24-8fc3158f00fd => 5963776
E/MediaPlayer(32336): Error (-38,0)
E/com.idofilus.audio.AudioPlayer(32336): onError::code UNKNOWN
I/flutter (32336): [_onChannelMethod] method=player.onPause arguments={uid: 15dd57a0-015b-4594-9c24-8fc3158f00fd, argument: null} 15dd57a0-015b-4594-9c24-8fc3158f00fd
I/flutter (32336): onPlayerStateChanged: 15dd57a0-015b-4594-9c24-8fc3158f00fd AudioPlayerState.PAUSED
I/flutter (32336): [_onChannelMethod] method=player.onPlay arguments={uid: 15dd57a0-015b-4594-9c24-8fc3158f00fd, argument: 5963776} 15dd57a0-015b-4594-9c24-8fc3158f00fd
I/flutter (32336): onPlayerStateChanged: 15dd57a0-015b-4594-9c24-8fc3158f00fd AudioPlayerState.PLAYING
E/MediaPlayer(32336): Error (-38,0)
E/com.idofilus.audio.AudioPlayer(32336): onError::code UNKNOWN
I/flutter (32336): [_onChannelMethod] method=player.onError.code arguments={uid: 15dd57a0-015b-4594-9c24-8fc3158f00fd, code: UNKNOWN} 15dd57a0-015b-4594-9c24-8fc3158f00fd
I/System.out(32336): onMethodCall method=player.stop uid=15dd57a0-015b-4594-9c24-8fc3158f00fd
I/flutter (32336): [_onChannelMethod] method=player.onError.code arguments={uid: 15dd57a0-015b-4594-9c24-8fc3158f00fd, code: UNKNOWN} 15dd57a0-015b-4594-9c24-8fc3158f00fd
V/com.idofilus.audio.AudioPlayer(32336): [invoke] player.onStop 15dd57a0-015b-4594-9c24-8fc3158f00fd => false
I/flutter (32336): [_onChannelMethod] method=player.onStop arguments={uid: 15dd57a0-015b-4594-9c24-8fc3158f00fd, argument: false} 15dd57a0-015b-4594-9c24-8fc3158f00fd
I/flutter (32336): onPlayerStateChanged: 15dd57a0-015b-4594-9c24-8fc3158f00fd AudioPlayerState.STOPPED
I/System.out(32336): onMethodCall method=player.stop uid=15dd57a0-015b-4594-9c24-8fc3158f00fd
V/com.idofilus.audio.AudioPlayer(32336): [invoke] player.onStop 15dd57a0-015b-4594-9c24-8fc3158f00fd => false
I/flutter (32336): [_onChannelMethod] method=player.onStop arguments={uid: 15dd57a0-015b-4594-9c24-8fc3158f00fd, argument: false} 15dd57a0-015b-4594-9c24-8fc3158f00fd
I/flutter (32336): onPlayerStateChanged: 15dd57a0-015b-4594-9c24-8fc3158f00fd AudioPlayerState.STOPPED

This is thrown approximately 30 seconds after audio playback. I noticed that when I raised the volume, there were audio artifacts (like static clicking/glitching noises), but that might be from the android emulator itself. This issue could be unrelated.

The file played is a webm file.

The code is copied from the example section.

  AudioPlayerState audioState = AudioPlayerState.STOPPED;
  double position = 0;
  StreamSubscription<AudioPlayerState> playerStateSubscription;
  StreamSubscription<double> playerPositionController;
  StreamSubscription<int> playerBufferingSubscription;
  StreamSubscription<AudioPlayerError> playerErrorSubscription;

  Track _lastTrack = null;

  List<Track> _tracks = List();

  MusicManager._private() {
    _read();

    playerStateSubscription =
        _audioPlayer.onPlayerStateChanged.listen((AudioPlayerState state) {
      print("onPlayerStateChanged: ${_audioPlayer.uid} $state");
      audioState = state;
    });

    playerPositionController =
        _audioPlayer.onPlayerPositionChanged.listen((double position) {
      print(
          "onPlayerPositionChanged: ${_audioPlayer.uid} $position ${_audioPlayer.duration}");

      this.position = position;
    });

    playerBufferingSubscription =
        _audioPlayer.onPlayerBufferingChanged.listen((int percent) {
      print("onPlayerBufferingChanged: ${_audioPlayer.uid} $percent");
    });

    playerErrorSubscription =
        _audioPlayer.onPlayerError.listen((AudioPlayerError error) {
      throw ("onPlayerError: ${error.code} ${error.message}");
    });
  }

  List<Track> getAllTracks() => _tracks;

  void playTrack(Track track) {
    track.getURI().then((uri) => _audioPlayer.play(uri.toString()));
    _lastTrack = track;
  }
SaadArdati commented 5 years ago

Audio file was corrupted. My bad.