Shell-Script

我可以在 MPV 中播放前後行車記錄儀影片的播放列表嗎?

  • June 10, 2020

我正在嘗試同時播放來自行車記錄儀的前後鏡頭作為mpv.

前後影片文件位於FR目錄中。F我可以輕鬆地將 eg目錄中的所有文件添加到播放列表中:

mpv F/*

我還可以為一對前後鏡頭執行畫中畫疊加:

mpv $front_video --external-file=$rear_video --lavfi-complex='[vid2] scale=640x360 [small]; [vid1] [small] overlay [vo]'

我無法將兩者結合起來,即我想要一個畫中畫疊加的播放列表。問題是我總是從第一個影片中看到後視圖:

mpv \
   REC_200607-175943F.MOV --external-file=../R/REC_200607-175943R.MOV --lavfi-complex='[vid2] scale=640x360 [small]; [vid1] [small] overlay [vo]' \
   GSR_200607-180444F.MOV --external-file=../R/GSR_200607-180444R.MOV --lavfi-complex='[vid2] scale=640x360 [small]; [vid1] [small] overlay [vo]' \
   GSR_200607-180943F.MOV --external-file=../R/GSR_200607-180943R.MOV --lavfi-complex='[vid2] scale=640x360 [small]; [vid1] [small] overlay [vo]'

第一次覆蓋,一切都很好: 在此處輸入圖像描述

第二個覆蓋,從第一個播放後視圖: 在此處輸入圖像描述

現在,我正在使用一個腳本,該腳本mpv在第一個影片退出後立即為下一對影片執行,這樣我就可以從頭到尾觀看所有影片,但我錯過了諸如跳轉到上一個/下一個影片、檢查在哪裡的功能我是播放列表,設置播放速度、音量、對比度等。此外,在播放中間停止很麻煩,因為退出一個mpv實例會執行下一個實例:

#!/bin/sh
for front in $(ls -tr); do
   rear=../R/${front/F./R.}
   mpv $front --external-file=$rear --lavfi-complex='[vid2] scale=640x360 [small]; [vid1] [small] overlay [vo]'
done

有什麼建議麼?

MPV 文件的一部分既與過濾器也與播放列表無關,但描述了允許確切所需內容的使用--{和分組選項。--}

在下面的播放列表中執行覆蓋的工作腳本。將其保存在一個文件中,使其可執行(chmod u+x file_name),如果您的行車記錄儀與我的命名約定相同,請在F目錄中執行它:

#!/bin/sh

videos='' 

for front in $(ls -tr); do
   rear=../R/${front/F./R.}
   videos+=" --{ $front --external-file=$rear --lavfi-complex=[vid2]scale=640x360[small];[vid1][small]overlay[vo] --}"
done

exec mpv $videos "$@"

查看行車記錄儀如何儲存文件,如果不是全部,它應該涵蓋大部分文件。請注意,疊加過濾器很慢,因此您可能想嘗試使用hstackorvstack代替(但是兩個影片需要具有相同的像素高度,這通常意味著您需要放大後視圖以匹配前視圖,例如[vid2]scale=1920x1080[big];[big][vid1]hstack[vo])。

引用自:https://unix.stackexchange.com/questions/591694