Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > VirtualDub, VDubMod & AviDemux

Reply
 
Thread Tools Search this Thread Display Modes
Old 19th June 2022, 07:15   #481  |  Link
guth
Registered User
 
Join Date: Apr 2003
Location: Uppsala, Sweden
Posts: 157
Quote:
Originally Posted by StainlessS View Post
Author (guth, ie Gunnar Thalin, first post in this thread @ post #5),
last sign-in Dec 2020.

EDIT: I think that last time I posted in a Gunnar Thalin thread, he popped up a day or two later.
I'm still alive!
I don't seem to get notification emails?

Quote:
Originally Posted by MysteryX View Post
Using this plugin under Vapoursynth could be possible by porting the VirtualDub compatibility plugin....

But will there ever be a possibility of using it on Linux? Since the source code isn't available and the author hasn't been heard from in 8 years, I suppose not a chance?
Funny, the reason I'm here is to post the next post... see below.
guth is offline   Reply With Quote
Old 19th June 2022, 07:15   #482  |  Link
guth
Registered User
 
Join Date: Apr 2003
Location: Uppsala, Sweden
Posts: 157
I don't know if there's any interest still, but I (finally) think it might be a good idea to make the Deshaker source code public.

Any recommendation on the best way to do this?
Do I just put a zip on my Deshaker page? Or should I put it on GitHub, or something, and how much work is that? Maybe someone else would like to "run" it??
And what license? I don't really care if people make money on it (anymore), but is it still a bad idea to make it completely free? (Excuse my lack of knowledge and interest in legal stuff.)
Also, please keep in mind I've become rather lazy.
guth is offline   Reply With Quote
Old 19th June 2022, 11:03   #483  |  Link
Boulder
Pig on the wing
 
Boulder's Avatar
 
Join Date: Mar 2002
Location: Finland
Posts: 5,804
The notification emails have been broken since a long time ago

I vote for putting the source code on GitHub. I do not believe that it's a big job but someone else can confirm that - or just add it to their repo I'm sure there's something useful for someone in the code sooner or later.
__________________
And if the band you're in starts playing different tunes
I'll see you on the dark side of the Moon...
Boulder is offline   Reply With Quote
Old 19th June 2022, 11:38   #484  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,022
I dont do GitHub and so cannot comment on how easy that would be.
Quote:
I don't really care if people make money on it (anymore)
But I'm guessing that you would prefer not to have someone take totally Freeware source, change a few labels
to say that they are the authors, and make a packet of cash from the people that they deceive.
Open source with GPL would maybe be best.

Nice to see you again Guth
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
StainlessS is offline   Reply With Quote
Old 20th June 2022, 11:50   #485  |  Link
VoodooFX
Banana User
 
VoodooFX's Avatar
 
Join Date: Sep 2008
Posts: 1,051
Quote:
Originally Posted by guth View Post
Any recommendation on the best way to do this?
Do I just put a zip on my Deshaker page? Or should I put it on GitHub, or something, and how much work is that?
On GitHub it would be there ~forever, and it's easy, few clicks if your source is one-few files, do it through the website there, not through Git.

Quote:
Originally Posted by guth View Post
And what license? I don't really care if people make money on it (anymore), but is it still a bad idea to make it completely free?
I would say, good luck if anyone by some magic manages to make money out of it.

This is do whatever you want license:

Quote:
The Unlicense

A license with no conditions whatsoever which dedicates works to the public domain. Unlicensed works, modifications, and larger works may be distributed under different terms and without source code.
This is simplest preserving a credit to your name, and preserving the open source if it's not incorporated into some MicrosoftDub:

Quote:
MIT License

A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.

Last edited by VoodooFX; 20th June 2022 at 12:03.
VoodooFX is offline   Reply With Quote
Old 21st June 2022, 14:36   #486  |  Link
guth
Registered User
 
Join Date: Apr 2003
Location: Uppsala, Sweden
Posts: 157
Quote:
Originally Posted by VoodooFX View Post
I would say, good luck if anyone by some magic manages to make money out of it.
I have sold it to a few companies in the past, at least. Without even trying.

Anyway, thanks for the input, guys. If nothing unexpected happens I'll put it on GitHub within a couple of weeks.
guth is offline   Reply With Quote
Old 28th June 2022, 19:43   #487  |  Link
guth
Registered User
 
Join Date: Apr 2003
Location: Uppsala, Sweden
Posts: 157
The Deshaker source code is now on GitHub:

https://github.com/gu-t/Deshaker

Please let me know if you see anything weird. I've used Git before, but I'm new to GitHub.
guth is offline   Reply With Quote
Old 28th June 2022, 20:19   #488  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,022
Most gracious of you, cheers Guth.
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
StainlessS is offline   Reply With Quote
Old 29th June 2022, 00:22   #489  |  Link
kedautinh12
Registered User
 
Join Date: Jan 2018
Posts: 2,168
Quote:
Originally Posted by StainlessS View Post
Most gracious of you, cheers Guth.
I think you need release binary
kedautinh12 is offline   Reply With Quote
Old 29th June 2022, 08:19   #490  |  Link
guth
Registered User
 
Join Date: Apr 2003
Location: Uppsala, Sweden
Posts: 157
Quote:
Originally Posted by kedautinh12 View Post
I think you need release binary
Binaries exist on my Deshaker page, that I link to. Or, what do you mean?
guth is offline   Reply With Quote
Old 29th June 2022, 09:08   #491  |  Link
kedautinh12
Registered User
 
Join Date: Jan 2018
Posts: 2,168
Quote:
Originally Posted by guth View Post
Binaries exist on my Deshaker page, that I link to. Or, what do you mean?
Oh thanks
kedautinh12 is offline   Reply With Quote
Old 30th May 2023, 11:59   #492  |  Link
Rob105
Registered User
 
Join Date: Oct 2021
Posts: 43
Can i somehow set a horizon across different control frames so Deshaker would stabilize rotation to match this horizon or any way to set horizon at all?

Here's sample video https://www.upload.ee/files/15288523..._clip.zip.html

What approach would you use to make horizon straight with Deshaker?

Last edited by Rob105; 31st May 2023 at 06:58.
Rob105 is offline   Reply With Quote
Old 27th June 2023, 14:26   #493  |  Link
stephen22
Registered User
 
Join Date: Jan 2007
Posts: 88
Find a level frame and process from there with rotation smoothness -1, max correction some large number. Reverse the first section and process similarly. Unreverse and join the 2 together.
stephen22 is offline   Reply With Quote
Old 17th October 2024, 23:39   #494  |  Link
isidroco
Registered User
 
Join Date: Nov 2008
Posts: 51
Automatic chapter Generation using LOG n_scene info

Hi, I made a PowerShell script [+batch caller] which will pick up all .LOGs from current [or specified] folder and generate fileName_OGG.txt chapter info per LOG (ie: to use with MKVmerge). Minimum duration can be specified (default 75sec). FPS must be known (default NTSC). Has chapter name skeleton as used in mkvtoolnix-gui.exe.
Here's Log2chaps.ps1 script:

Code:
  # PARAM must be first command
param ( [int]$gi_minSec=75, [float]$gr_fps=29.970, [string]$gs_chapSkel='Chap <NUM:2>',
  [switch]$pal, [switch]$ntsc, [switch]$yes )

$debugging= $false

write-host -ForegroundColor Green ''
write-host -ForegroundColor Green 'Log2Chaps v24.1016'
write-host -ForegroundColor Green ''
write-host -ForegroundColor Green '  Extract chapter list from each deShake .LOG files'
write-host -ForegroundColor Green '  Generates: originalfilename_OGG.txt'
write-host -ForegroundColor Green ''
write-host -ForegroundColor Green 'Usage: Log2Chaps [[[minSec] fps] chapSkeleton] [-ntsc|-pal] [-yes]'
write-host -ForegroundColor Green '  minSec: Minimun Chapter length in seconds (default 75)'
write-host -ForegroundColor Green '  fps: Frames Per Second (default 29.970) or -pal / -ntsc'
write-host -ForegroundColor Green '  chapSkeleton: (default "Chap <NUM:2>" where NUM is chapter # using :N digits)'
write-host -ForegroundColor Green '  -ntsc: 29.970 takes precedence over fps'
write-host -ForegroundColor Green '  -pal: 25 takes precedence over ntsc'
write-host -ForegroundColor Green "  -yes: unnatended"
write-host -ForegroundColor Green ''

  # param ( $G_ARCHIVE = $(throw 'Need file to upload!'),
  #      $G_LOGFILE = $(throw 'Need logfile!') )
  #
  # Run as ADMIN
  # Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force
# 24.1016 better dispay info
# 23.0513 fps between [3..240]; only inform skipped >10 frames
# 23.0510 escaped ´: in write-host, avoids error in win10
# 22.0918 minSec first argument, newline after chapterlist
# 22.0916 switches: -yes -pal -ntsc
# 22.0914 success/ already done messages
# 22.0831 range check
# 22.0829 vars: XY_name: {X: Local, Global} {Y: Integer Long Real(float) String Fileinfo Timespan Date ...}
#           Array: XAY_name (ie local string array: las_nameOfVariable)
# 22.0829 do all LOGs, ask before
# 22.0824 implement digits
# 22.0823 chapNames as MKVGui default: 'Chap <NUM:2>'
# 22.0822 ogg chapters format
# 22.0821 chapters time hh:mm:ss.ddd
# 22.0806 initial idea
#

function parse_log {
  param ( [ref]$lf_inFile, [long]$li_minSec=90, `
    [float]$lr_fps=29.970, `
    [string]$ls_chapName='Chap <NUM>', `
    [string]$ls_chapNDig='00' )
  write-host -ForegroundColor Green 'Params:', $lf_inFile.value.name, `
    "; chapNm:$ls_chapName; fps:$lr_fps; minSec:$li_minSec; `
    chapDigStr:$ls_chapNDig" -separator ''  # no separator
  # parse file
###
  $las_nscenes= @( get-content $lf_inFile.value | Where-Object { $_ -match "n_scene"} )
  [long]$ll_minimo= $lr_fps * $li_minSec
  [long]$ll_lastChapN= 0
  [long]$ll_lastSkipN= 0
  write-host -ForegroundColor Green "`n  Chap 0  " -nonewline  # `n is newLine only in double quotes
  $lal_chapterFrames= @( [long]0 ) +
    @( foreach( $ls_line in $las_nscenes) {
      #   $ll_n= [long]( $ls_line -split '[ \t]+',3)[1]  # 1st method: Take 2nd element, must have first empty
      $null= $ls_line -match '\D+(?<digitos>\d+)'   # OR 2nd method: Seek first digits, faster and +reliable
      [long]$ll_n= [long]$matches[ 'digitos']
      if ( $ll_n - $ll_lastChapN -lt $ll_minimo) { # skip if less than min seconds
        if ( $ll_n - $ll_lastSkipN -gt 50) { #only inform if more than 50 frames
          $ll_lastSkipN= $ll_n
          write-host -ForegroundColor Green " skp$ll_n" -nonewline
        }
      } else { # new chapter
        write-host -ForegroundColor Green "`n  Chap $ll_n  " -nonewline
        $ll_lastChapN= $ll_n
        $ll_n  # Returns chapter number of frames
      }
    } )  # end foreach $las_nscenes
  if ( $ll_lastChapN -eq 0) {
    write-host -ForegroundColor Red "*** no chapters ***`n"; return }
  write-host -ForegroundColor Green "`n"
  #  write-host $lal_chapterFrames
  [float]$lr_1frame_ms= 1000/ $lr_fps
  [int]$li_chapNum= 1
  foreach ( $ll_frames in $lal_chapterFrames) {
    # *NO* $lt_chap_ms= new-timespan -seconds $lal_chapterFrames[ 2]
    # [string]$ls_chapMs= new-timespan -seconds ( [float]$ll_frames* $lr_1frame_ms* 1000)
    $lt_chap_ms= [timespan]::frommilliseconds( [float]$ll_frames* $lr_1frame_ms)
    # $ls_chapMs= "{0}" -f $lt_chap_ms;  [string]$ls_chapMs= $lt_chap_ms;  $ls_chapMs= $lt_chap_ms.tostring();
    [string]$ls_chapMs= $lt_chap_ms.tostring()
    if ( $ls_chapMs.length -eq 8) {
      $ls_chapMs+= ".0000000" }  #add missing ms in case of exact seconds
    $ls_chapMs= $ls_chapMs.subString( 0, 12)  # keep first 3 digits of ms leaving:  hh:mm:ss.fff
    # write-host -ForegroundColor Green ( '{0:hh\:mm\:ss\,fff}' -f $ls_chapMs)  # not for powershell v2
    $ls_outOdd= "CHAPTER{0:00}={1}" -f $li_chapNum, $ls_chapMs
    write-output $ls_outOdd
    $chapStr= $ls_chapName -replace '<num>', $li_chapNum.tostring( "$ls_chapNDig")
    $ls_outEven= ( "CHAPTER{0:00}NAME={1}" -f $li_chapNum, $chapStr)
    write-output $ls_outEven
    $li_chapNum+= 1
  }
  # @{ frame= $_.Split( ' ')[0] }
  # | foreach-object { $_ -spilt " ", 2) }
  # select-string -path $lf_inFile -pattern "n_scene"
  # write-output $chapters
}


#
# MAIN
#
[int]$li_chapDigits=2
if ( $gs_chapSkel -match '<NUM:*(?<xnumero>\d+)>') {
  [int]$li_chapDigits= $matches.xnumero }
if ( $li_chapDigits -lt 1 -or $li_chapDigits -gt 9 ) {
  $li_chapDigits= 2 }
$gs_chapNDig= '0' * $li_chapDigits  # number of digits to print '00'
$gs_chapSkel= $gs_chapSkel -replace '<NUM:*(?<numero>\d+)>', '<NUM>'
if ( $gr_fps -lt 3 -or $gr_fps -gt 240 -or $ntsc ) {
  [float]$gr_fps= 29.970 }
if ( $pal ) {
  [float]$gr_fps= 25 }
if ( $gi_minSec -lt 1 -or $gi_minSec -gt 960 ) { #not more than 16min
  $gi_minSec= 75 }
write-host -ForegroundColor Yellow "Params:  minSec:$gi_minSec; ",
            "fps:$gr_fps; chapSkel:$gs_chapSkel; digits:$li_chapDigits"
write-host ''
if ( $debugging) { b:; cd \v }  # use B:\V tor testing
if ( -not $debugging -and -not $yes
  # -and $gs_chapSkel -eq 'Chap <NUM>' #no params
  ) {
  do {
    $ls_confirm= Read-Host -Prompt 'Press (Y)es to continue, (N)o to abort'
    if ( $ls_confirm -match 'n') { return ' ABORT '}
  } until ( $ls_confirm -match '[ys]')
}

$li_outCount= 0
foreach ( $lf_logfile in get-childitem *.log) { #all .LOGs
  if ( $lf_logfile.mode -match 'd') { continue } #skip dirs
  write-host -ForegroundColor Green $lf_logfile
  $ls_oggFileName= $lf_logfile.basename+'_OGG.txt'
  if ( -not ( test-path -path $ls_oggFileName -pathType leaf )) {
    # parse
    $gas_oggFileOut= parse_log ([ref]$lf_logfile) $gi_minSec $gr_fps $gs_chapSkel $gs_chapNDig
    write-host -ForegroundColor blue  $gas_oggFileOut
    if  ( $gas_oggFileOut.count -gt 1) {
      out-file $ls_oggFileName -inputobject $gas_oggFileOut -encoding ASCII -Width 132 }
      if ( test-path -path $ls_oggFileName -pathType leaf ) {
        $li_outCount+= 1
        write-host "** Generated $li_outCount`: $ls_oggFileName"
        write-host
      }
    if ( $debugging) { break }  # debug: stop after first .LOG
  } else {
    write-host -- Already present: $ls_oggFileName
  }
} # foreach .log
  write-host
if ( $li_outCount -gt 0 ) {
  write-host *** TOTAL Generated Files: $li_outCount ***
} else { write-host *** Nothing to do *** }
  write-host

Last edited by isidroco; 18th October 2024 at 03:25.
isidroco is offline   Reply With Quote
Old 17th October 2024, 23:40   #495  |  Link
isidroco
Registered User
 
Join Date: Nov 2008
Posts: 51
And here's the log2chaps.bat batch caller (directory may be specified), help included:

Code:
@echo off
set log2chapsVersion=log2chaps v24.1016, isidrococo @ gmail

setlocal enableextensions enabledelayedexpansion & REM to get var value at exec with !varNm!

rem Log2Chaps [PATH] [minSec] [chapSkeleton] [fps]|[-pal]|[-ntsc] [-yes]
rem                     75    "Chap <NUM:2>"   29.970  -yes

title %isiVersion%
echo/
echo/%log2chapsVersion%
echo/
echo/  Extract chapter list from each deShake .LOG files based in n_scene marks
echo/  Generates: originalfilename_OGG.txt
echo/
echo/Usage: Log2Chaps [logsFullPath] [[[minSec] fps] chapSkeleton]
echo/                 [-ntsc^|-pal]  [-yes]  [-noPause]
echo/
echo/  logsFullPath: Path of all deshaker .LOG
echo/  minSec: Minimum Chapter length in seconds (default 75)
echo/  fps: Frames Per Second (default 29.970) or -pal / -ntsc
echo/  chapSkeleton: ^(default "Chap <NUM:2>" where NUM is chapter # using :N digits^)
echo/  -ntsc: 29.970 takes precedence over fps
echo/  -pal: 25 takes precedence over ntsc
echo/  -yes: unnatended
echo/
echo/

rem 24.1016 added pathDir and elevate command sending current dir, change parameters order, noPause
rem 22.0918 simple call to powershell

set selfDir="%~dp0"
set selfFullPath="%~f0"
echo Current dir "%cd%", batch dir %selfDir%

rem If 1st param has :\ try changing to it and remove it from PARAM
  rem  ~ remove and [re-]add quotes
set param1="%~1"
  rem needs to be % instead of !, to avoid :: comment out
if not %param1% == %param1::\=% (
  cd /d %param1% 2>nul& rem make current dir
  rem remove first param
  shift
)
echo Current dir %cd%

rem
set PARAM=
:getParam
    rem Include trailing space
  set paramN=%1 &rem dummy
  set "PARAM=!PARAM!!paramN!"
  shift
if not "!paramN!"==" " goto getParam

  REM Check privileges; https://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator/12264592#12264592
net file 1>NUL 2>NUL
if not '%errorlevel%' == '0' (
   REM  ELEVATE AND RERUN  -WorkingDirectory "%cd%"
     rem echo powershell -NoProfile -Exec Bypass Start-Process -FilePath %selfFullPath% -ArgumentList '"%cd%" %PARAM%' -verb runas
     powershell -NoProfile -Exec Bypass Start-Process -FilePath %selfFullPath% -ArgumentList '"%cd%" %PARAM%' -verb runas
   rem >NUL 2>NUL
   exit /b
)

  REM ensure powershell privileges to run scripts {not recommended, better use -ExecutionPolicy ByPass on run}
rem powershell Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
  REM Change directory to current script. "runas" starts in C:\Windows\System32
rem cd /d %~dp0

net file 1>NUL 2>NUL
if not '%errorlevel%' == '0' (
    echo Must execute as adminstrator  !!!
    pause
    exit
)

echo powershell -noprofile -exec ByPass -file "%selfDir:"=%log2chaps.ps1" %PARAM%
powershell -noprofile -exec ByPass -file "%selfDir:"=%log2chaps.ps1" %PARAM%

IF "%PARAM:nop=%"=="%PARAM%" pause
isidroco is offline   Reply With Quote
Old 28th November 2024, 07:31   #496  |  Link
ReinerSchweinlin
Registered User
 
Join Date: Oct 2001
Posts: 465
Quote:
Originally Posted by guth View Post
The Deshaker source code is now on GitHub:

https://github.com/gu-t/Deshaker
By accident, I cam across this thread...

Thank you !!

Your plugins have been a great support for me over the years, thanx for the contribution and all the work!
ReinerSchweinlin is offline   Reply With Quote
Old 5th December 2024, 16:18   #497  |  Link
tormento
Acid fr0g
 
tormento's Avatar
 
Join Date: May 2002
Location: Italy
Posts: 2,823
Quote:
Originally Posted by ReinerSchweinlin View Post
By accident, I cam across this thread
We just need someone who provides native AVS+ plugin now.
__________________
@turment on Telegram
tormento is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 15:56.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.