เพลย์ลิสต์วิดีโอที่มีเวลาเริ่มต้นและสิ้นสุด


10

มีแอพพลิเคชั่น GUI ที่ดี (เช่น mplayer GUI หรืออะไรบางอย่างเช่น banshee) สำหรับ linux ซึ่งอนุญาตให้สร้างและแก้ไขเพลย์ลิสต์ (สำหรับไฟล์วิดีโอ) ด้วยเวลาเริ่มและหยุดที่แตกต่างกันสำหรับวิดีโอแต่ละรายการ?

เพิ่ม :

ในขณะนี้ฉันสร้างไฟล์ด้วยตนเองซึ่งมีบางสิ่งเช่นนั้น:

video.avi -ss 2440 -endpos 210
#some comment

video2.mp4 -ss 112 -endpos 2112

จากนั้นฉันก็มีสคริปต์ตัวห่อสำหรับ: mplayer -fs $(grep -v "^ #" $1)

นอกจากนี้ฉันได้เขียนฟังก์ชั่น emacs ซึ่งทำให้การแก้ไขไฟล์ดังกล่าวง่ายขึ้นเล็กน้อย (เช่นการแปลงเวลาเริ่มต้นและสิ้นสุดจากรูปแบบ hh: mm: ss เป็นวินาทีและ endtime เป็นตำแหน่งสัมพัทธ์ (endtime - starttime) ตามที่ต้องการโดย -endpos (ฉันสามารถโพสต์มาโครได้ถ้ามีคนสนใจ) อย่างไรก็ตามมันก็อึดอัดเกินไป ดังนั้นคำถามของฉันคือถ้ามี GUI ที่ดีสำหรับการทำเช่นนี้ (ตัวอย่างซึ่งช่วยให้คุณทำเครื่องหมายในไทม์ไลน์ของวิดีโอเวลาเริ่มต้นและสิ้นสุดสำหรับเพลย์ลิสต์และอื่น ๆ )


@ user5289: หากคุณสนใจเฉพาะคำตอบสำหรับ Ubuntu (คุณไม่ได้กล่าวถึงการแจกจ่ายในคำถามของคุณ) คุณสามารถเลือกไซต์ที่จะถามได้ หากคุณต้องการถาม Ubuntu ให้ใช้flagปุ่มบนคำถามของคุณและขอให้ทำการโยกย้าย
Gilles 'หยุดความชั่วร้าย'

1
@ user5289 ทั้งหมดที่คุณต้องการ .. เพื่อให้สามารถเล่นวิดีโอใน GUI (เพราะ 'mplayer' ไม่ใช่ GUI อย่างแน่นอน) ... หรือคุณต้องการที่จะสามารถตั้งค่าตำแหน่งเวลาใน GUI (เช่น)? .. เพราะคุณสามารถใช้ Smplayer เพื่อใช้คำสั่ง "หมดเวลา" ที่มีอยู่ของคุณ .. ฉันได้เขียนสคริปต์เพื่อทำอย่างนั้น .. ฉันจะโพสต์สคริปต์เป็นและตอบ .. บางคนอาจพบว่ามีการแทรกแซง .. แน่นอน ค้นพบวิธีการของคุณที่น่าสนใจ .. และฉันเพิ่งปรับใช้กับ Smplayer ..
Peter.O

@ fred.bear ใช่ประเด็นคือว่าฉันต้องการที่จะสามารถกำหนดตำแหน่งเวลาใน GUI แก้ไขเพลย์ลิสต์ทั้งหมดใน GUI อย่างสะดวกสบาย (การเล่นใน GUI นั้นไม่สำคัญ)
นักเรียน

@ user5289: มันค่อนข้างเป็นไปได้ที่จะกำหนดตำแหน่งเวลาใน GUI ... ฉันทำกับ Smplayer .... ฉันได้เพิ่มtimestampsสคริปต์ใหม่ในคำตอบเดิมของฉันซึ่งแสดงเพียงplay-it-in-Smplayerสคริปต์
Peter.O

คำตอบ:


3

บางทีฉันอาจจะถามคำถามผิดเพราะภาษาอังกฤษไม่ใช่ภาษาแรกของฉัน แต่มันจะดีกว่าไหมถ้าคุณแก้ไขวิดีโอด้วยเครื่องมืออย่างKinoแทนที่จะสร้างเพลย์ลิสต์แบบนั้น

คุณสามารถปรับเวลาเริ่มและหยุดตามที่คุณต้องการและฉันไม่คิดว่ามันจะเป็นเรื่องยาก


2
ใช่ฉันรู้วิธีตัดวิดีโอโดยใช้ Kino หรืออะไรทำนองนั้น คำถามเกี่ยวกับเพลย์ลิสต์ไม่ใช่เกี่ยวกับการสร้างวิดีโอใหม่ การสร้างเพลย์ลิสต์ดังกล่าวนั้นจะเร็วมากยืดหยุ่นและสิ้นเปลืองเนื้อที่ดิสก์เพิ่มเติม
นักเรียน

3

UPDATE-2: หลังจากส่งสคริปต์ต่อไปนี้ฉันพบว่าอีกวิธีหนึ่งในการตั้งค่าตำแหน่งเวลา (ใน GUI) คือการใช้ตัวแก้ไขคำบรรยาย (เช่นgnome-subtitles) คุณสามารถคลิกเพื่อทำเครื่องหมายตำแหน่งเริ่มต้นและสิ้นสุดของ "คำบรรยายภาพหลอน"; จริงๆแล้วคุณสามารถใส่เส้นทางไฟล์และความคิดเห็นของคุณเป็น "คำบรรยาย" ... บางรูปแบบไม่เหมาะ (เช่นใช้หมายเลขเฟรม) .. 'ไฟล์ ViPlay คำบรรยาย', Power DivX, และ 'Adobe Encore DVD' ดี.

UPDATE-1; สคริปต์ใหม่ ... สคริปต์นี้จะไม่ให้ความสามารถในการรวมเพลย์ลิสต์แก่คุณ แต่จะช่วยให้คุณสามารถเลือกและบันทึกและแก้ไขเวลาเริ่มต้นและสิ้นสุดภายใน Smplayer โดยไม่จำเป็นต้องพิมพ์อะไรเลย

ข้อมูลนี้ถูกบันทึกไว้ในไฟล์ปรับแต่งพา ธ ไฟล์ซึ่งสามารถ "เล่น" ทีละรายการหรือจัดกลุ่มตามลำดับผ่านสคริปต์อื่น (คล้ายกับสคริปต์ 'เล่น' ของฉันหรือสคริปต์สคริปต์ของ Emacs) ..

มันใช้งานได้โดยใช้Seekกล่องโต้ตอบของ Smplayer ... xmacroจัดการกับกล่องโต้ตอบ (ฉันพบว่าต้องการsleep .3ระหว่างคำสั่ง xmacro) ... เวลาจะถูกเก็บไว้ในรูปแบบ HH: MM: SS ในไฟล์ใน~/.config/smplayer... บรรทัดที่ 1 คือ Start-time, บรรทัดที่ 2 คือ End-time, และบรรทัดที่ 3 มีไว้สำหรับระบุไดเรกทอรีรูท ... บรรทัดที่ 3 นี้ใช้เป็นตัวบ่งชี้พา ธ เสริมโดยสคริปต์ folow-up ซึ่งปรับเปลี่ยนการตั้งค่า smplayer โดย เตรียมไว้พร้อมกับ-ssและ-endpos... ไฟล์กำหนดค่าการประทับเวลามีชื่อเหมือนกับไฟล์มีเดียโดยมี.smplayคำต่อท้าย ...

ดังนั้นนี่ไม่ใช่ทุกสิ่งที่คุณต้องการ แต่มันอาจช่วยในการตั้งค่าเวลาโดยไม่ต้องพิมพ์ ...

นี่คือสคริปต์ 'get timestamps':

#!/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  

สคริปต์ต่อไปนี้คือ scrpt 'เล่น' ดั้งเดิมของฉันมันเป็นอิสระจากสคริปต์ Timestamp ที่มีความรุนแรง แต่ไม่ต้องใช้เวลามากในการทำงานร่วมกัน ...

มันจะ 'ขับ' Smplayer ซึ่งใช้ mplayer ภายใน .. อย่างน้อยก็เป็น GUI ปกติ แต่เพลย์ลิสต์ของคุณจะต้องอยู่ใน text editor ของคุณ .. และคุณก็รู้วิธีการนี้อยู่แล้ว :)

