mp3 파일 다운로드 후 바로 재생

mp3 파일 다운로드 후 바로 재생

이 두 가지 명령을 하나의 스크립트로 결합하려면 어떻게 해야 합니까?

$ 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에 컬 파이프 연결

실제로 이 접근 방식에는 두 가지 기술이 있습니다. 첫 번째는 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이 다운로드한 파일에 파일 이름을 할당(끝에 a 추가)한다는 것입니다. 따라서 fpath의 값이 올바른 파일이 아니라고 말할 수 있습니다.

관련 정보