MPV에서 후방 및 전방 대시캠 비디오 재생 목록을 재생할 수 있습니까?

MPV에서 후방 및 전방 대시캠 비디오 재생 목록을 재생할 수 있습니까?

블랙박스에서 전후방 영상을 동시에 재생하려고 합니다 mpv.

전후 비디오 파일은 FR디렉토리에 있습니다. F예를 들어 디렉토리의 모든 파일을 재생 목록에 쉽게 추가할 수 있습니다 .

mpv F/*

또한 한 쌍의 전면/후면 샷에 대해 PIP 오버레이를 실행할 수도 있습니다.

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

두 가지를 결합하는 데 문제가 있습니다. 즉, 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으로 구현한 내용은 다음과 같습니다!

나는 사용했다윈도우 10과 파이썬 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"과 "small"을 겹쳐서 "vo"로 저장

블랙박스가 파일을 저장하는 방법을 살펴보면 전부는 아니더라도 대부분의 파일을 포함해야 합니다. 오버레이 필터는 느리므로 대신 hstack또는를 사용해 볼 수 있습니다 vstack(그러나 두 비디오 모두 동일한 픽셀 높이여야 합니다. 즉, 일반적으로 전면 보기와 일치하도록 후면 보기를 확대해야 함을 의미합니다 [vid2]scale=1920x1080[big];[big][vid1]hstack[vo]). .

관련 정보