Developer Chats: How Video Tap sped up performance and improved reliablility with Mux

0:00

I would like wake

0:01

up and I would

0:01

hear the, the like

0:03

support chat sound

0:04

notification from

0:05

our website and

0:06

go, Oh, great.

0:07

I got to go fix

0:07

like a video

0:08

problem again.

0:09

And it would

0:09

just take up

0:10

hours and minutes

0:10

of my morning.

0:12

Every morning Mux

0:13

enables us to not

0:15

worry about all

0:16

that junk anymore.

0:17

And I can

0:18

actually focus on.

0:19

Our strengths,

0:20

right?

0:21

Like I can build

0:21

cool things again.

0:23

Meet Chris Sev.

0:25

He's the founder

0:26

of Video Tap, a

0:27

powerful app that

0:28

makes repurposing

0:29

video content

0:30

easy and fast.

0:31

Chris recently

0:32

grabbed our

0:33

attention when he

0:34

tweeted about how

0:34

a switch to Mux

0:36

not only improved

0:37

video taps,

0:38

video processing

0:38

speed by 80%.

0:40

It also made it

0:41

much more reliable.

0:42

In this chat, we'll

0:43

talk about what his

0:44

pain points were,

0:45

how switching to mux

0:46

helped solve them.

0:47

He'll share his

0:48

insights on building

0:49

apps in the crowded

0:50

AI space and more.

0:51

Let's get into it.

0:53

We worked out our

0:54

old and buggy way

0:55

of handling videos.

0:56

Our new video

0:56

processing pipeline

0:57

is 80 percent faster

0:59

and more reliable.

1:00

Okay.

1:00

This was a tweet

1:00

that went out.

1:01

Can you expand

1:02

on that?

1:02

Like how, how

1:02

did you do that?

1:03

Or what was the,

1:04

what was the

1:04

friction that you

1:04

were running into?

1:05

And then how was

1:06

that resolved

1:07

on your side?

1:09

Yeah.

1:09

So.

1:10

I'll tell you

1:11

the stack and

1:11

then I'll tell

1:12

you the friction.

1:12

So the stack was

1:13

we would upload

1:15

videos and I did

1:15

this because I just

1:16

wanted to stay as

1:17

cheap as possible.

1:18

Video can get

1:18

expensive pretty

1:19

quickly, right?

1:20

You all know.

1:21

Uh, so we upload

1:23

to CloudFlare R2.

1:25

So that's kind of

1:26

our main storage

1:27

point there.

1:27

If we had a

1:28

user upload a

1:29

video, we would

1:29

also pass it to

1:30

CloudFlare Stream.

1:32

Which would

1:32

encode it for us.

1:34

And then we would

1:34

kind of re upload

1:35

it back to R2.

1:37

That whole process

1:37

sucked to generate

1:39

the clipped

1:40

sections of the

1:41

video, because we

1:41

generate clips.

1:42

So basically if

1:43

you're trying

1:44

to clip like 30

1:45

seconds to one

1:46

minute, right?

1:46

Like a 30 second

1:47

clip, we would

1:48

pass it over to

1:49

AWS media convert.

1:51

And that would

1:52

grab the video from

1:54

CloudFlare R2 and

1:55

then like clip it at

1:56

the right section.

1:57

And then it would

1:58

store that on S3.

2:00

And then.

2:01

I didn't want

2:02

like two different

2:02

storage locations.

2:03

So then I would

2:04

just move that

2:04

over to R2.

2:07

And then the last

2:08

part of this is to

2:09

render the clip.

2:10

We're using a

2:11

react package

2:12

called ReMotion to

2:13

do all the video

2:14

editing and, and

2:15

clip rendering.

2:16

So ReMotion

2:17

does the render

2:18

on AWS Lambda.

2:20

There was like

2:21

a hundred points

2:21

where this thing

2:22

could break and to

2:24

debug it was just

2:25

a mess every time.

2:26

And it would

2:27

always break.

2:28

Like it got to

2:28

the point where I

2:29

just like almost

2:30

quit the project.

2:30

Cause I like

2:31

didn't, I couldn't

2:32

figure this

2:33

whole thing out.

2:33

Right.

2:34

So.

2:35

When you're thinking

2:35

about the, the

2:36

changes that you

2:37

