파일을 한 번 다운로드하여 여러 번 재생

파일을 한 번 다운로드하여 여러 번 재생

mplayer를 사용하여 터미널에서 YouTube 비디오를 반복하고 싶습니다. 이를 위해 다음 코드를 작성했습니다.

#!/bin/bash

if [[ $(echo $*) ]]; then
    searchterm="$*"
else
    read -p "Enter the video ID: " searchterm
fi

searchterm=$(echo $searchterm | sed -e 's/\ /+/g')

video=$(youtube-dl -g https://youtube.com/v/$searchterm)

while true; 
do 
    mplayer $video
    sleep 2; 
done

비디오를 재생하려면 스크립트에 비디오 ID를 제공해야 합니다. 예를 들어, 지금 보고 있는 동영상이 다음과 같다면:https://www.youtube.com/watch?v=daQhI1JFXn4v=그럼 영상ID는 후반부죠daQhI1JFXn4

반복될 때마다 비디오를 다운로드한다는 점을 제외하면 모든 것이 잘 작동합니다. 파일이 한 번만 다운로드되어 계속해서 재생되도록 이를 변경할 수 있는 방법이 있는지 궁금합니다.

답변1

나는 이것으로 더 잘 작동하는 것을 찾았 지만 avplay(원한다면 교체할 수 있음 ffplay) mplayer로 남겨두겠습니다. tee-파일에 저장하고 처음 재생할 때 유효하도록 파이프하십시오. 이전에 파일이 다운로드되었는지 확인하기 위해 검사를 추가했습니다.

#!/bin/bash

if [[ $(echo $*) ]]; then
    searchterm="$*"
else
    read -p "Enter the video ID: " searchterm
fi

searchterm=$(echo $searchterm | sed -e 's/\ /+/g')

video=$(youtube-dl -g https://youtube.com/v/$searchterm)

[[ -f $searchterm.mp4 ]] || wget -O - $video 2>/dev/null | tee $searchterm.mp4 | mplayer -

while true; 
do
    sleep 2;
    mplayer $searchterm.mp4
done

답변2

리디렉션을 통해 YouTube-dl의 출력을 파일에 저장합니다. 명령 자체를 비디오 변수에 저장하는 대신.

관련 정보