diff --git a/model/transcoding.go b/model/transcoding.go
index 52bb74ea3..40ccb5dfb 100644
--- a/model/transcoding.go
+++ b/model/transcoding.go
@@ -12,6 +12,7 @@ type Transcodings []Transcoding
 
 type TranscodingRepository interface {
 	Get(id string) (*Transcoding, error)
+	CountAll(...QueryOptions) (int64, error)
 	Put(*Transcoding) error
 	FindByFormat(format string) (*Transcoding, error)
 }
diff --git a/persistence/transcoding_repository.go b/persistence/transcoding_repository.go
index 831ba4d30..c51c5b999 100644
--- a/persistence/transcoding_repository.go
+++ b/persistence/transcoding_repository.go
@@ -28,6 +28,10 @@ func (r *transcodingRepository) Get(id string) (*model.Transcoding, error) {
 	return &res, err
 }
 
+func (r *transcodingRepository) CountAll(qo ...model.QueryOptions) (int64, error) {
+	return r.count(Select(), qo...)
+}
+
 func (r *transcodingRepository) FindByFormat(format string) (*model.Transcoding, error) {
 	sel := r.newSelect().Columns("*").Where(Eq{"target_format": format})
 	var res model.Transcoding
diff --git a/server/initial_setup.go b/server/initial_setup.go
index 72347400c..cd0ad971a 100644
--- a/server/initial_setup.go
+++ b/server/initial_setup.go
@@ -14,6 +14,10 @@ import (
 
 func initialSetup(ds model.DataStore) {
 	_ = ds.WithTx(func(tx model.DataStore) error {
+		if err := createDefaultTranscodings(ds); err != nil {
+			return err
+		}
+
 		_, err := ds.Property(nil).Get(consts.InitialSetupFlagKey)
 		if err == nil {
 			return nil
@@ -29,10 +33,6 @@ func initialSetup(ds model.DataStore) {
 			}
 		}
 
-		if err = createDefaultTranscodings(ds); err != nil {
-			return err
-		}
-
 		err = ds.Property(nil).Put(consts.InitialSetupFlagKey, time.Now().String())
 		return err
 	})
@@ -83,6 +83,10 @@ func createJWTSecret(ds model.DataStore) error {
 
 func createDefaultTranscodings(ds model.DataStore) error {
 	repo := ds.Transcoding(nil)
+	c, _ := repo.CountAll()
+	if c != 0 {
+		return nil
+	}
 	for _, d := range consts.DefaultTranscodings {
 		var j []byte
 		var err error