3

mplayerを使用してファイルを再生するスクリプトがあり、途中で再生を停止した場合、停止した再生位置を保存する方法はありますか?

4

2 に答える 2

0

これをすばやく試してみてください

mplayer あなたの.mp3 | tr [:cntrl:] '\n' | bbe -e "s/\x0a\x5b\x4a//" | テール -n 4 | 頭 -n 1 | カット -d ':' -f 2 | カット -d '(' -f 1

于 2014-12-14T03:01:55.233 に答える
0

これは0800peter の回答とほぼ同じことを行いますが、bbe をインストールする必要はありません。基本的に、これはその回答を使いやすいインターフェースで書き直したものです。この回答は、 mplayer が途中で終了したというイベントも説明しています(のようにpkill mplayer)。

#!/bin/bash

# desc: Runs mplayer to play input file and returns seconds of playback when stopped
# input: 
#   arg1: path to audio file
#   arg2: pass either [seconds|timestamp]; default timestamp
# output: returns the timestamp or total seconds elapsed when playback stopped 
#   (ie. when mplayer terminated)
playAudioFile() {
    audioFile="$1"

    # if you need to modify mplayer switches, do so on the next line
    stopPos=$(mplayer "$audioFile" 2> /dev/null | tr [:cntrl:] '\n' | grep -P "A: +\d+\.\d\b" | tail -n1)

    # decide what to display
    if [ "$2" == "seconds" ]; then
        retval=$(awk '{print $2}' <<< "$stopPos")
    else
        retval=$(awk '{print $3}'  <<< "$stopPos" | tr -d '()')
    fi

    echo "$retval"
}

#example usage
path="$1"
stopPosition=$(playAudioFile "$path")
echo "$stopPosition"

私のスクリプトは、オーディオ ファイルへのパスをそのまま受け入れ、mplayer が (正常または異常に) 終了すると、タイムスタンプまたは経過秒数が返されます。タイムスタンプを受け取ることを選択した場合、タイムスタンプには、値がゼロのユニットのプレースホルダーがないことに注意してください。つまり、00:00:07.3 は 07.3 として返され、00:10:01.2 は 10:01.2 として返されます。
 

mplayer をバックグラウンドに送りたい場合はどうすればよいですか?

mplayer を起動してバックグラウンドに送り、この情報を照会できるようにしたい場合は、再生ステータス情報を追跡するために私が書いた bash スクリプトを参照してください。このスクリプトには と という 2 つの関数が組み込まれgetElapsedTimestampておりgetElapsedSeconds、どちらも mplayer が既に終了している場合でも再生時間を返します。これらの関数を使用するには、メディア ファイルを myplayMediaFile関数で開始する必要があります。この関数は、このように呼び出して mplayer を起動し、バックグラウンドに送信することができます ...

playMediaFile "path/to/your/file" &
于 2018-11-15T06:49:59.023 に答える