শুরু এবং শেষ সময়ের সাথে ভিডিও প্লেলিস্ট


10

লিনাক্সের জন্য কি ভাল জিইউআই-অ্যাপ্লিকেশন (উদাহরণস্বরূপ একজন এমপ্লেয়ার জিইউআই বা বনশির মতো কিছু) রয়েছে যা তালিকার প্রতিটি ভিডিওর জন্য বিভিন্ন প্রারম্ভিক এবং থামার সময় সহ প্লেলিস্টগুলি (ভিডিও ফাইলগুলির জন্য) তৈরি এবং সম্পাদনা করতে দেয়?

যুক্ত :

এই মুহুর্তে আমি ম্যানুয়ালি ফাইলগুলি তৈরি করি যার মধ্যে এমন কিছু রয়েছে:

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

video2.mp4 -ss 112 -endpos 2112

তারপরে আমার কাছে একটি র‍্যাপার স্ক্রিপ্ট রয়েছে: mplayer -fs $(grep -v "^ #" $1)

তদুপরি আমি কিছু ইম্যাকস ফাংশন লিখেছি যা এ জাতীয় ফাইলগুলির সম্পাদনাটি কিছুটা সহজ করে দেয়। (এইচএইচ: মিমি: এসএস ফর্ম্যাটটি সেকেন্ডে রূপান্তর করার মতো এবং বেনডপোস দ্বারা প্রয়োজনীয় হিসাবে আপডিকেশন অবস্থানের (শেষ সময় - শুরুর সময়) এন্ডটাইম (যেমন কেউ আগ্রহী তবে আমি ম্যাক্রো পোস্ট করতে পারি) However তবে এটি এখনও খুব অস্বস্তিকর। সুতরাং আমার প্রশ্ন হ'ল এটি করার জন্য যদি কোনও চমৎকার জিইউআই থাকে (উদাহরণস্বরূপ যা আপনাকে কোনও ভিডিও টাইমলাইনে প্লেলিস্টের জন্য শুরু এবং শেষ সময়গুলি চিহ্নিত করতে দেয়))


@ ইউজার ৫২৮৯: আপনি যদি উবুন্টুর উত্তরগুলির বিষয়ে কেবল আগ্রহী হন (আপনি আপনার প্রশ্নে কোনও বিতরণের কথা উল্লেখ করেন নি) তবে কোন সাইটে জিজ্ঞাসা করতে হবে তা চয়ন করতে পারেন। আপনি যদি উবুন্টুকে জিজ্ঞাসা করতে পছন্দ flagকরেন তবে আপনার প্রশ্নের বোতামটি ব্যবহার করুন এবং এটি স্থানান্তরিত হওয়ার জন্য অনুরোধ করুন।
গিলস

1
@ user5289 আপনি কী চান .. জিইউআইতে ভিডিওটি চালাতে সক্ষম হওয়ার জন্য (কারণ 'এমপ্লেয়ার' অবশ্যই একটি জিইউআই নয়)? ... বা আপনি কোনও জিইআইতে (এছাড়াও) সময় অবস্থান নির্ধারণ করতে সক্ষম হতে চান? .. কারণ আপনি আপনার বিদ্যমান "সময়সীমাবদ্ধ কমান্ডগুলি" ব্যবহার করার জন্য কেবল স্যাম্প্লেয়ার ব্যবহার করতে পারেন .. আমি এটির জন্য একটি স্ক্রিপ্ট লিখেছি .. আমি স্ক্রিপ্টটি পোস্ট করব এবং উত্তর দেব .. কেউ হয়ত এটি আগ্রহী বলে মনে করবে .. আমি অবশ্যই আপনার পদ্ধতিটি আকর্ষণীয় বলে মনে হয়েছে .. এবং আমি এটি সম্প্লেয়ারের সাথে খাপ খাইয়েছি ..
পিটার.ও

@ ফ্রেড.বায়ার, হ্যাঁ মুল বক্তব্যটি হ'ল আমি কোনও জিইআইতে সময় অবস্থান নির্ধারণ করতে সক্ষম হতে চাই, কিছু প্লেলিস্টকে কিছুটা আরামদায়ক উপায়ে জিইউআইতে সম্পাদনা করতে পারি। (একটি
শিক্ষার্থী ২

@ ইউজার ৫৮৮৯: জিইআইতে সময় অবস্থান নির্ধারণ করা বেশ সম্ভব ... আমি স্মিপ্লেয়ারের সাথে এটি করি .... আমি timestampsআমার মূল উত্তরে নতুন স্ক্রিপ্ট যুক্ত করেছি যা কেবল একটি play-it-in-Smplayerস্ক্রিপ্ট দেখিয়েছিল
পিটার.ও

উত্তর:


3

হয়তো আমি প্রশ্নটি ভুল করে ফেলছি, যেহেতু ইংরেজি আমার প্রথম ভাষা নয় তবে আপনি কি পিনলিস্ট তৈরির পরিবর্তে কিনোর মতো একটি সরঞ্জাম দিয়ে ভিডিওটি সম্পাদনা করা ভাল না ?

আপনি যেভাবে চান তার শুরু এবং বন্ধের সময়গুলি সামঞ্জস্য করতে পারেন এবং আমার মনে হয় না এটি এত কঠিন হবে।


1
হ্যাঁ, কীনো বা এ জাতীয় কিছু ব্যবহার করে কীভাবে ভিডিও কাটা যায় তা আমি জানি। প্রশ্নটি সত্যই প্লেলিস্ট সম্পর্কে, নতুন ভিডিও তৈরির বিষয়ে নয়। এ জাতীয় প্লেলিস্টগুলি তৈরি করা খুব দ্রুত, নমনীয় এবং অতিরিক্ত ডিস্কের জায়গা গ্রহণযোগ্য নয়।
ছাত্র

3

আপডেট -২: নীচের স্ক্রিপ্টটি জমা দেওয়ার পরে, আমার কাছে তা প্রমাণিত হয়েছিল যে সময় অবস্থান নির্ধারণের (জিইআইতে) সেট করার আরেকটি উপায় হল সাবটাইটেল সম্পাদক (উদাহরণস্বরূপ gnome-subtitles) ব্যবহার করা। আপনি "ফ্যান্টম সাবটাইটেলগুলি" এর শুরু এবং শেষের অবস্থানগুলি চিহ্নিত করতে কেবল ক্লিক করতে পারেন; আসলে আপনি নিজের ফাইল-পাথ এবং মন্তব্যগুলিকে "সাবটাইটেল" হিসাবে রাখতে পারেন ... কিছু ফর্ম্যাট উপযুক্ত নয় (যেমন ফ্রেম নম্বর ব্যবহার করে) .. 'ভাইপ্লে সাবটাইটেল ফাইল', পাওয়ার ডিভএক্স এবং 'অ্যাডোব এনকোর্ড ডিভিডি' চেহারা ভাল.

Update-1; একটি নতুন স্ক্রিপ্ট ... এই স্ক্রিপ্টটি আপনাকে ইন্টিগ্রেটেড প্লেলিস্টের ক্ষমতা দেয় না, তবে এটি আপনাকে কিছু টাইপ করার প্রয়োজন ছাড়াই স্মিপ্লেয়ারের মধ্যে শুরু এবং শেষ সময়গুলি নির্বাচন এবং সংরক্ষণ এবং পরিবর্তন করতে দেয়।

এই তথ্যটি একটি কনফিগার ফাইলে সংরক্ষণ করা হয়েছে, ফাইল-পাথগুলি যার পৃথকভাবে "প্লে" করা যেতে পারে, বা একটি ক্রম অনুসারে, অন্য স্ক্রিপ্টের মাধ্যমে (আমার 'প্লে' স্ক্রিপ্টের অনুরূপ, বা আপনার ইমাস স্ক্রিপ্টগুলির মতো) ...

এটি এসম্প্লেয়ারের Seekডায়ালগটি ব্যবহার করে কাজ করে ... ডায়ালগটি হেরফের করে xmacro(আমি খুঁজে পেয়েছি যে এটি sleep .3xmacro কমান্ডের মধ্যে প্রয়োজন ) ... সময়গুলি এইচ এইচ: এমএম: এসএস বিন্যাসে একটি ফাইলে সংরক্ষণ করা হয় ~/.config/smplayer... প্রথম লাইনটি হ'ল শুরুর সময়, ২ য় লাইনটি এন্ড-টাইম এবং তৃতীয় লাইনটি এখানে কোনও মূল ডিরেক্টরি নির্দিষ্ট করার জন্য রয়েছে ... এই তৃতীয় লাইনটি ফলো-আপ স্ক্রিপ্ট দ্বারা একটি pathচ্ছিক পথ নির্দেশক হিসাবে ব্যবহৃত হয় যা দ্বারা একটি স্মিপ্লেয়ার কনফিগারেশন সেটিংস পরিবর্তন করে সঙ্গে এটি priming -ssএবং -endpos... টাইমস্ট্যাম্প কনফিগ ফাইলটি একটি সঙ্গে, মিডিয়া ফাইল হিসাবে একই নামকরণ করা হয় .smplayপ্রত্যয় ...

সুতরাং এটি আপনি চান সবকিছু নয়, তবে এটি কোনও টাইপ না করে সময় নির্ধারণে সহায়তা করতে পারে ...

এখানে 'টাইমস্ট্যাম্পগুলি পান' স্ক্রিপ্ট:

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

নিম্নলিখিত স্ক্রিপ্টটি আমার আসল 'প্লে' স্ক্রিপ্ট It এটি উপভোগ করা টাইমস্ট্যাম্পের স্ক্রিপ্ট থেকে স্বতন্ত্র, তবে তাদের একসাথে কাজ করতে খুব বেশি লাগবে না ...

এটি 'ড্রাইভ' স্মিপ্লেয়ার, যা অভ্যন্তরীণভাবে এমপ্লেয়ার ব্যবহার করে .. এটি কমপক্ষে, একটি সাধারণ জিইউআই হয় তবে আপনার প্লেলিস্টটি আপনার পাঠ্য সম্পাদকের মধ্যে থাকা দরকার .. এবং আপনি অবশ্যই সেই পদ্ধতিটি সম্পর্কে ইতিমধ্যে জানেন :)