made to the pipeline

2:38

and it being eight,

2:39

when you, I think

2:40

it says 80 percent

2:41

faster, was that

2:42

like considering

2:44

the development

2:45

time or the, like

2:45

the frustration or,

2:47

or like the time

2:48

to you actually

2:49

shipping a feature?

2:49

Or is that

2:49

like, actually.

2:51

Clip being made

2:52

and generated is

2:53

now like measurably

2:54

faster as a result.

2:56

Yeah, no, it's,

2:57

it's after a video

2:58

is uploaded, how

2:59

long does it take

2:59

to become ready

3:00

to be clippable?

3:02

And then how

3:02

long does it take

3:03

to, to actually

3:04

generate each clip?

3:05

And both of those,

3:07

I said 80 percent

3:08

to be a little, I

3:09

don't know, like

3:09

conservative, but

3:10

it really is like,

3:11

90 percent faster.

3:13

My stack is Laravel

3:14

and to do the

3:15

whole change up

3:16

was not that hard.

3:17

Cause as soon as the

3:18

video was added, I

3:19

just have a chain of

3:20

actions that happen

3:21

and mux did all that

3:23

stuff and then it

3:24

just sent back a

3:24

webhook, which was

3:25

really nice because

3:26

none of the other

3:26

things had webhooks

3:28

so I was just like

3:29

polling APIs over

3:30

and over and over.

3:31

And the code is

3:32

just much simpler.

3:33

Now it's very easy

3:34

to understand the

3:36

overall flow of how

3:37

our project works.

3:39

Chris, maybe you

3:40

can give us a

3:40

quick tour of how

3:41

VideoTap works

3:42

under the hood.

3:44

Sure.

3:45

So, I am on the Mux

3:47

YouTube channel.

3:48

Basically, pull

3:49

the latest video,

3:49

optimize your

3:50

website's video

3:51

for social media.

3:52

Just grab the

3:52

link here.

3:53

If I go add videos,

3:56

and I'm going to

3:57

add from YouTube.

4:00

We'll paste

4:00

in that link.

4:01

Okay.

4:02

So, everything

4:03

is good here.

4:04

You click start

4:04

processing.

4:05

It jumps over here.

4:06

And then, we do a

4:08

couple steps here.

4:10

As far as processing

4:11

your video, this

4:12

would take like

4:13

estimated time.

4:14

Here's one minute

4:15

that actually

4:16

is pretty close

4:17

to accurate.

4:19

Um, but before it

4:20

was like, it's a

4:21

four minute video,

4:22

as you can see here,

4:23

it would probably

4:24

take us about

4:24

like 15 minutes

4:26

to process and

4:28

people just, you

4:29

know, want their

4:29

content faster.

4:30

Right.

4:31

We have two split

4:32

things happening

4:33

at the same time.

4:33

We have the

4:34

video processing

4:35

through Mux.

4:36

We have.

4:36

Transcript

4:37

generation done

4:38

through assembly

4:39

AI assembly.

4:40

AI is actually

4:41

introduced a new

4:42

model, made it

4:43

super, super fast.

4:44

Like you can

4:44

transcribe a 10

4:45

minute video in

4:46

three seconds,

4:47

and now it's able

4:48

to go generate

4:48

title chapters,

4:49

clips, blog posts,

4:50

and all that.

4:51

So between assembly

4:52

and the mux update,

4:54

like these two

4:55

things alone.

4:56

Used to take 10

4:57

minutes on a four

4:58

minute video and

4:59

we're on this call.

5:00

Like it's

5:00

already done.

5:01

It'll generate

5:02

the clips and then

5:02

it'll kick us over

5:03

to the video page.

5:04

But while that's

5:05

working, let

5:05

me jump into my

5:06

MUX dashboard.

5:08

Yeah.

5:08

So before we would

5:11

on this page, this

5:12

processing video

5:13

would be like a

5:14

bunch of steps,

5:15

it would basically

5:15

upload the video

5:16

to CloudFlare

5:17

R2 as storage.

5:18

Use that to send

5:19

that video over to

5:21

CloudFlare stream

5:22

to encode it.

5:24

And then we would

5:24

re upload it back

5:25

to R2, uh, and then

5:26

delete it off of

5:27

stream to like save

5:28

the money there.

