종속성:

종속성:

시청을 마친 영상에 기본 엠블럼을 추가하고 싶어요. 비디오 재생이 완료된 경우 스크립트를 실행하는 간단하고 수동이 아닌 방법이 있습니까? 모든 Linux(mint/ubuntu) 비디오 플레이어에 사용할 수 있습니다.

답변1

vlc --play-and-exit video.mp4 && echo "Terminated"

echo "Terminated"실행하려는 실제 명령으로 대체하십시오 . 이는 &&vlc가 오류 코드와 함께 종료되면 명령이 실행되지 않음을 의미합니다. 오류가 발생하더라도 명령을 실행하려면

vlc --play-and-exit video.mp4; echo "Terminated"

vlc에 더 많은 파일을 제공하면 명령이 실행됩니다.모든 미디어가 재생되면. 예를 들어,

vlc --play-and-exit s0.mp3 s1.mp4 && shutdown now

이는 두 파일이 재생된 후 시스템이 즉시 종료됨을 의미합니다.

당신이 원한다면~에 대한 조치를 수행하다재생된 파일, 다음 쉘 스크립트를 사용할 수 있습니다(라고 부르겠습니다 play.sh).

#!/bin/sh
for file in "$@"; do
    vlc --play-and-exit "$file"
    echo "File $file has been played."
done

그런 다음 다양한 파일에서 실행하십시오.

sh play.sh file1.mp3 'Me & You.mp4' 'file 3.wav'

적절한 경우 파일을 인용하는 것을 잊지 마십시오(특히 공백 및 특수 문자(예 &: *, 등)).


플래그 --play-and-exit는 에서도 사용할 수 있습니다 cvlc.

답변2

제가 요청한 이후로 제가 생각해낸 빠른 래퍼 기반 해킹을 공유하고 싶다고 생각했습니다. 다음 VLC 래퍼를 만들고 VLC가 아닌 직접 열 수 있는 비디오 파일을 설정했습니다. 한 번에 하나의 파일만 지원합니다. 파일을 재생하면서 vlc에서 움직이는 것이 끝까지 간다면, tag watched영상의 약 60%를 시청했다면 마지막에 명령을 실행하게 됩니다.

#!/bin/bash
#This depends on the cli interface having been activated in the preferences
# This while loop feeds the `get_length` vlc cli command to cli every 0.1 s
(while :; do echo get_length; sleep 0.1 ; done) | 
#Pass all arguments to vlc and set it up to be fed from the `get_length` while loop
/usr/bin/vlc "$@" |
ruby  -n -e '
    BEGIN { 
    cons_empty=0
    nlines_read=0
  }
    #Strip vlc cli noise
    $_=$_.sub(/^[> ]*/,"")
    #Watch consecutive (cons) empty lines
    if $_.match(/^\s*$/) 
      cons_empty += 1
    else
      #Assume each nonempty stdin line is the duration
      duration = $_.chomp.to_i
      cons_empty = 0
      nlines_read += 1
    end
    #On 10 consecutive empty lines, assume the file has finished playing
    if cons_empty == 10
      time_watched = nlines_read * 0.1
      p time_watched: time_watched, duration: duration
      ret = (time_watched > 0.6 * duration) ? 1 : 0
      exit ret
    end
    ' ||
tag watched "$@" #1 exit means finished watching

아름다운 코드라기보다는 효과가 있지만, 단지 성가심을 빠르게 해결하는 방법일 뿐입니다.

종속성:

bash, ruby, +를 tag watched실제 태그 지정 명령으로 바꾸세요.

관련 정보