Vtc.Timecode (vtc v0.1.8) View Source

Represents the frame at a particular time in a video.

New Timecode values are created with the Vtc.Timecode.with_seconds/2 and Vtc.Timecode.with_frames/2

Link to this section Summary

Functions

Returns the number of feet and frames this timecode represents if it were shot on 35mm 4-perf film (16 frames per foot). ex: '5400+13'.

Returns the number of frames that would have elapsed between 00:00:00:00 and this timecode.

Returns the number of elapsed ticks this timecode represents in Adobe Premiere Pro.

Runtime Returns the true, real-world runtime of the timecode in HH:MM:SS.FFFFFFFFF format.

The individual sections of a timecode string as i64 values.

Returns the the formatted SMPTE timecode: (ex: 01:00:00:00).

Returns a new Vtc.Timecode with a Vtc.Timecode.frames/1 return value equal to the frames arg.

Returns a new Vtc.Timecode with a Vtc.Timecode.premiere_ticks/1 return value equal to the ticks arg.

Returns a new Vtc.Timecode with a Vtc.Timecode.seconds field value equal to the seconds arg.

Link to this section Types

Specs

parse_result() :: {:ok, t()} | {:error, Vtc.Timecode.ParseError.t()}

Type returned by Vtc.Timecode.with_seconds/2 and Vtc.Timecode.with_frames/2.

Specs

t() :: %Vtc.Timecode{rate: Vtc.Framerate.t(), seconds: Ratio.t() | integer()}

Vtc.Timecode type.

Fields

  • :seconds: The real-world seconds elapsed since 01:00:00:00 as a rational value. (Note: The Ratio module automatically will coerce itself to an integer whenever possible, so this value may be an integer when exactly a whole-second value).

  • :rate: the Framerate of the timecode.

Link to this section Functions

Specs

feet_and_frames(t()) :: String.t()

Returns the number of feet and frames this timecode represents if it were shot on 35mm 4-perf film (16 frames per foot). ex: '5400+13'.

What it is

On physical film, each foot contains a certain number of frames. For 35mm, 4-perf film (the most common type on Hollywood movies), this number is 16 frames per foot. Feet-And-Frames was often used in place of Keycode to quickly reference a frame in the edit.

Where you see it

For the most part, feet + frames has died out as a reference, because digital media is not measured in feet. The most common place it is still used is Studio Sound Departments. Many Sound Mixers and Designers intuitively think in feet + frames, and it is often burned into the reference picture for them.

  • Telecine.

  • Sound turnover reference picture.

  • Sound turnover change lists.

Specs

frames(t()) :: integer()

Returns the number of frames that would have elapsed between 00:00:00:00 and this timecode.

What it is

Frame number / frames count is the number of a frame if the timecode started at 00:00:00:00 and had been running until the current value. A timecode of '00:00:00:10' has a frame number of 10. A timecode of '01:00:00:00' has a frame number of 86400.

Where you see it

  • Frame-sequence files: 'my_vfx_shot.0086400.exr'

  • FCP7XML cut lists:

      <timecode>
          <rate>
              <timebase>24</timebase>
              <ntsc>TRUE</ntsc>
          </rate>
          <string>01:00:00:00</string>
          <frame>86400</frame>  <!-- <====THIS LINE-->
          <displayformat>NDF</displayformat>
      </timecode>

Specs

premiere_ticks(t()) :: integer()

Returns the number of elapsed ticks this timecode represents in Adobe Premiere Pro.

What it is

Internally, Adobe Premiere Pro uses ticks to divide up a second, and keep track of how far into that second we are. There are 254016000000 ticks in a second, regardless of framerate in Premiere.

Where you see it

  • Premiere Pro Panel functions and scripts.

  • FCP7XML cutlists generated from Premiere:

    <clipitem id="clipitem-1">
    ...
    <in>158</in>
    <out>1102</out>
    <pproTicksIn>1673944272000</pproTicksIn>
    <pproTicksOut>11675231568000</pproTicksOut>
    ...
    </clipitem>

Specs

runtime(t(), integer()) :: String.t()

Runtime Returns the true, real-world runtime of the timecode in HH:MM:SS.FFFFFFFFF format.

Arguments

  • precision: The number of places to round to. Extra trailing 0's will still be trimmed.

What it is

The formatted version of seconds. It looks like timecode, but with a decimal seconds value instead of a frame number place.

Where you see it

• Anywhere real-world time is used.

• FFMPEG commands:

  ffmpeg -ss 00:00:30.5 -i input.mov -t 00:00:10.25 output.mp4

Note

The true runtime will often diverge from the hours, minutes, and seconds value of the timecode representation when dealing with non-whole-frame framerates. Even drop-frame timecode does not continuously adhere 1:1 to the actual runtime. For instance, <01:00:00;00 @ <29.97 NTSC DF>> has a true runtime of '00:59:59.9964', and <01:00:00:00 @ <23.98 NTSC NDF>> has a true runtime of '01:00:03.6'

Specs

sections(t()) :: Vtc.Timecode.Sections.t()

The individual sections of a timecode string as i64 values.

Specs

timecode(t()) :: String.t()

Returns the the formatted SMPTE timecode: (ex: 01:00:00:00).

What it is

Timecode is used as a human-readable way to represent the id of a given frame. It is formatted to give a rough sense of where to find a frame: {HOURS}:{MINUTES}:{SECONDS}:{FRAME}. For more on timecode, see Frame.io's excellent post on the subject.

Where you see it

Timecode is ubiquitous in video editing, a small sample of places you might see timecode:

  • Source and Playback monitors in your favorite NLE.
  • Burned into the footage for dailies.
  • Cut lists like an EDL.

Specs

to_string(t()) :: String.t()
Link to this function

with_frames(frames, rate)

View Source

Specs

Returns a new Vtc.Timecode with a Vtc.Timecode.frames/1 return value equal to the frames arg.

with_frames takes many different formats (more than just numeric types) that represent the frame count of the timecode.

Arguments

  • frames - A value which can be represented as a frame number / frame count.
  • rate - The Framerate at which the frames are being played back.
Link to this function

with_frames!(frames, rate)

View Source

Specs

with_frames!(Vtc.Source.Frames.t(), Vtc.Framerate.t()) :: t()

As Vtc.Timecode.with_frames/2, but raises on error.

Link to this function

with_premiere_ticks(ticks, rate)

View Source

Specs

Returns a new Vtc.Timecode with a Vtc.Timecode.premiere_ticks/1 return value equal to the ticks arg.

with_premiere_ticks takes many different formats (more than just numeric types) that can represent the tick count of the timecode.

Arguments

  • frames - A value which can be represented as a frame number / frame count.
  • rate - The Framerate at which the frames are being played back.
Link to this function

with_premiere_ticks!(ticks, rate)

View Source

Specs

with_premiere_ticks!(Vtc.Source.Frames.t(), Vtc.Framerate.t()) :: t()

As Vtc.Timecode.with_premiere_ticks/2, but raises on error.

Link to this function

with_seconds(seconds, rate)

View Source

Specs

Returns a new Vtc.Timecode with a Vtc.Timecode.seconds field value equal to the seconds arg.

Timecode::with_frames takes many different formats (more than just numeric types) that represent the frame count of the timecode.

Arguments

  • seconds - A value which can be represented as a number of seconds.
  • rate - The Framerate at which the frames are being played back.
Link to this function

with_seconds!(seconds, rate)

View Source

Specs

with_seconds!(Vtc.Source.Seconds.t(), Vtc.Framerate.t()) :: t()

As Vtc.Timecode.with_seconds/2, but raises on error.