5:29

There's a lot of

5:29

places where like

5:30

I did stuff just

5:31

to save money.

5:32

Looking back, it's

5:33

like such a pain,

5:34

but like it, I

5:35

get why I did it,

5:36

but it's gone.

5:37

Now I don't have

5:37

to do that stuff.

5:39

So we're able

5:39

to kind of get a

5:40

title here, get

5:41

your description,

5:42

get your chapters.

5:44

You know, AI hit or

5:45

miss sometimes, but

5:45

I think we've done

5:46

a lot of work as far

5:47

as like prompting

5:48

design and just

5:49

getting the correct

5:50

information into the

5:52

prompt that I think

5:53

these chapters are

5:54

pretty accurate.

5:55

Uh, tags are

5:56

pretty good too.

5:57

Something that I

5:57

want to do here

5:58

is pull in from

5:59

the YouTube API

6:00

as well and see

6:01

like current tags.

6:02

I want to do

6:03

generate titles and

6:04

then compare across

6:05

like different

6:05

competitors

6:06

type stuff.

6:07

A lot of that's

6:07

down the road,

6:08

but I think that's

6:09

going to be really

6:10

helpful as far as

6:10

like just being

6:11

more competitive

6:12

on YouTube SEO.

6:13

Summary, which a

6:14

lot of people like,

6:15

um, it can also lead

6:17

into like podcast

6:18

show notes, which

6:20

is a feature that

6:21

we're working on,

6:21

but it's pretty

6:22

close to this and

6:24

a meta description

6:25

for your blog

6:26

post type stuff.

6:26

So here's the

6:27

blog post.

6:31

And sometimes

6:32

it gets a little

6:33

wiry with these

6:33

code blocks, but

6:34

one of our cool

6:35

features here is

6:36

like, you can add

6:36

a screenshot, uh,

6:37

drop it in directly

6:38

from a specific

6:39

point of the video.

6:40

Right.

6:41

And that also was

6:44

done with mux,

6:45

which made that

6:47

like a two second

6:48

process before we,

6:49

what would we do?

6:50

We would get

6:51

the video from

6:52

Cloudflare R2.

6:53

We would use FFmpeg

6:54

to screenshot

6:55

that section that

6:57

would create an

6:57

image locally

6:58

on our server.

6:59

And then we

6:59

would upload that

7:00

to R2 as well.

7:04

I'm not even

7:05

trying to like

7:06

hype you guys up.

7:06

It's just amazing.

7:07

So this one turned

7:08

out pretty good.

7:09

Right.

7:09

And a lot of the

7:10

stuff here, uh, the

7:12

next step for our

7:13

blog post feature is

7:14

giving you options

7:15

to like tweak SEO

7:16

keywords, to rank

7:18

across different,

7:19

uh, things, kind

7:20

of like the tools

7:21

you'd find at AH

7:21

refs or, uh, SEM

7:23

rush type stuff.

7:24

So that's another

7:25

thing down

7:26

the pipeline.

7:27

Um, A lot of things

7:28

that I want to

7:28

do that I haven't

7:30

been able to do.

7:30

Cause I'm out

7:31

busy, like fixing

7:32

video bugs, but you

7:33

know, monks is able

7:35

to like, give me

7:36

more time because

7:37

all that's all

7:38

that's fixed now.

7:39

And I guess our

7:41

big feature, nice,

7:43

good screenshot,

7:44

our big feature at

7:45

the end is clips.

7:47

We give you a title,

7:48

kind of what's good

7:48

about this clip.

7:49

And then the

7:49

specific texts

7:50

that you'll show

7:51

in the clip.

7:52

And so I think this

7:54

is kind of like one

7:55

of the wow moments

7:55

that people see.

7:57

And we give you

7:58

a score on it.

7:59

I think there's a

7:59

lot of people doing

8:00

clips nowadays, as

8:02

far as like the AI

8:03

world, because I

8:05

think there's like a

8:05

lot of value in it.

8:06

Descript's doing it.

8:07

Like a lot of

8:07

these big players

8:08

are doing it

8:09

where I want to

8:10

differentiate

8:10

here is.

8:11

Better styles.

8:13

I think we can

8:14

do some really

8:14

cool stuff.

8:15

And then, uh,

8:17

overall workflow,

