hurda7 Posted September 29, 2016 Share Posted September 29, 2016 I've used it for rough-cutting recordings, and every time it is undercutting. I.e. I set the start and end to 10:55 and 43:23 and the cut file contains footage from 10:20 to 44:10, or similar. Is there a known issue or was this just not reported and investigated yet? Quote Link to comment
Tjod Posted September 29, 2016 Share Posted September 29, 2016 TSPlayer was primarily developed as testing application for the recording engine. So there is no real development, only if new things are easy to test there it serves as test place And cutting is only possible at certain points in a video. TSPlayer doesn't do any recalculation/re-encoding therefore it is only able to cut at points which have all necessary informations. For video compression full images are only stored every few seconds. And for the rest of the time only the differences to the last or next image are stored (simplified). So the problem is known, but will not change. Quote Link to comment
majstang Posted October 9, 2017 Share Posted October 9, 2017 On 2016-09-29 at 6:16 PM, Tjod said: TSPlayer was primarily developed as testing application for the recording engine. So there is no real development, only if new things are easy to test there it serves as test place That is a shame, cuz the software is freaking brilliant and I prefer it any day of the week instead of the existing big overcomplicated file players. I only have one urgent wish regarding further development of the TSPlayer and it is support for Unicode file names (wont play at all). Today I have to change all .ts recordings with Unicode file name to short name (through script) before playing them in TSPlayer. With such a solution its unclear which recording is playing when it only says 201709~1.TS. I have been asking about this before and do not expect the answer to be any different from what I got then (NO of course). I will of course continue asking once in a while til it some day goes my way TSPlayer deserves a better fait since it so good. Quote Link to comment
tim copperfield Posted November 18, 2017 Share Posted November 18, 2017 On 10/9/2017 at 6:26 PM, majstang said: support for Unicode file names Maybe if someone bumps this thread enough times it gets done. I was told if you run the app under non-unicode locale matching the filenames, it should work, i.e. using something like http://pooi.moe/Locale-Emulator/ to run it in Japanese or Chinese or etc locale. of course I'm not gonna do that and would rather the software got recompiled as unicode app (it is 2017 after all), but asking them to do that is a bit of a tall order considering it was probably never written with unicode support in mind. Quote Link to comment
majstang Posted November 24, 2017 Share Posted November 24, 2017 (edited) 3 hours ago, hackbart said: I wonder how other solutions deal with this, because it is surprisingly the only problem i found while playing with com skip. I do use this function to deal with the lead time of previous show and trail time of the next show issue. It trims em off from the .vprj quite nicely prior to editor loading. Written in autohotkey as usual Works with vprj (old videoredo format) as input cause it needs the scenemarkers (not present in .edls). Function do output .edl format though. TrimStartEndOfRecording(ByRef VPrj, TrimStart, TrimEnd, ByRef FilePath, OutputEDL := False, edl_skip_field := False) { ; ------------------------------------------------------------------------------------------------------------------- ; VPrj - Content of the project file. ; TrimStart - Time in seconds to trim the start. ; TrimEnd - Time in seconds to trim the end. ; FilePath - 'ByRef' variable to return the file path. ; OutputEDL - If True, return EDL file format; otherwise, project file format (default). ; ------------------------------------------------------------------------------------------------------------------- PrjCut := "" ; variable to return PrjPath := "" ; variable to store the file path SM := [] ; array to store the SceneMarkers CS := [] ; array to store the Cut markers TrimStart *= 10000000 ; Prj time format TrimEnd *= 10000000 ; Prj time format StartCutEnd := "" ; End time of <Cut> tag for the start EndCutStart := "" ; Start time of <Cut> tag for the end ; Split the project file into lines --------------------------------------------------------------------------------- Lines := StrSplit(VPrj, "`n", "`r") ; Collect the cut and scene markers --------------------------------------------------------------------------------- For Each, Line In Lines { If (SubStr(Line, 1, 10) = "<Filename>") ; filename PrjPath := SubStr(Line, InStr(Line, ">") + 1) ; filepath Else If (SubStr(Line, 1, 13) = "<SceneMarker ") ; scene marker SM.Insert(SubStr(Line, InStr(Line, ">") + 1)) ; insert the time part into the array Else If (SubStr(Line, 1, 5) = "<Cut>") { ; cut marker Split := InStr(Line, ":") ; find the position of ':' CS.Insert({Start: SubStr(Line, 6, Split - 6), End: SubStr(Line, Split + 1)}) ; insert start & end parts into the array } } SMC := SM.MaxIndex() ; SceneMarkers count, SM.MaxIndex() will return "" if the array is empty! CSC := CS.MaxIndex() ; Cut count If (SMC = "") { ; did not find a scene marker, something is wrong !!! MsgBox, 16, Wrong file format!, % VPrj Return "" } ; Trim the start --------------------------------------------------------------------------- may need some adjustment Loop, % SMC ; start with the first scene marker If (SM[A_Index] > TrimStart) ; search for the first scene marker > StartCutEnd StartCutEnd := SM[A_Index = 1 ? 1 : A_Index - 1] ; if it's the first marker, put the time into StartCutEnd, ; otherwise use the time of the previous marker. ; Note: You might leave StartCutEnd unchanged as well, if A_Index is 1 Until (StartCutEnd != "") ; if StartCutEnd is set, break the loop ; Trim the end ----------------------------------------------------------------------------- may need some adjustment TrimEnd := SM[SMC] - TrimEnd ; adjust TrimEnd according to the end of the last scene Loop, % (SMC - 1) ; start with the next-to-last scene marker If (SM[SMC - A_Index] < TrimEnd) ; search decrementally for the first scene marker < EndCutStart EndCutStart := SM[SMC - A_Index + 1] ; put the time of the subsequent scene marker into EndCutStart Until (EndCutStart <> "") ; if EndCutStart is set, break the loop ; Adjust existing cuts --------------------------------------------------------------------- may need some adjustment For Index, Cut In CS { ; MsgBox, 0, Cut %Index%, % Start . " - " . End . " - " . Cut.Start . " - " . Cut.End If (Cut.End < StartCutEnd) || (Cut.Start > EndCutStart) ; the tag is completley within the start or end cutting time CS[Index] := "SKIP" ; mark the cut to skip further processing Else If (Cut.Start < StartCutEnd) && (Cut.End > StartCutEnd) { ; the tag starts before and ends after the end of start cutting StartCutEnd := Cut.End ; set StartCutEnd to the tag's end time ???? CS[Index] := "SKIP" ; mark the cut to skip further processing } ELse If (Cut.Start < EndCutStart) && (Cut.End > EndCutStart) { ; ; the tag starts before and ends after start of end cutting EndCutStart := Cut.Start ; set EndCutStart to the tag's start time ????? CS[Index] := "SKIP" ; mark the cut to skip further processing } ; MsgBox, 0, Cut %Index%, % IsObject(CS[Index]) ? CS[Index].Start . ":" . CS[Index].End : CS[Index] } ; Project out ------------------------------------------------------------------------------------------------------- FilePath := PrjPath ; return the file path If (OutputEDL) { ; the caller wants to get an EDL file format FormatFloat := A_FormatFloat ; save the current float format SetFormat, Float, 0.2 ; set the float format to retrieve two decimals; we don't need to set 'FloatFast', because maximum performance isn't important ; Output the start cut If (StartCutEnd <> "") { ; shouldn't be needed actually StartCutEnd /= 10000000.0 ; adjust the time format PrjCut .= "0.00 " . StartCutEnd . " " . edl_skip_field . "`r`n" ; the start is always 0.00, user sets edl_skip_field in configuration section >>>>>>>>>>>>>>>> } ; Output existing cut tags For Each, Cut In CS { If (Cut <> "SKIP") { ; SKIP = do not process this tag Cut.Start /= 10000000.0 ; ; adjust the time format of the start Cut.End /= 10000000.0 ; adjust the time format of the end PrjCut .= Cut.Start . " " . Cut.End . " " . edl_skip_field . "`r`n" ; user sets edl_skip_field in configuration section >>>>>>>>>>>>>>>>>>>>>>>>>>> } } ; Output the end Cut If (EndCutStart <> "") { ; shouldn't be needed actually EndCutStart /= 10000000.0 ; adjust the time format EndCutEnd := SM[SMC] / 10000000.0 ; generate the end PrjCut .= EndCutStart . " " . EndCutEnd . " " . edl_skip_field . "`r`n" ; user sets edl_skip_field in configuration section >>>>>>>>>>>>>>>>>>>>>>>>>>> } ; Done! SetFormat, Float, % FormatFloat ; restore the float format Return PrjCut } ; VPrj format output CutInserted := False ; <Cut> tags aren't inserted as yet For Each, Line In Lines { ; If a scene marker is found and <Cut> tags are not inserted yet, insert them If !(CutInserted) && (SubStr(Line, 1, 13) = "<SceneMarker ") { PrjCut .= StartCutEnd <> "" ? "<Cut>0:" . StartCutEnd . "`r`n" : "" ; cut for the start !!! start is always 0 ("<Cut>0:") For Each, Cut In CS If (Cut <> "SKIP") ; SKIP = do not process this tag PrjCut .= "<Cut>" . Cut.Start . ":" . Cut.End . "`r`n" ; remaining <Cut> tags PrjCut .= EndCutStart <> "" ? "<Cut>" . EndCutStart . ":" . SM[SMC] . "`r`n" : "" ; cut for the end !!! end is always the value of the last scene marker (SM[SMC]) CutInserted := True ; mark cut insertion as done CutInserted := True ; mark cut insertion as done } If (SubStr(Line, 1, 5) <> "<Cut>") ; skip existing <Cut> tags PrjCut .= Line . "`r`n" } Return PrjCut } Quote TrimStart := 110 ;Seconds to trim at start. Trims VPrj from preroll and commercial before actual show. 210 seconds just sets the search range. Both trim commands must be enabled to work. TrimEnd := 180 ;Seconds to trim at end. Trims VPrj from postroll and commercial after actual show. 210 seconds just sets the search range. Won't work if only one trim command is enabled. These values works nicely if having DMS timer leadtime set to 1 minute and follow-up time set to 2 minutes. Christian, just a tip if using comskip v.82_00+ with logo detection, see to it you change shrink_logo to 0 (previous default was 5 seconds) in your comskip.ini. Previous default with latest comskip versions lead to a cut mark set 5 seconds before logo disappered...in other words 5 seconds of actual show was removed prior to commercial block. Quote shrink_logo=0 ; 2017-10-05 removed 5 ,,,Reduce the duration of the logo with this amount of seconds Will see tomorrow if i have any info stored in the brain regarding your other questions Edited November 24, 2017 by majstang Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.