mpv
如何使用 「mpv」這個指令
先執行「man mpv」
可以看到下面這一段
SYNOPSIS
mpv [options] [file|URL|PLAYLIST|-]
mpv [options] files
大概就可以了解,如何給參數。
播放單一檔案
執行下面指令,就可以透過「mpv」來播放「demo.mp3」這個檔案。
$ mpv demo.mp3
執行下面指令,就可以透過「mpv」來播放「demo.mp4」這個檔案。
$ mpv demo.mp4
以上是使用「相對路徑」,也可以採用「絕對路徑」
例如
$ mpv ~/Video/demo.mp4
或是
$ mpv $HOME/Video/demo.mp4
或是
$ mpv /home/user/Video/demo.mp4
播放遠端檔案
透過「mpv」,也可以播放遠端的檔案,例如:透過「http」。
可以先在自己的機器測試,
先在剛剛的「demo.mp3」上的資料夾,執行下面指令
$ php -S localhost:8080
然後執行下面指令,來播放。
$ mpv http://localhost:8080/demo.mp3
註: 關於「Streaming media(串流媒體)」的議題,我尚未深究, 以上只是舉例,用來說明「mpv」後面可以接「網址」, 其他深入的技術細節,就需要另外再研究了。
關於「PHP Built-in web server」的用法,我在「這篇」和「這篇」有提到, 另外也可以採用「python2」或「python3」來起一個簡易的「http server」。
播放「Youtube」上的影片。
而「mpv」也支援播放「Youtube」上的影片,就不需要在瀏覽器上觀看了。
以下面這個網址為例
https://www.youtube.com/watch?v=AGW40bNJ-xk
可以執行下面指令,就會播放上面網址的影片了。
$ mpv https://www.youtube.com/watch?v=AGW40bNJ-xk
播放多個檔案或網址
執行下面指令,就可以播放多個檔案
$ mpv demo_001.mp3 demo_002.mp3 demo_003.mp3
執行下面指令,就可以播放多個「Youtube」上的影片
$ mpv https://www.youtube.com/watch?v=AGW40bNJ-xk https://www.youtube.com/watch?v=Lqe3MuCyh9o
上面的指令,也可以拆成多行的方式
$ mpv \
https://www.youtube.com/watch?v=AGW40bNJ-xk \
https://www.youtube.com/watch?v=Lqe3MuCyh9o
播放「playlist」
也可以將剛剛要播放的檔案,編成一個檔案叫做「demo.m3u」,
內容如下
https://www.youtube.com/watch?v=AGW40bNJ-xk
https://www.youtube.com/watch?v=Lqe3MuCyh9o
然後就可以執行下面指令播放上面兩個檔案
$ mpv demo.m3u
我本來以為副檔名可以任意使用,結果我使用「demo.txt」就會出現下面提到的訊息
執行
$ mpv demo.txt
顯示
Playing: demo.txt
Failed to recognize file format.
Exiting... (Errors when loading file)
所以指令,要改成以下的下法,就可以成功播放了
執行
$ mpv --playlist=demo.txt
至於「m3u」或「m3u8」,上面只是簡易的格式, 進一步的內容格式,請參考「Wi / M3U (中文頁面)」, 以下討論到「smplayer」的時候,會再度提到「M3U」。
播放遠端的「m3u檔」
再來做個有趣的測試,
產生一個檔案叫做「remote.m3u」,內容一樣是剛剛「demo.m3u」的內容
可以執行下面指令來產生「remote.m3u」
cat > remote.m3u << EOF
https://www.youtube.com/watch?v=AGW40bNJ-xk
https://www.youtube.com/watch?v=Lqe3MuCyh9o
EOF
或是執行下面指令來產生「remote.m3u」
echo 'https://www.youtube.com/watch?v=AGW40bNJ-xk
https://www.youtube.com/watch?v=Lqe3MuCyh9o
' > remote.m3u
上面的技巧,可以參考「這篇」。
然後執行下面指令,起一個簡易的「http server」。
$ php -S localhost:8080
接下來就可以執行
$ mpv http://localhost:8080/remote.m3u
然而我們也可以再產生一個檔案「local.m3u」,內容如下
http://localhost:8080/remote.m3u
可以執行下面指令產生「local.m3u」
cat > local.m3u << EOF
http://localhost:8080/remote.m3u
EOF
然後執行下面指令,播放「local.m3u」
$ mpv local.m3u
就會看到
Playing: local.m3u
Playing: http://localhost:8080/remote.m3u
Playing: https://www.youtube.com/watch?v=AGW40bNJ-xk
...略...
注意事項
- 有時候「mpv」無法播放「youtebe影片」,請先確認網址是否存在, 再來則是可以執行「youtube-dl –update」更新「youtube-dl」。
- 關於「mpv」支援的不只是「YouTube」,可以參考「這一頁」瞭解支援的網站, 例如,也有支援「Twitch」,所以也可以執行「mpv $twitch_url」。