8:19

like it would

8:19

be amazing.

8:20

Like one of our

8:20

goals here is to

8:21

have a publish

8:22

button and then you

8:23

click publish and

8:24

you see like the

8:25

four clips that you

8:26

have, and you can

8:26

just drag and drop

8:27

to like Monday at

8:28

10, Tuesday at like

8:29

11, uh, Thursday

8:31

at whatever.

8:31

And then just

8:31

publish all four

8:32

of these to like

8:33

TikTok, Twitter,

8:35

uh, LinkedIn and

8:36

YouTube shorts,

8:37

Instagram reels,

8:38

wherever, but do

8:39

all that from, from

8:42

So as far as style

8:44

changes go, we

8:45

have a couple of

8:45

different like

8:46

styling options.

8:48

Um, yeah, you

8:48

can edit your

8:49

clip texts.

8:50

We're trying to

8:50

write social media

8:51

posts for these

8:52

types of things.

8:52

I think this thing

8:53

can be like editable

8:54

in the future

8:55

and tweakable.

8:57

And another thing

8:58

we're working on,

8:59

uh, is, uh, like

9:00

match your tone.

9:01

So if you connect

9:02

your Twitter account

9:03

and your social

9:04

media accounts, we

9:04

should be able to

9:05

like look at your

9:05

previous posts.

9:06

And that's something

9:10

that, uh, we now

9:11

have more time

9:12

to work on again.

9:13

One of the cool

9:13

things right here

9:14

is this is the main

9:17

video at four 21 on

9:18

the duration here.

9:20

Right.

9:21

And if you scroll

9:21

in, we added the

9:23

video at like 1250

9:25

dot 24 and it came,

9:28

it was ready at 52.

9:30

Right.

9:30

So like 25 seconds,

9:32

the first time I

9:32

saw that was like

9:34

the big point

9:34

where I said, Oh,

9:36

this actually can

9:36

change a lot of our

9:38

user experience.

9:40

Each of the specific

9:41

clips, all of

9:42

these correspond

9:42

to one of these on

9:44

this page, right?

9:45

Each of those clips,

9:48

like they were

9:49

pretty much ready

9:50

in like ready

9:52

to stream in two

9:52

seconds and then

9:53

ready to download in

9:56

20 seconds, right?

9:57

I get the appeal

9:58

of building out

9:59

your own workflow

10:00

for video.

10:01

Like I had a server

10:02

that was just

10:02

doing downloads and

10:03

FFmpeg type stuff.

10:05

There's just so

10:06

much overhead in

10:09

a lot of different

10:10

areas that.

10:12

If you're trying

10:12

to build something

10:13

amazing and

10:13

something really

10:14

cool, if that

10:15

stuff is not your

10:16

differentiating

10:16

factor, don't do it.

10:18

Folks like you

10:19

in a situation

10:20

where you're

10:21

trying to build

10:21

something great,

10:22

but starting from

10:23

kind of nothing,

10:24

like starting from

10:24

scratch, we need

10:26

to be there along

10:27

with you, uh, along

10:28

in that journey.

10:29

That we have a, some

10:30

infrastructure in

10:31

place that solves

10:32

all those pain

10:32

points, but doesn't

10:33

break the entire

10:34

budget because

10:35

you cannot invest

10:36

entirely into any

10:38

software out there

10:38

without having

10:40

your business model

10:41

proven, right?

10:42

So like, yeah, we,

10:43

we have to have

10:44

options available

10:45

for folks that

10:46

are in the exact

10:47

position that, that

10:48

you're describing.

10:49

Yeah.

10:50

And you did it.

10:50

Like I looked at

10:51

it and immediately

10:52

thought no way

10:53

that's real.

10:54

And I think that's

10:55

a good thing

10:56

when you look at.

10:56

Which, which part,

10:59

can you, can you

10:59

go into a little

11:00

more detail there?

11:00

Like what plan

11:01

did you end up

11:02

choosing that's,

11:02

that's fitting this

11:04

particular use case?

11:05

I'm on that, I think

11:06

it's what, it starts

11:07

at 10 a month and

11:08

then it's like usage

11:10

base after that.

11:11

Got it.

11:11

Is that right?

11:12

Yeah.

11:12

Yeah.

11:13

Nailed it.

11:13

