Skip to content

KasukuSakura/silk-codec

Repository files navigation

silk-codec

A library for convert PCM to tencent silk files.

Features

  • Convert PCM to silk
  • Convert audio to silk (FFMPEG required)
  • Convert silk to PCM

Platform supported

  • Windows x64
  • Windows x86
  • Linux x64
  • Linux arm64
  • Android x86
  • Android x86_64
  • Android arm64
  • Mac OS

Usage

CLI

ffmpeg -y -i $INPUT -acodec pcm_s16le -f s16le -ac 1 tmp.pcm
silk_codec pts -i tmp.pcm -s $HZ -o out.silk
ffmpeg version git-2020-08-16-5df9724 Copyright (c) 2000-2020 the FFmpeg developers
Input #0, mp3, from 'Conqueror.mp3':
Stream mapping:
  Stream #0:0 -> #0:0 (mp3 (mp3float) -> pcm_s16le (native))
Press [q] to stop, [?] for help
Output #0, s16le, to 'pipe:':
  Metadata:
    Stream #0:0: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s
                                   ^~~~~
                                   It is $HZ

Java

Maven Central

Jar was published as io.github.kasukusakura:silk-codec

public class A {
    public static void normal() throws Throwable {
        // System.load(); // load native if necessary
        var simpleRate = 44100;
        var pcm = "src.pcm";

        try (var som = new BufferedOutputStream(new FileOutputStream(
                "out.silk"
        ))) {
            SilkCoder.encode(
                    new BufferedInputStream(new FileInputStream(pcm)),
                    som,
                    simpleRate
            );
        }
    }

    public static void any() throws Throwable {
        // System.load(); // load native if necessary

        var threadPool = Executors.newCachedThreadPool();

        var stream = new AudioToSilkCoder(threadPool);
        try (var fso = new BufferedOutputStream(new FileOutputStream("out.silk"))) {
            stream.connect("ffmpeg", "src.mp3", fso);
        }
        System.out.println("DONE");
        threadPool.shutdown();
    }
}