
ブラックボックスで前後の映像を同時に再生しようとしていますmpv
。
前後のビデオファイルはF
およびR
ディレクトリにあります。F
たとえば、ディレクトリ内のすべてのファイルをプレイリストに簡単に追加できます。
mpv F/*
一対の前面/背面ショットに対してPIPオーバーレイを実行することもできます。
mpv $front_video --external-file=$rear_video --lavfi-complex='[vid2] scale=640x360 [small]; [vid1] [small] overlay [vo]'
2つの組み合わせに問題があります。つまり、PIPオーバーレイのあるプレイリストが必要です。問題は、常に最初のビデオで後ろ姿を取得することです。
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
どんな提案がありますか?
答え1
本当にありがとうございます。私はビデオ比較ツールを作成し、Pythonを使って作業しています。必要な人のために同じbashコードをPythonで実装したものは次のとおりです。
使ったWindows 10とPython 2.7しかし、Linuxでは似ている必要があります。
# python 2.7, windows 10, test mpv
import os
import sys
import subprocess
RUNTIME_CWD = os.path.dirname(__file__)
MPV_EXE_PATH = [os.path.join(RUNTIME_CWD,"mpv","mpv.exe")] # the python script is located one dir above the mpv directory
FRONT_playlist = ['C:\\Users\\PC\\Videos\\test\\test_front1.mp4', 'C:\\Users\\PC\\Videos\\test\\test_front2.mp4']
REAR_playlist = ['C:\\Users\\PC\\Videos\\test\\test_rear1.mp4', 'C:\\Users\\PC\\Videos\\test\\test_rear2.mp4']
videos=""
# supressed the terminal output using, --no-terminal
for REAR_playlist, FRONT_playlist in zip(REAR_playlist,FRONT_playlist):
# picture in picture
videos += " --{{ {0} --no-terminal --external-file={1} --lavfi-complex=[vid2]scale=640x360[small];[vid1][small]overlay[vo] --}}".format(REAR_playlist, FRONT_playlist)
# top bottom
# videos += " --{{ {0} --no-terminal --external-file={1} --lavfi-complex=[vid2]scale=1920x1080[big];[big][vid1]vstack[vo] --}}".format(REAR_playlist,FRONT_playlist)
# side to side
# videos += " --{{ {0} --no-terminal --external-file={1} --lavfi-complex=[vid2]scale=1920x1080[big];[big][vid1]hstack[vo] --}}".format(REAR_playlist,FRONT_playlist)
subprocess.call([MPV_EXE_PATH[0]] + videos.split() + sys.argv[1:])
答え2
その一部は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 "$@"
vid1, vid2, ... vidN
- ビデオ入力vo
- 最終結果とも呼ばれるビデオ出力[vid2]scale=640x360[small]
- 「vid2」(最初の外部ビデオ)をインポートしてサイズを変更し、「小さい」として保存します。[vid1][small]overlay[vo]
- 「vid1」と「小」を重ねて「vo」として保存
ブラックボックスがファイルを保存する方法を見ると、すべてではなくてもほとんどのファイルを含める必要があります。オーバーレイフィルタは遅いので、代わりにまたはを使用してみることができますhstack
(vstack
ただし、両方のビデオは同じピクセルの高さである必要があります。つまり、通常はフロントビューと一致するようにリアビューを拡大する必要があります[vid2]scale=1920x1080[big];[big][vid1]hstack[vo]
)。 。