ฉันลองสิ่งนี้เมื่อสองสามปีก่อน แต่ฉันลืมไปหมดเลยเพราะฉันไม่ต้องการสิ่งนั้นบ่อยนัก แต่มันเป็นการดีที่จะเก็บ "บุ๊กมาร์ก" ไว้ฉันดีใจที่คุณฟื้นความคิดขึ้นมาใหม่ . นี่คือสคริปต์ ... ซึ่งทำสิ่งเดียวกับที่คุณทำ แต่กับ Smplayer (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

ขอบคุณสำหรับการอัพเดท. คุณสามารถเพิ่มวิธีการใช้สคริปต์ทีละขั้นตอนได้หรือไม่
นักเรียน

@ user5289 มันควรจะต้องการให้คุณเปิด smplayer กับวิดีโอของคุณเท่านั้นและสคริปต์นั้นเชื่อมโยงกับคีย์ลัด (ฉันใช้ xbindkey แต่ไม่มีอะไรจะทำ) .. คุณสามารถกดปุ่มลัดได้ทุกเวลา - คีย์ .. เนื่องจากมันใช้แมโครที่ไม่เกี่ยวข้องกับ smplayer คุณไม่ควรทำอะไร (คลิกแป้นพิมพ์หรือเมาส์) จนกว่าไดอะล็อกที่สองจะปรากฏขึ้น ต้องใช้เวลา 1-2 วินาทีในการตรวจสอบ "นี่เป็นหน้าต่างที่ถูกต้องหรือไม่" และ "เปิดกล่องโต้ตอบ" ค้นหาข้อความโต้ตอบ "ซึ่งผู้คัดลอกจะคัดลอกตำแหน่งเวลาปัจจุบันซึ่งแสดงใน HH: MM: SS .. อย่าขัดจังหวะกล่องโต้ตอบนี้ ...
Peter.O

ดำเนินการต่อ ... แมโครจะคัดลอกการประทับเวลาไปยังคลิปบอร์ดแล้วปิด "ไดอะล็อกการค้นหา" .. กล่องโต้ตอบที่สองจะปรากฏขึ้น (กล่องโต้ตอบ "Zenity") ... มันจะแจ้งให้คุณทำ 1 จาก 5 สิ่ง 1) ใช้การประทับเวลาที่บันทึกไว้เป็นตำแหน่งเริ่มต้น 2) ใช้การประทับเวลาที่บันทึกไว้เป็นตำแหน่งสิ้นสุด 3) ยกเลิกการกำหนดตำแหน่งเริ่มต้น 4) ยกเลิกการกำหนดตำแหน่งสิ้นสุด 5) เปิดหอยโข่งที่ไดเรกทอรีซึ่งเก็บไฟล์ "config" ที่บันทึกไว้ไฟล์กำหนดค่าจะตั้งชื่อเหมือนกันกับวิดีโอ (ชื่อนี้ถูกจับจากแถบชื่อของ Smplayer) ..
Peter.O

