Timecode from 23:59:59:24 to 00:00:00:00

Questions and answers on how to get the most out of FFAStrans
Post Reply
Railio
Posts: 14
Joined: Wed May 31, 2023 7:23 am

Timecode from 23:59:59:24 to 00:00:00:00

Post by Railio »

Hello,
newbie here!
sorry for flooding with requests the forum of this great software!

I am trying to burn-in the timecode on videos we export. We edit in Premiere Pro and our timeline starts at 23:59:50:00 to allow a 10 seconds slate at the beginning, so that the actual program starts at 0:00:00:00.

This works in Premiere Pro, however, if I tell FFAStrans to use the clip's original TC as a start, the TC goes to 24:00:00:00.
I searched the forum but couldn't find any previous request about this, would you be able to help?
Thanks!
Screenshot 2023-05-31 160809.png
Screenshot 2023-05-31 160809.png (12.36 KiB) Viewed 1773 times
Screenshot 2023-05-31 160611.png
Screenshot 2023-05-31 160611.png (315.94 KiB) Viewed 1773 times
emcodem
Posts: 1631
Joined: Wed Sep 19, 2018 8:11 am

Re: Timecode from 23:59:59:24 to 00:00:00:00

Post by emcodem »

No worries, we love requests, especially when it goes in direction of unwanted/bug behaviour :D
Is this the same workflow as the other one, e.g. you encode to xdcamhd? I ask because 24:00 timecode is "allowed" in some formats but definitely not in mpeg2.
emcodem, wrapping since 2009 you got the rhyme?
Railio
Posts: 14
Joined: Wed May 31, 2023 7:23 am

Re: Timecode from 23:59:59:24 to 00:00:00:00

Post by Railio »

Oh, those are very kind words!
No, in this case I am interested in a low-resolution H.264 for preview only.
Thanks!
admin
Site Admin
Posts: 1658
Joined: Sat Feb 08, 2014 10:39 pm

Re: Timecode from 23:59:59:24 to 00:00:00:00

Post by admin »

Hi Railio, thanks for reporting this :-)

This is default behavior of the ShowSMPTE filter in avisynth. Obviously one should be able to make sure it's reset to 00:00:00:00 instead of continuing to 24:00:00:00. We will have to address this in the next version and work around the inbuilt limitation of the ShowSMPTE filter.

-steinar
ThomasM
Site Admin
Posts: 223
Joined: Wed Feb 22, 2017 6:36 am

Re: Timecode from 23:59:59:24 to 00:00:00:00

Post by ThomasM »

Hi Railio,

the 24:00:00:00 is wrong for sure, maybe it goes to 29:59:59:24 to make us work longer... :lol:

AFAIK the behaviour in various Tape-Machines and AVID Batch-Import is like that:
TC at Position is: 23:45:10:10
enter TC on locator: 00:01:05:00
-> Recorder will REWIND because 00:01:05:00 is before 23:45:10:10

BUT
a TC-generator set to 23:59:50:00 and started will go over the 00:00:00:00-Time, not 24:00:00:00

I would recommend to avoid these "next-day"-Timecodes. Also, never start at 00:00:00:00. For best compatibility start recording-media at 01:00:00:00 and timelines at 10:00:00:00 or, if you want to add a leader of say 10 Seconds, 09:59:50:00.

Just my two cents...

cheers,
thomas
Railio
Posts: 14
Joined: Wed May 31, 2023 7:23 am

Re: Timecode from 23:59:59:24 to 00:00:00:00

Post by Railio »

We clearly inherited this way of working from our tapes era :)
But I guess your suggestion makes sense, ThomasM, I think we will adopt that and therefore solve the issue.

Thank you all!
emcodem
Posts: 1631
Joined: Wed Sep 19, 2018 8:11 am

Re: Timecode from 23:59:59:24 to 00:00:00:00

Post by emcodem »

Yeah we generally tend to avoid midnight timecode as well but sometimes it is not possible (e.g. we had a 3 day long recording from costa concordia sinking hehe)