আমি কয়েক বছর আগে এটি চেষ্টা করেছি, তবে আমার প্রায়শই ভুলে যাব কারণ আমার প্রায়শই এ জাতীয় কোনও প্রয়োজন হয় না, তবে "বুকমার্কস" রাখা ভাল .. আপনি আনন্দিত ধারণাটি পুনরুত্থিত করেছেন বলে আমি আনন্দিত। এখানে স্ক্রিপ্টটি দেওয়া হয়েছে ... যা আপনি কেবল যা করছেন ঠিক তেমনই করে তবে এসম্প্লেয়ারকে (একজন প্লেয়ার জিইআই)

#
# 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। এর জন্য কেবলমাত্র আপনার ভিডিওর সাথে স্মিপ্লেয়ার খোলা থাকা দরকার এবং স্ক্রিপ্টটি শর্টকাট-কী হিসাবে যুক্ত (আমি এক্সবাইন্ডকিগুলি ব্যবহার করি তবে কিছুই করবে) .. আপনি মুভিটির যে কোনও সময়ে, শর্টকাট টিপতে পারেন -কি .. কারণ এটি কোনও ম্যাক্রো ব্যবহার করে যা স্মিপ্লেয়ারের সাথে সম্পর্কিত নয়, ২ য় ডায়ালগটি উপস্থিত না হওয়া অবধি আপনার কিছু করা উচিত নয় (কীবোর্ড বা মাউস ক্লিক)। "এটি কি সঠিক উইন্ডো? ইত্যাদি" এবং খোলার স্ট্যাম্প্লেয়ারের "অনুসন্ধান কথোপকথন" যাচাই করার জন্য 1-2 সেকেন্ডের দরকার রয়েছে যা থেকে এইচএইচ: এমএম: এসএস-এ উপস্থাপিত বর্তমান সময়ের অবস্থান ম্যাক্রো অনুলিপি করে .. এই সংলাপটিকে বাধা দেবেন না। ...
পিটার.ও

