簡體   English   中英

Android 中有播放、暫停、倒帶、快進的方法嗎?

[英]Are there a Play, Pause, Rewind, Fast Forward methods in Android?

我正在開發一個允許用戶對着設備說話的 Android 應用程序。 然后我想保存它,倒帶它的一部分再次播放,也許快進到音頻的另一部分,暫停它,播放它等等。就像一個基本的錄音機。

是否有任何內置的 API 或方法或代碼允許這樣做? 如果沒有,那我該從哪里去?

任何幫助將不勝感激。

使用 MediaPlayer,您可以尋找流中的不同位置,但這與播放快進(或快退)不同,在 DVR 中也稱為“特技播放”。

但是,快進可能可以像這樣使用seekTo實現:

  • 設置一個周期性計時器(即postDelayedscheduleAtFixedRate ),每 100 毫秒
  • 在計時器的 Runnable 中,使用表示您想要的播放速率的因子的值調用 seekTo。
    • 因此,如果您想要 2 倍快進,那么在每 100 毫秒之后,您將尋求 curr_pos + 100 毫秒。 這意味着 100 毫秒已經過去,但現在您處於 prev_pos + 200 毫秒。
    • 執行 4x 意味着在每 100 毫秒期間您尋求 curr_pos + 300 毫秒。

.

  • 我剛剛意識到 seekTo 可能會尋找最近的參考或 I 幀。 因此,調用 seekTo(curr_pos + 100) 可能無法到達您想要的精確位置。

我可能需要在我正在使用的視頻播放器中實現 FF。 如果我讓它工作,我會在這里更新我的答案。

//測試下面的鱈魚

double duration = mediaPlayer.getCurrentTime().toSeconds();
if (e.getKeyCode()==39)
{

    if (duration < mediaPlayer.getTotalDuration().toSeconds()-5)
        duration = duration + 5;
    else
        duration = mediaPlayer.getTotalDuration().toSeconds();
    //...
    mediaPlayer.setStartTime(Duration.seconds(duration));

}else
if (e.getKeyCode()==37)
{
    if (duration > 5)
        duration = duration - 5;
    else
        duration = 0;
    //...
    mediaPlayer.setStartTime(Duration.seconds(duration));
}                    

使用AudioRecorder記錄數據。 使用 PCM 格式。

然后你可以通過AudioTrack有選擇地播放它。

暫無
暫無

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

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