Yeah.

11:13

So for me, a lot

11:15

of my use cases,

11:16

clipping and, Just

11:19

video processing

11:20

and coding at this

11:21

point and not really

11:22

streaming right

11:23

most most of our

11:24

people that generate

11:25

clips They're gonna

11:26

download them and

11:27

upload them to

11:27

social wherever they

11:28

go So, you know not

11:30

having any anything

11:32

where we're paying

11:33

for things that

11:33

we'd like like,

11:34

oh darn I wish I

11:35

didn't pay for that.

11:36

It's all like

11:37

perfectly placed

11:39

what you consider

11:40

for this This

11:41

product isn't just

11:42

what a lot of other

11:43

people consider

11:44

for an AI feature,

11:45

which is like,

11:46

throw it to an LLM.

11:48

Uh, that's really

11:48

like, we kind of

11:49

take off the mask

11:50

and what's happening

11:51

under it all is

11:51

like, all the hard

11:53

work is happening

11:54

on an LLM and that's

11:55

all that we do.

11:56

Uh, but that's

11:57

not what you,

11:58

you all do that.

11:59

You, you all do a

12:00

lot more than that.

12:01

And where, where

12:01

do you foresee

12:02

standing out?

12:04

Um, not only

12:04

with your AI.

12:05

Integration and

12:06

implementation, but

12:08

in the way that you

12:09

talk about it in

12:10

public, uh, with

12:11

all of the other AI

12:12

noise that's, that's

12:13

out there right now.

12:14

Yeah, yeah,

12:15

you know, AI is

12:16

everywhere now.

12:17

Like everybody's

12:18

either creating

12:18

something new with

12:19

AI or integrating AI

12:20

into something old.

12:21

Right?

12:22

So at this point,

12:24

I like our, our URL

12:27

used to be videotap.

12:28

ai.

12:29

And I deliberately

12:30

said, no, let's

12:31

go get videotap.

12:32

com because in

12:33

a year from now,

12:34

everything's

12:34

going to be AI.

12:35

So what does

12:35

it matter?

12:36

Right?

12:36

I don't even want

12:37

to put that really

12:37

in our messaging

12:38

anymore, because

12:39

it's kind of assumed

12:40

at this point.

12:41

Like I don't

12:41

care if it's AI.

12:42

I just care that

12:43

it made like

12:43

good content

12:44

at this point.

12:45

I saw a great tweet

12:46

from Paul Graham and

12:49

he said that for AI

12:51

tools, your biggest

12:53

differentiation

12:54

isn't how you use an

12:55

LLM, your moat, like

12:57

your differentiator

12:59

is always going to

13:00

be integrations.

13:01

So that's where

13:02

we're leaning.

13:03

Now that we're,

13:04

we've, we're done

13:05

building the core

13:05

and especially

13:06

with mux, I'm,

13:07

this is the first

13:08

time I feel the

13:09

core is stable of

13:10

our foundation of

13:11

what we've built.

13:12

So now we can

13:13

build on those

13:13

integrations.

13:14

And I think

13:14

that's where.

13:16

A lot of people

13:16

should be looking at

13:17

for their AI tools.

13:19

If I have a 10

13:21

different Zapier

13:22

zaps that are

13:23

integrated across

13:24

like my Google

13:25

sheets, my like

13:26

calendar, all

13:27

these things.

13:27

I'm not

13:28

leaving Zapier.

13:29

It's going to take

13:29

me a long time.

13:30

Right.

13:31

That's the

13:31

flow here.

13:32

So a lot of

13:32

our clients are

13:34

marketing teams that

13:36

want to use this.

13:36

And they're,

13:37

they're like

13:37

really want that

13:38

publishing feature.

13:40

If we can streamline

13:41

that whole flow

13:41

for them, like they

13:42

don't care if it's

13:42

AI generator or not.

13:43

They care that it

13:44

like saved them

13:45

that workflow.

13:46

It seems like Chris,

13:47

you, you spent a

13:48

lot of time and

13:49

investment on in

13:50

the community in

13:51

some way, whether

13:51

that's just like

13:52

building in public

13:53

or sharing what

13:54

you know, through

13:55

tutorials or what

13:56

you just learned

13:57

or your experience,

13:58

what, what value

13:59

do you see in does

