簡體   English   中英

just_audio/audio_service:無縫播放不適用於 FLAC,但僅適用於第一次播放的第一首歌曲

[英]just_audio/audio_service: Gapless playback doesn't work with FLAC, but only on the first song for the first playthrough

為這個不完美的問題道歉,但我已經用盡了所有選擇,我不知道還能做什么。

從 iOS 上的文件播放 FLAC 時,從歌曲 1 到 2 的第一個過渡有大約 100 毫秒的延遲,即使是從ConcatenatingAudioSource播放時也是如此。 我無法通過修改audio_service播放列表示例來重現這一點,並且跳回並再次收聽轉換效果很好(無間隙)。

在 HTTP 上播放相同的歌曲是無縫的。

我沒有一個最小的例子,但這里有一些指向我的代碼的鏈接:

如果這里沒有明確的答案也沒關系(我沒有一個很好的例子,哪種方式會妨礙)。 我只想知道這里有什么我可以做的。 我可能會嘗試破解一個東西以在下一首歌曲前約 5 秒強制加載下一個項目,但這是一個糟糕的解決方案,顯然不需要。

免責聲明:我是一個完全的初學者 - 所以下面的任何內容都可能與您提出的問題完全無關。

我在為我的問題尋求解決方案時發現了你的問題,當我從帶有 just_audio 的 ConcatenatingAudioSource 播放時,mp3 之間有 1 到 2 ~100 毫秒的延遲。 希望您可以從下面推斷出一個解決方案。

我的應用程序的基礎知識:加載五個循環,當用戶到達第五個開頭時,再加載五個循環,在用戶收聽時重復很長時間。 我的循環有 30 秒長,我有一個計時器可以在循環播放時控制其他動作。

我的應用程序會始終如一地完美播放前五個循環。 但是,每個額外的循環之間都有大約 100 毫秒的延遲。

我做了兩件事來解決:

  1. 停止嘗試 append 多個循環播放列表
  2. 停止嘗試在計時器的第一秒加載

這是我的代碼片段。

      int timerCounter = 0;
      late Timer timeControl;

      void loadLoops() {
        timeControl = Timer.periodic(Duration(seconds: 1), (timer)    async {
          if (timerCounter <= 30) {

            timerCounter++;

            /// next commented out line consistently causes a glitch if
            // timerCounter == 1 ? addMultipleLoops(storedPlaylist) : null;

            // my fix to get rid of glitch
            timerCounter == 6 ? addSingleLoop(loopPlayer.currentIndex! + 1): null;
            timerCounter == 31 ? timerCounter = 0: null;
          }
        });
      }

      void addMultipleLoops(List<int> storedPlaylist) {

        storedPlaylist.forEach((loop) {
          {
            loopPlaylist
                .add(AudioSource.file('${directory}/${loop}.mp3'));
          }
        });
      }

      void addSingleLoop(int indexPosition) async {
        /* my loop names are numbers starting at 1 (ex: 1.mp3, 2.mp3, 3.mp3... etc)
        ... Adding 1 to indexPosition references
        the first loop (1.mp3) when my index position is at 0.
        */

        int loop = indexPosition + 1;
        if(indexPosition == 4) {
          loop = 1;
        }

        loopPlaylist.add(AudioSource.file('${directory}/${loop}.mp3'));
      }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM