依賴項:

依賴項:

我想將預設標誌新增到我已看完的影片中。如果影片播放完畢,是否有任何直接、非手動的方式來運行腳本?可用於任何 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

表示兩個檔案播放完畢後系統立即關機。

如果你想執行某項操作每個文件已播放,您可以使用這個 shell 腳本(我們稱之為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為您的實際標記命令。

相關內容