অবিরত ... ম্যাক্রো টাইমস্ট্যাম্পটি ক্লিপওয়ার্ডে অনুলিপি করবে এবং তারপরে "ডায়লগ সন্ধান করুন" বন্ধ করবে .. দ্বিতীয় ডায়লগটি তারপরে উপস্থিত হবে (একটি "উত্সাহ" ডায়ালগ) ... এটি আপনাকে 5 টির মধ্যে 1 টি করতে অনুরোধ করবে। 1) শুরু অবস্থান হিসাবে ক্যাপচার টাইমস্ট্যাম্প ব্যবহার করুন। 2) ক্যাপচারিত টাইমস্ট্যাম্পটি শেষের অবস্থান হিসাবে ব্যবহার করুন। 3) আনসেট স্টার্ট পজিটোন। 4) আনসেট এন্ড পজিটোন। 5) ডিরেক্টরিতে সংরক্ষিত "কনফিগারেশন" ফাইলটি নটিলাস খুলুন .. কনফিগারেশন ফাইলগুলি ভিডিওর সাথে একইভাবে নামকরণ করা হয়েছে। (নামটি এসম্প্লেয়ারের শিরোনাম বার থেকে নেওয়া হয়েছে) ..
পিটার.ও

অবিরত ... সেখান থেকে আপনি আপনার বর্তমান স্ক্রিপ্টগুলিতে সময় মতো সময় ব্যবহার করতে পারেন ... আমি একটি স্ক্রিপ্টে কাজ করছি যা স্ম্প্লেয়ারের সাথে সংহত করে; আমার প্রথম স্মিপ্লেয়ার স্ক্রিপ্ট (আমার মূল উত্তরে দেখানো হয়েছে) কিছুটা নির্বোধ এবং কিছু অপশন উপস্থাপন করেছে .. স্মিপ্লেয়ারের কাছে খেলানো প্রতিটি ফাইলের ইতিহাস রাখার বিকল্প রয়েছে। এটি একটি একক ফাইল বা স্বতন্ত্র ফাইলগুলিতে করা যেতে পারে ... স্বতন্ত্র ফাইল পদ্ধতি (ডিফল্ট, আমি মনে করি (?), সবচেয়ে উপযুক্ত, তবে .ini নামগুলি হ্যাশ করা হয়েছে I'm আমি বর্তমানে যা আছে তা অনুকরণে কাজ করছি অ্যালগরিদম ... তাই থাকুন :)
পিটার.ও

অবিরত ... আপনার এই অ্যাপ্লিকেশনগুলি ইনস্টল করা দরকার .. xdotool xwininfo xmacro zenity sed(তবে কে বিচলিত হয়নি :), এবং অবশ্যই smplayer... আমি এটি আমার উত্তর হিসাবে উল্লেখ করেছি .. এটি কেবলমাত্র 'অ্যাসিস্ট' .. এখনও পর্যন্ত কিন্তু এটা সম্পর্কে চিন্তা ডান এখন, আমি এই লিখতে, এটা করতে স্বাভাবিক smplayer প্লেলিস্ট মধ্যে লাগাইতে তৈরি করা! কারণ প্লেলিস্ট সেভ smplayer .ini ফাইল (হ্যাশ ফাইলের নামগুলি সহ) অনুসারে খেলবে .. এটি দেখতে আরও ভাল এবং আরও ভাল দেখাচ্ছে .. তবে আমার কিছুটা সময়ের জন্য সিরিয়াসলি বিরতি দরকার :) .. কিছুদিনের জন্য খুব বেশি স্মিপ্লেয়ার। আমি এখনও সেই হ্যাশিং অ্যালগরিদমটি শেষ করতে পেরেছি
পিটার.ও