ดำเนินการต่อ ... จากนั้นคุณสามารถใช้เวลาตามที่คุณต้องการในสคริปต์ปัจจุบันของคุณ ... ฉันกำลังทำงานกับสคริปต์ที่ทำงานร่วมกับ Smplayer; สคริปต์ smplayer ตัวแรกของฉัน (แสดงในคำตอบต้นฉบับ) ค่อนข้างไร้เดียงสาและเดินทางไปกับตัวเลือกบางอย่าง .. Smplayer มีตัวเลือกเพื่อเก็บประวัติของไฟล์ทุกไฟล์ที่เคยเล่น สิ่งนี้สามารถทำได้ในไฟล์เดียวหรือไฟล์แต่ละไฟล์ ... วิธีการของแต่ละไฟล์ (ค่าเริ่มต้นฉันคิดว่า (?) เป็นวิธีที่เหมาะสมที่สุด แต่ชื่อ. ini นั้นแฮชฉันกำลังทำงานเกี่ยวกับการเลียนแบบที่มี ขั้นตอนวิธีการ ... เพื่อติดตามความคืบ :)
Peter.O

ดำเนินการต่อ ... คุณจะต้องติดตั้งแอปเหล่านี้ .. xdotool xwininfo xmacro zenity sed(แต่ใครยังไม่เคยเบื่อ :) และแน่นอนsmplayer... ตามที่ฉันพูดถึงคำตอบของฉัน .. มันเป็นเพียง 'ผู้ช่วย' .. จนถึงตอนนี้ แต่เมื่อคิดถึงตอนนี้เมื่อฉันเขียนสิ่งนี้มันสามารถที่จะต่อกิ่งเข้าไปในเพลย์ลิสต์ตัวเล่นธรรมดาได้! เพราะเพลย์ลิสต์จะเล่นตามไฟล์. smini ของ save smplayer (ไฟล์ที่มี hashed filenames) .. นี่มันดูดีกว่าและดีกว่า .. แต่ฉันต้องการหยุดพักอย่างจริงจัง :) .. smplayer มากเกินไปสักสองสามวัน ฉันยังต้องทำอัลกอริธึมการแฮชให้เสร็จสิ้น
Peter.O