To complete this, here is a custom avs script that can be used 1:1 in the custom avs processor.

Code: Select all

m_clip = super(m_clip,"%s_start_tc%")
return m_clip


####  DO NOT MODIFY LINES BELOW UNLESS YOU KNOW WHAT YOU DO

#
#	Mug's Timecode stuff. (modified by emcodem to consider midnight timecode)
#
#	tc:	
#		enter a timecode string in quotes, and out comes an integer frame number.
#
#	itc:	
#		reverse of tc - enter a frame number, and out comes a SMPTE timecode.
#
#	- for both of these, you can enter a framerate as well (last.framerate is useful)
#
#
#	super:
#		outputs a SMPTE timecode in a shaded box.  useful for subtitling.
#
#		- you can also enter a "start timecode" in quotes (like "10:00:00:00")
#		which helps if you're syncing with a tape's timecode.
#



function tc (string "timecode", float "rate")
{
	#frames from smpte tc and framerate
	rate=default(rate,25)
	
	frames=value(rightstr(timecode,2))
	secs=value(rightstr(timecode,5).leftstr(2))*rate
	mins=value(rightstr(timecode,8).leftstr(5))*60*rate
	hours=value(rightstr(timecode,11).leftstr(8))*60*60*rate
	
	int(hours+mins+secs+frames)
}

function itc (int "framecount", float "rate", bool "ms")
{
	rate=default(rate,25)
	ms = default(ms, false)
	
	drop = (rate==29.97)? true : false
	rate2 = (drop==true)? 30 : rate
	
	hours=floor((framecount/rate)/3600)%60
	mins=floor((framecount/rate)/60.0)%60
	secs=floor(framecount/rate)%60
	milli=floor(1000*framecount/rate)%6000%1000
	fmilli=framecount/rate - floor(framecount/rate)
	#frames=floor(fmilli*rate2)
	frames=framecount%int(rate)
	
	dframes = (drop==false)? frames : (secs==0)&&(mins%10!=0)? floor(fmilli*rate2) + 2 : frames
	
	return (ms==false)? (string(hours,"%02.0f")+":"+string(mins,"%02.0f")+":"+string(secs,"%02.0f")+":"+string(frames,"%02.0f")) :
\	(string(hours,"%02.0f")+":"+string(mins,"%02.0f")+":"+string(secs,"%02.0f")+":"+string(milli,"%03.0f"))
}

function super (clip c, string "offset", bool "ms")
{
global rate = c.framerate
global bheight=int(c.height*0.15/4)*4
bwidth=int(c.width*0.4/4)*4
off=int(c.height*0.15/4)*4
ms = default(ms, false)

offset = default(offset,"00:00:00:00")
global offset = tc(offset)
global ms = ms

box=c.crop((c.width-bwidth)/2, c.height-(bheight+off), bwidth, bheight).levels(0,1,255,0,160)
left=c.crop(0, 0, (c.width-bwidth)/2, 0)
right=c.crop((c.width-bwidth)/2 + bwidth, 0, (c.width-bwidth)/2, 0)
top=c.crop((c.width-bwidth)/2, 0, bwidth, c.height-(bheight+off))
bottom=c.crop((c.width-bwidth)/2, c.height-off, bwidth, off)

#do we exceed 23:59:59:xx


box = ScriptClip(box, "
	midnight = int(24*60*60*rate)
	framenum_normalized = (current_frame+offset) <= midnight ? (current_frame+offset) : current_frame - (midnight - offset)
	Subtitle(String(itc(framenum_normalized, rate, ms=ms)),align=2,y=int(.225*bheight) + bheight/2, size=round(.45*bheight), spc=int(.3*bheight), text_color=$ffffff)
")


middle=stackvertical(top,box,bottom)
stackhorizontal(left,middle,right)

}
emcodem, wrapping since 2009 you got the rhyme?
Railio
Posts: 14
Joined: Wed May 31, 2023 7:23 am

Re: Timecode from 23:59:59:24 to 00:00:00:00

Post by Railio »

I will try this, thanks!
Post Reply