ACTUALIZACIÓN-2: Después de enviar el siguiente script, me di cuenta de que otra forma de configurar las posiciones de tiempo (en una GUI) es usar un Editor de subtítulos (por ejemplo gnome-subtitles
). Puede hacer clic para marcar las posiciones inicial y final de los "subtítulos fantasmas"; en realidad, puede poner su ruta de archivo y comentarios como "subtítulo" ... Algunos formatos no son adecuados (por ejemplo, usando números de fotogramas) ... 'ViPlay Subtitle File', Power DivX y 'Adobe Encore DVD' bueno.
ACTUALIZACIÓN-1; un nuevo script ... Este script no le dará la capacidad de una lista de reproducción integrada, pero le permitirá seleccionar y guardar y modificar los tiempos de inicio y finalización dentro de Smplayer, sin la necesidad de escribir nada.
Esta información se guarda en un archivo de configuración, cuyas rutas de archivo se pueden "reproducir" individualmente o agrupadas en una secuencia, a través de otro script (similar a mi script 'play', o como sus scripts Emacs).
Funciona utilizando el Seek
diálogo de Smplayer ... xmacro
manipula el diálogo (descubrí que necesita sleep .3
entre comandos xmacro) ... Los tiempos se almacenan en formato HH: MM: SS en un archivo en ~/.config/smplayer
... La primera línea es el Hora de inicio, la segunda línea es la Hora de finalización, y la tercera línea está ahí para especificar un directorio raíz ... Esta tercera línea se utiliza como un indicador de ruta opcional por el script de seguimiento que modifica una configuración de configuración de muestra mediante imprimándolo con -ss
y -endpos
... El archivo de configuración de marcas de tiempo se llama igual que el archivo de medios, con un .smplay
sufijo ...
Entonces, esto no es todo lo que desea, pero puede ayudarlo a configurar los tiempos sin tener que escribir ...
Aquí está el script 'obtener marcas de tiempo':
#!/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
El siguiente script es mi scrpt original 'play ". Es independiente del script de evitar Timestamp, pero no tomaría mucho para que trabajen juntos ...
Conducirá a Smplayer, que usa mplayer internamente ... es, al menos, una GUI normal, pero tu lista de reproducción debería estar en tu editor de texto ... y obviamente ya conoces ese método :)
Intenté esto hace un par de años, pero me había olvidado por completo, ya que a menudo no necesito tal cosa, pero es bueno mantener "marcadores". Me alegra que hayas resucitado la idea. Aquí está el script ... que realmente solo hace lo mismo que has estado haciendo, pero para Smplayer (una GUi de mplayer)
#
# 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
botón en su pregunta y solicite que se migre.