1

এগুলি সত্যিই প্লেলিস্টে প্রয়োগ করা যেতে পারে কিনা তা খুঁজে পেতে ব্যর্থ হয়েছি তবে আপনি সিদ্ধান্তের তালিকা সম্পাদনা সম্পাদনা (ইডিএল) এর মধ্যে দেখতে পারেন। আপনাকে শুরু করার জন্য এখানে কয়েকটি লিঙ্ক রয়েছে:

  1. ইডিএল সমর্থন সম্পর্কে এমপ্লেয়ার ম্যানুয়াল

  2. এমপ্লেয়ার ইডিএল টিউটোরিয়াল

  3. কমান্ড লাইন লিনাক্সগ্যাজেট নিবন্ধ থেকে ভিডিও সম্পাদনা

  4. বুদ্ধিমান সিনেমা প্রকল্প

আপনি যদি ভিডিওগুলির মধ্যে কিছু ছোট বিরতি মনে করেন না তবে আপনি প্রতিবার বিভিন্ন ইডিএল ফাইল সহ একটি স্ক্রিপ্ট থেকে কয়েকবার এমপ্লেয়ার চালাতে পারবেন। যদি বিরতিগুলি হ'ল নন তবে সম্ভবত ভার্ট্টোর পরামর্শ মতো আপনার একটি নতুন ভিডিও তৈরি করা উচিত।