14:00

it, does it help

14:02

or I won't even put

14:02

words in your mouth?

14:03

What do you see in

14:04

the contributions

14:05

out in the community

14:06

on, on the internet?

14:07

Video tap as, as

14:09

a SAS is it grew

14:11

pretty quickly.

14:12

And we're at a

14:12

point now where I

14:14

think the skillset

14:15

that I had as far

14:16

as just coding and

14:17

just being like a

14:19

little, you know,

14:20

in the cave coding

14:21

and just getting

14:22

things out there

14:22

and getting things

14:23

done, it grew us to

14:24

where we are today.

14:25

But I think that the

14:26

level where we're

14:27

at, that just won't

14:29

do the job anymore.

14:29

I have to like, get

14:30

out there, talk to

14:31

people, be a little

14:32

bit more proactive.

14:33

And I think every

14:34

company comes

14:34

through this,

14:35

like, You have to

14:36

talk about what

14:37

you built phase.

14:38

If, if you're like

14:40

proud of what you

14:40

built, then why

14:41

wouldn't you go

14:42

out and like tell

14:42

people about it?

14:43

Right.

14:44

And I don't

14:45

necessarily

14:46

excel at that.

14:47

And I always think

14:48

of Twitter as like

14:49

a distraction.

14:50

So there's a lot of

14:51

times where I think

14:52

that I'm wasting

14:53

time out there, but.

14:54

Like seeing what

14:55

other people are

14:55

doing, being able

14:56

to talk to you,

14:57

being able to, you

14:58

know, chat with

14:59

other people that

14:59

are building the

15:00

same thing, have

15:00

the same problems.

15:01

I think if anything,

15:03

it's just good

15:03

to have the water

15:04

cooler and talk to

15:05

other people that

15:06

have your problems.

15:08

I haven't really

15:08

tracked metrics on

15:09

it and like, and

15:10

I don't know if

15:11

that's a hundred

15:12

percent the way

15:13

to look at it.

15:13

Like, Oh, you know,

15:14

50 people came from

15:15

X this week, none

15:17

of them converted.

15:18

It's, it was

15:18

a failure.

15:20

It's, it's top

15:21

of funnel, right?

15:22

Like you can't

15:23

really track

15:24

how those people

15:25

convert, but brand

15:27

sentiment, how

15:28

they feel about

15:28

you, how I feel

15:30

about mux, right?

15:31

Like it goes a

15:33

long way, uh, that

15:34

dev love ability.

15:35

Uh, louder for the

15:39

people in the back.

15:40

Um, anything else

15:43

on your mind?

15:45

Always shout

15:45

out my wife.

15:46

She's fantastic.

15:47

She, uh, just

15:48

started a new blog

15:49

called richest you.

15:50

She does a

15:50

lot of like

15:51

personal finance.

15:52

So if you want to

15:52

check that out,

15:53

she's also in DevRel

15:54

actually, and is

15:55

a video tap user,

15:57

the most critical

15:58

video tap user.

15:59

Like she's over

16:00

here at like her

16:00

desk and she'll

16:01

just say, Hey, Why

16:02

isn't this working?

16:03

And I'll have to

16:04

like go over and

16:04

she's like clicking

16:05

a button that

16:06

isn't should work.

16:08

So that's, that's

16:09

a great way to

16:10

get feedback.

16:10

yeah, I don't know.

16:11

This was fun.

16:12

Thanks for

16:12

having me.

16:13

I enjoyed

16:14

implementing Mux,

16:15

using Mux, and

16:16

I'm excited for

16:17

being able to

16:18

build stuff again.

16:20

Let me ask you

16:20

one last thing.

16:21

Where can people

16:22

learn more about

16:24

trying out VideoTap

16:25

or just about you

16:26

on the internet?

16:28

Yeah, so VideoTap.

16:30

com is the spot.

16:31

We had to go bid

16:32

for that domain to

16:33

get the dot com,

16:33

but we got it.

16:35

Uh, And on Twitter,

16:39

xchris__sev,

16:41

chrissev was taken.

16:43

But, those are the

16:44

two big spots that

16:45

you can find me in.

16:45

That's really

16:46

where I, like, make

16:47

the most noise.

16:49

Awesome.

16:50

Thanks Chris.

16:51

Thanks.