2

ฉันได้เพิ่มคำตอบที่สองนี้เพราะมันทำงานเป็นเพลย์ลิสต์ปกติใน SMPlayer และดีกว่าที่นี่เพื่อความชัดเจน ...

ฉันได้ทำงานอย่างไม่มีที่ติผ่านเพลย์ลิสต์ ...

วิธีนี้ต้องการการรวบรวมใหม่ของ SMPlayer และวิธีการตั้งชื่อไฟล์ที่เฉพาะเจาะจง ... มีการแก้ไขฟังก์ชันเดียวในแหล่งที่มาของ SMPlayer และมีการเพิ่มส่วนหัว 3 ส่วนลงในไฟล์ต้นฉบับเดียว ... ฉันได้รวบรวมsmplayer_0.6.8สำหรับ Lucid .. . Maveric และ Meerkat ใช้smplayer_0.6.9.. หนึ่งบรรทัดในรุ่นที่ใหม่กว่านั้นแตกต่างกัน แต่นั่นไม่ได้ทำให้เสียอะไรเลย ... นี่คือฟังก์ชั่นการแก้ไขและส่วนหัวของsmplayer_0.6.8

btw, กล่องโต้ตอบ zenity ในคำตอบก่อนหน้าของฉันยังคงใช้สำหรับการบันทึกเวลาเริ่มต้นและสิ้นสุด ...

คำเตือน - ส่วนของแหล่งข้อมูลต่อไปนี้มีไว้สำหรับsmplayer_0.6.8... ไฟล์ที่จะแก้ไขคือ: ../smplayer-0.6.9/src/findsubtitles/osparser.cpp... ส่วนใหม่นั้นเหมือนกันสำหรับ '0.6.8' และ '0.6.9' แต่ต้นฉบับนั้นต่างกันหนึ่งบรรทัด (ใกล้กับ ท้ายที่สุดก่อนสุดท้ายreturn hexhash;)


เพิ่มบล็อกแรกของบรรทัดด้านล่าง#includeส่วนหัว ที่มีอยู่ทันที

// ====================
// fred mod begin block  
#include <QFileInfo>
#include <QRegExp>
#include <QSettings>
#include "paths.h"
// fred mod end block
// ==================

นี่คือฟังก์ชั่นการปรับเปลี่ยน