ধন্যবাদ, তবে, কমান্ড লাইনটি ব্যবহার করে, আমি মনে করি mplayers -ss এবং -endpos + আমার ইমাস ম্যাক্রোগুলি ব্যবহার করা আরও ভাল উপায় (মূল পোস্টে আমার সংযোজনগুলি দেখুন)। আমি সত্যিই যা চাই তা সুন্দর জিইউআই।
ছাত্র

1

আমি এই দ্বিতীয় উত্তরটি যুক্ত করেছি, কারণ এটি এসএমপ্লেয়ারে একটি সাধারণ প্লেলিস্ট হিসাবে কাজ করে এবং স্বচ্ছতার জন্য এখানে আরও ভাল ...

আমি এটি প্লেলিস্টের মাধ্যমে নির্বিঘ্নে কাজ করেছিলাম ...

এই পদ্ধতির জন্য এসএমপি্লেয়ারের একটি পুনরায় সংকলন এবং একটি নির্দিষ্ট ফাইল-নামকরণ পদ্ধতি প্রয়োজন ... এসএমপিপ্লায়ার উত্সে কেবল একটি ফাংশন পরিবর্তন করা হয়েছে এবং একই একক উত্স ফাইলে 3 টি শিরোনাম যুক্ত করা হয়েছে ... আমি smplayer_0.6.8লুসিডের জন্য সংকলন করেছি .. ম্যাভেরিক এবং মেরক্যাট ব্যবহার smplayer_0.6.9.. পরবর্তী সংস্করণে একটি লাইন আলাদা, তবে এটি কোনও কিছুতেই বিরক্ত করে না ... এখানে পরিবর্তিত ফাংশন এবং শিরোনাম এখানে দেওয়া হয়েছেsmplayer_0.6.8

বিটিডব্লিউ, আমার আগের উত্তরের জেনটি ডায়ালগটি এখনও শুরু এবং শেষ সময়গুলি ক্যাপচারের জন্য ব্যবহারযোগ্য ...

অনুস্মারক - নিম্নলিখিত উত্স বিভাগগুলি এর জন্য 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;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.