dcaというコマンドをGoプログラムを利用して実行したい
https://github.com/bwmarrin/dca/tree/master/cmd/dca
dcaというコマンドはwavなどの音声形式をdca形式に変換するためのコマンドなのですが、これをGoのプログラムから動かしたく以下のようなプログラムを作成したのですが、普通にコマンドを入力して作成したファイルよりも容量が小さく正しいファイルが生成できません。どう修正すれば正しいファイルを生成できるのでしょうか。
コマンド
dca -i hello.wav --raw > hello.dca
プログラム
package main
import (
"io"
"io/ioutil"
"os"
"os/exec"
)
func main() {
b, err := ioutil.ReadFile("hello.wav")
if err != nil {
panic(err)
}
cmd := exec.Command("dca", "--raw", "-i", "pipe:0")
stdin, _ := cmd.StdinPipe()
io.WriteString(stdin, string(b))
stdin.Close()
out, err := cmd.Output()
if err != nil {
panic(err)
}
f, err := os.Create("hello.dca")
if err != nil {
panic(err)
}
defer func() {
if err := f.Close(); err != nil {
panic(err)
}
}()
if _, err := f.Write(out); err != nil {
panic(err)
}
}