hi, anyone have any idea how to use ffmpeg.wasm wi...
# webassembly
u
hi, anyone have any idea how to use ffmpeg.wasm with kotlin. https://ffmpegwasm.netlify.app/
a
So, because it's provided as a library, you can add npm dependency to the ffmpeg in your `build.gradle.kts`:
Copy code
kotlin {
  wasmJs { ... }

  sourceSets {
    val wasmMain by getting {
       dependencies {
          // ...
          implementation(npm("@ffmpeg/ffmpeg", "VERSION"))             
          implementation(npm("@ffmpeg/util", "@ffmpeg/util"))
       }
    }
  }
}
After that you need to declare a file that contains external declarations that describe the library (you can try to generate them using Dukat or Karakum) As for example, it may look like this (based on the ffmpeg docs):
Copy code
@file:JsModule("@ffmpeg/ffmpeg")
package org.company.externals.ffmpeg

external interface FFmpegLoadOptions: JsAny {
  val coreURL: JsAny
  val wasmURL: JsAny
}

external class FFmpeg {
  // ...
  fun load(opts: FFmpegLoadOptions): Promise<JsAny?>
}
Copy code
```@file:JsModule("@ffmpeg/util")
package org.company.externals.ffmpeg.utils

external fun toBlobURL(path: String, format: String): Promise<JsAny>
Copy code
```import org.company.externals.ffmpeg.FFmpeg
import org.company.externals.ffmpeg.FFmpegLoadOptions
import org.company.externals.ffmpeg.utils.toBlobURL

fun FFmpegLoadOptions(coreURL: JsAny, wasmURL: JsAny): FFmpegLoadOptions =
  js("({ coreURL: coreURL, wasmURL: wasmURL })")

fun main() = runBlocking {
  val ffmpegRef = FFmpeg();
  val baseURL = "<https://unpkg.com/@ffmpeg/core@0.12.7/dist/umd>"

  ffmpeg
    .load(FFmpegLoadOptions(
      coreURL = toBlobURL("$baseURL/ffmpeg-core.js", "text/javascript").await(),
      wasmURL = toBlobURL("$baseURL/ffmpeg-core.wasm", "application/wasm").await(),
    ))
    .await();
}
🙌 1
u
@Artem Kobzar Wow thanks a lot ! 🤩K
blob no problem 1
kodee welcoming 1
1