これら2つのコマンドを1つのスクリプトに結合するにはどうすればよいですか?
$ wget http://mymusic.store.com/musicfoo.mp3
#file gets saved as musicfoo.mp3
$ mplayer musicfoo.mp3
wgetはファイルのデフォルト名/拡張子(インターネットなど)を使用してファイルをディスクに保存しようとします。私の場合はmp3ファイルです。 mplayerはこのファイルをパラメータとして再生します。
これをスクリプトに統合する方法についてのアイデアはありますか?
答え1
ファイルを直接再生
これらのファイルを再生する前にダウンロードする必要はありませんmplayer
。mplayer
マニュアルページから:
抜粋
mplayer [options] [file|URL|playlist|-]
したがって、mplayerはURLを直接再生できます。
はい
$ mplayer http://mymusic.store.com/musicfoo.mp3
パフォーマンス
コンテンツをシームレスに再生するには、キャッシュ値を調整する必要がありますmplayer
。mplayer
これを達成するためのスイッチがあります。
mplayerのマニュアルページから
-cache <kBytes>
This option specifies how much memory (in kBytes) to use
when precaching a file or URL. Especially useful on slow media.
-cache-min <percentage>
Playback will start when the cache has been filled up to
<percentage> of the total.
だから、おそらくこれらの値を使用して状況に応じてシームレスな再生を得ることができます。
$ mplayer -cache 8000 -cache-min 30 http://mymusic.store.com/musicfoo.mp3
ダウンロードとプレイ
別の回答で議論された別の方法は、wget
ダウンロードを使用してファイルを再生することです。このアプローチの本質的な問題は、ファイルのダウンロードが完了した後にファイル名を再生することです。
mplayerへのカールパイプの接続
実際、このアプローチには2つの技術があります。最初は、またはwget
を使用してダウンロードを開始し、curl
データをmplayer
。
はい
$ wget http://mymusic.store.com/musicfoo.mp3 -O - | mplayer -
以前と同様に、ここからダウンロードをキャッシュすることもできます。
$ wget http://mymusic.store.com/musicfoo.mp3 -O - | mplayer -cache 8192 -
まずカールをしてからmplayerを使います。
別の方法は、ファイルをダウンロードして再生することです。これで、Bash機能を使用してそれをラップできます。これで、ファイルを完全にダウンロードして再生する2段階のプロセスになります。
はい
$ function smplayer() { wget $@ && mplayer $(basename $@); }
その後、ダウンロードしてプレイするには、次の機能を実行する必要があります。
$ smplayer http://mymusic.store.com/musicfoo.mp3
答え2
努力する:
wget http://mymusic.store.com/musicfoo.mp3 && mplayer musicfoo.mp3
&&
「左のコマンドが実行されると、正常にDone". これは、左のコマンドが非標準を分岐または使用しなかったと仮定します。終了ステータス価値。私はwgetが後者を実行しているかどうか疑い、そのスイッチを使用しない限り前者も-b
実行しないでください。
答え3
この試み:
mkdir /tmp/download_$$
cd /tmp/download_$$
wget http://mymusic.store.com/musicfoo.mp3
mplayer *
答え4
解決策があります。
fpath=$(basename "$1")
wget $1
mplayer $fpath
上記の問題は、.1
ファイル名がすでに存在する場合、wgetがダウンロードしたファイルにファイル名を割り当てる(最後に追加)ということです。したがって、fpathの値が正しいファイルではないと言うことができます。