UPDATE-2: Setelah mengirimkan skrip berikut, saya sadar bahwa cara lain untuk mengatur posisi waktu (dalam GUI) adalah dengan menggunakan Subtitle Editor (mis. gnome-subtitles
). Anda cukup mengeklik untuk menandai posisi awal dan akhir "subtitle hantu"; sebenarnya Anda dapat meletakkan path file dan komentar sebagai "subtitle" ... Beberapa format tidak cocok (mis. menggunakan nomor bingkai) .. 'ViPlay Subtitle File', Power DivX, dan tampilan 'Adobe Encore DVD' baik.
UPDATE-1; skrip baru ... Skrip ini tidak akan memberi Anda kemampuan daftar putar terintegrasi, tetapi skrip ini akan memungkinkan Anda untuk memilih dan menyimpan dan memodifikasi waktu awal dan akhir dalam Smplayer, tanpa perlu mengetik apa pun.
Info ini disimpan dalam file konfigurasi, path-file yang dapat "dimainkan" secara individual, atau dikelompokkan dalam urutan, melalui skrip lain (mirip dengan skrip 'play' saya, atau seperti skrip Emacs Anda) ..
Ia bekerja dengan memanfaatkan Seek
dialog Smplayer ... xmacro
memanipulasi dialog (saya telah menemukan bahwa itu membutuhkan sleep .3
antara perintah xmacro) ... Waktu disimpan dalam HH: MM: format SS dalam file di ~/.config/smplayer
... Baris pertama adalah Waktu mulai, baris ke-2 adalah Waktu-akhir, dan baris ke-3 ada untuk menentukan direktori root ... Baris ke-3 ini digunakan sebagai indikator jalur opsional oleh skrip berikut yang memodifikasi pengaturan konfigurasi smplayer dengan priming dengan -ss
dan -endpos
... File konfigurasi cap waktu dinamai sama dengan file media, dengan .smplay
akhiran ...
Jadi ini bukan semua yang Anda inginkan, tetapi mungkin membantu mengatur waktu tanpa mengetik ...
Berikut ini skrip 'dapatkan cap waktu':
#!/bin/bash
# Bind this script to a key-combination of your choice..
# It currently responds only to an Smplayer window.
id=$(xdotool getactivewindow)
title="$(xwininfo -id "$id" |
sed -n "2s/^xwininfo: Window id: \(0x[[:xdigit:]]\+\) \x22\(.*\)\x22$/\2/p")"
if [[ $title =~ ^.*\ -\ SMPlayer$ ]] ; then
smplayer_d="$HOME/.config/smplayer"
clip_d="$smplayer_d/clips"
[[ ! -d "$clip_d" ]] && mkdir -p "$clip_d"
bname="${title% - SMPlayer}"
clip_f="$clip_d/$bname.smplay" # Same name as video, with '.smplay' suffix
if [[ ! -f "$clip_f" \
|| "$(<"$clip_f" wc -l)" != "3" ]]
then # Prime with three defaults
# FROM TO ROOT-dir
echo -e "0:00:00\n0:00:00\n" >"$clip_f"
fi
# Get timestamp, in seconds, of current stream position (from the current window)
# using the "Smplayer - seek" dialog, via Ctrl+j
sleep .3; echo -n "KeyStrPress Control_L KeyStrPress j KeyStrRelease j KeyStrRelease Control_L" | xmacroplay -d 10 :0.0 &>/dev/null
sleep .3; echo -n " KeyStrPress Home KeyStrRelease Home " | xmacroplay -d 10 :0.0 &>/dev/null
sleep .3; echo -n "KeyStrPress Shift_L KeyStrPress End KeyStrRelease End KeyStrRelease Shift_L " | xmacroplay -d 10 :0.0 &>/dev/null
sleep .3; echo -n "KeyStrPress Control_L KeyStrPress c KeyStrRelease c KeyStrRelease Control_L" | xmacroplay -d 10 :0.0 &>/dev/null
sleep .3; echo -n " KeyStrPress Escape KeyStrRelease Escape " | xmacroplay -d 10 :0.0 &>/dev/null
seekHMS="$(xsel -o -b)"
# Now set config times to defaults (in case of malformed times)
ssHMS="0:00:00"
endposHMS="0:00:00"
# Now get config data from config file
eval "$( sed -ne "1s/^\([0-9]\+\):\([0-5][0-9]\):\([0-5][0-9]\)$/ ssHMS=\"&\"/p" \
-e "2s/^\([0-9]\+\):\([0-5][0-9]\):\([0-5][0-9]\)$/endposHMS=\"&\"/p" \
-e "3s/.*/ root_d=\"&\"/p" "$clip_f" )"
# Present dialog to set specifick items.
REPLY=$(zenity \
--list --height=310 --width=375 \
--title="Set Clip Start / End Time" \
--text=" Select Clip Start / End for time: $seekHMS\n\
or choose another option\n\
\tthen click OK" \
--column="Position" --column=" " --column="Current Setting " \
"Clip Start" " " "$ssHMS" \
"Clip End" " " "$endposHMS" \
"UNSET Start" " " " " \
"UNSET End" " " " " \
"* Open directory" " of" "config files *"
);
[[ "$REPLY" == "Clip Start" ]] && sed -i -e "1 s/.*/$seekHMS/" "$clip_f"
[[ "$REPLY" == "Clip End" ]] && sed -i -e "2 s/.*/$seekHMS/" "$clip_f"
[[ "$REPLY" == "UNSET Start" ]] && sed -i -e "1 s/.*/0:00:00/" "$clip_f"
[[ "$REPLY" == "UNSET End" ]] && sed -i -e "2 s/.*/0:00:00/" "$clip_f"
[[ "$REPLY" == "* Open directory" ]] && nautilus "$clip_d"
fi
Skrip berikut adalah skrip 'play "asli saya. Ini tidak tergantung pada skrip Timestamp avove, tetapi tidak perlu banyak untuk membuat mereka bekerja bersama ...
Ini akan 'mengarahkan' Smplayer, yang menggunakan mplayer secara internal .. itu, setidaknya, adalah GUI normal, tetapi daftar putar Anda harus ada di editor teks Anda .. dan Anda jelas sudah tahu tentang metode itu :)
Saya sudah mencoba ini beberapa tahun yang lalu, tetapi saya sudah lupa semua itu karena saya tidak sering membutuhkan hal seperti itu, tetapi bagus untuk menyimpan "bookmark" .. Saya senang Anda telah menghidupkan kembali ide itu. Ini adalah skrip ... yang benar-benar hanya melakukan hal yang sama seperti yang telah Anda lakukan, tetapi untuk Smplayer (seorang mplayer GUi)
#
# Summary:
# Play one video (only) in 'smplayer', passing -ss and -endpos values to 'mplayer'
# It uses 'locate' to get the path of the video (by just its basename)
#
# eg:
# $1 $2 $3 $4
# basename -ss -endpos root
# "Titus - The Gorilla King.mp4" 240 30 "$HOME" # A fascinating documentary of the long reign of a silver-back gorialla
#
[[ "$2" == "" ]] && set "$1" 0 "$3" "$4"
[[ "$3" == "" ]] && set "$1" "$2" 36000 "$4" # 36000 is arbitary (24 hours)
[[ "$4" == "" ]] && root="$HOME" || root="$4"
file=( "$(locate -er "^$root/\(.*/\)*\+$1$")" )
# 1) Tweak 'smplayer.ini' to run 'mplayer' with the specified -ss and -endpos times
# 2) Run 'smplayer' to play one video only. The time settings will hold afer exit,
# so the script waits (backgrounded) for smplayer to exit
# 3) When 'smplayer' exits, set values to extreme limits: -ss 0 -endpos 3600
# or(?): TODO remove the settings enitrely,
# but that requires a different regex
a=0 z=36000
#
# -ss <time> (also see -sb)
# -ss 56 # Seeks to 56 seconds.
# -ss 01:10:00 #Seeks to 1 hour 10 min.
#
# -endpos <[[hh:]mm:]ss[.ms]|size[b|kb|mb]> (also see -ss and -sb)
# Stop at given time or byte position.
# NOTE: Byte position is enabled only for MEncoder and will not be accurate, as it can only stop at a frame boundary.
# When used in conjunction with -ss option, -endpos time will shift forward by seconds specified with -ss.
# -endpos 56 # Stop at 56 seconds.
# -endpos 01:10:00 # Stop at 1 hour 10 minutes.
# -ss 10 -endpos 56 # Stop at 1 minute 6 seconds.
# -endpos 100mb # Encode only 100 MB.
#
# -ss 0 -endpos 36000
# \1 \2 \3 \4 \5 \6 \7 \8
sed -i -e "s/^\(mplayer_additional_options.*\)\( \|=\)\(-ss \+\)\([^ ]\+\)\( .*\)\(-endpos \+\)\([0-9:mb]\+\)\(.*\)/\1\2\3${2}\5\6${3}\8/" $HOME/.config/smplayer/smplayer.ini
(smplayer "$file"
sed -i -e "s/^\(mplayer_additional_options.*\)\( \|=\)\(-ss \+\)\([^ ]\+\)\( .*\)\(-endpos \+\)\([0-9:mb]\+\)\(.*\)/\1\2\3${a}\5\6${z}\8/" $HOME/.config/smplayer/smplayer.ini
)
exit
flag
tombol pada pertanyaan Anda dan minta dimigrasi.