QString OSParser::calculateHash(QString filename) {
    QFile file(filename);

    if (!file.exists()) {
        qWarning("OSParser:calculateHash: error hashing file. File doesn't exist.");
        return QString();
    }

    file.open(QIODevice::ReadOnly);
    QDataStream in(&file);
    in.setByteOrder(QDataStream::LittleEndian);
    quint64 size=file.size ();
    quint64 hash=size; 
    quint64 a;
    for(int i = 0; i < 8192; i++) {
        in >> a ; hash += a;
    };
    file.seek(size-65536);
    for(int i = 0; i < 8192; i++) {
        in >> a ; hash += a;
    };

  // =====================================================================
  // fred mod begin block
  //  
  // A mod to enable unique smplayer .ini files to be created for  
  //        content-identical media files whose file-names match
  //        a specific pattern based on two timestamps. 
  //        This is the naming pattern:

  //          
  //           name.[00:11:22].[33.44.55].mkv
  //              
  //        The two time stamps indicate the start and end  points of a 
  //         clip to be played according to  settings in the unique .ini
  //            
  //        The so named files can be, and typically will be, soft (or hard) links.   
  //        The "original" file can also named in this manner, if you like,    
  //        but that would make the "original" start playing as a clip,
  //          NOTE: soft links become invalid when you rename the original file.  
  //
  //  Note: For this system to work, you need to enable the following:
  //        In SMPlayer's GUI, open the Options dialog...
  //        In the  "General" tab... "Media settings"... 
  //          enable: 〼 "Remember settings for all files (audio track, subtitles...)" 
  //                     "Remember time position"   can be 'on' or 'off'; it is optional1
  //                                                but it is disabled for these clips.    
  //                     "Store setings in" must be: "multiple ini files" 
  //
  QFileInfo fi(filename);
  QString name = fi.fileName();
  //
  // ===================================================================
  // This RegExp expects a name-part, 
  //             followed by 2 .[timestamps]  (Begin-time and End-time)
  //             followed by a .extension
  //              
  //              .[ Begin  ].[  End   ]  
  //      eg. name.[00:11:22].[33.44.55].mkv
  //
  //    Note: The delimiter between each numeric value can be any non-numeric character.
  //          The leading dot '.' and square brackets '[]' must be as shown        
  //          HH, MM, and SS must each be 2 valid time-digits    
  //
  QRegExp rx("^.+"                      // NAME
             "\\.\\[([0-9][0-9])[^0-9]" // .[HH.
                   "([0-5][0-9])[^0-9]" //   mm.
                   "([0-5][0-9])\\]"    //   ss]
             "\\.\\[([0-9][0-9])[^0-9]" // .[HH.
                   "([0-5][0-9])[^0-9]" //   mm.
                   "([0-5][0-9])\\]"    //   ss]
             "\\.([^0-9]+)$");          // .EXTN
  //
  QString qstrIni;
  rx.setPatternSyntax(QRegExp::RegExp);
  if(rx.exactMatch(name)) {
      bool ok;
      QString qstrDlm(".");
      QString qstrBegEnd = rx.cap(1) + rx.cap(2) + rx.cap(3)
                         + rx.cap(4) + rx.cap(5) + rx.cap(6);
      hash += qstrBegEnd.toLongLong(&ok,10); // The UNIQUE-FIER
      //
      quint32 quiBegSec=(rx.cap(1).toULong(&ok,10)*3600)
                       +(rx.cap(2).toULong(&ok,10)*  60)
                       +(rx.cap(3).toULong(&ok,10));
      quint32 quiEndSec=(rx.cap(4).toULong(&ok,10)*3600)
                       +(rx.cap(5).toULong(&ok,10)*  60)
                       +(rx.cap(6).toULong(&ok,10));
      quint32 quiDifSec=(quiEndSec-quiBegSec);
      // 
      QString qstrBegIni = "-ss "     + QString::number(quiBegSec);
      QString qstrEndIni = "-endpos " + QString::number(quiDifSec);
              qstrIni    = qstrBegIni + " " + qstrEndIni;
  }
  // fred mod end block
  // =====================================================================
  // fred NOTE: the following 2 lines are a single line in smplayer-0.6.9

    QString hexhash("");
    hexhash.setNum(hash,16);

  // =====================================================================
  // fred mod begin block  
    if( !qstrIni.isEmpty() ) {
      // ** The next code line is not ideal, but should be okay so long 
      //    as SMPlayer's options are set to use Multiple .ini files.  
      //       The literal "file_settings" is HARDCODED, as It wasnt' straight
      //       forward to get the value, The rest of the path was easily available 
      //       without any significant mods, which "file_settings" would require.    
      // TODO: Check for Multiple .ini Option being enabled.
      //  
      QString  dir_settings = Paths::configPath() + "/file_settings";
      QString fqfn_settings = dir_settings + "/" + hexhash[0] + "/" + hexhash + ".ini";

      QSettings set(fqfn_settings, QSettings::IniFormat);
      set.beginGroup("file_settings");
      set.setValue(  "starting_time", "0" );
      set.setValue(  "mplayer_additional_options", qstrIni );
    }
  // fred mod end block
  // =====================================================================

    return hexhash;
}

1

ฉันไม่พบว่าสามารถนำไปใช้กับเพลย์ลิสต์ได้จริงหรือไม่ แต่คุณอาจพิจารณาแก้ไขรายการการตัดสินใจ (EDL) นี่คือลิงค์เพื่อให้คุณเริ่มต้น:

  1. คู่มือ MPlayer เกี่ยวกับการสนับสนุน EDL

  2. กวดวิชา MPlayer EDL

  3. การตัดต่อวิดีโอจากบทความบรรทัดคำสั่ง LinuxGazette

  4. โครงการโรงภาพยนตร์ที่เหมาะสม

หากคุณไม่รังเกียจการหยุดชั่วคราวระหว่างวิดีโอคุณสามารถเรียกใช้ mplayer ได้หลายครั้งจากสคริปต์ที่มีไฟล์ EDL ต่างกันในแต่ละครั้ง หากการหยุดไม่เป็นไปอย่างนั้นคุณควรสร้างวิดีโอใหม่เหมือนที่แนะนำโดย varrtto


ขอบคุณอย่างไรก็ตามการใช้บรรทัดคำสั่งฉันคิดว่าการใช้ mplayers -ss และ -endpos + มาโคร emacs ของฉันเป็นวิธีที่ดีกว่าในการไป (ดูการเพิ่มของฉันไปยังโพสต์ต้นฉบับ) สิ่งที่ฉันต้องการจริงๆคือ GUI ที่ดี
นักเรียน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.