Skip to content

Instantly share code, notes, and snippets.

@pascalopitz
Created May 20, 2014 13:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pascalopitz/b307b447a98cb0471e10 to your computer and use it in GitHub Desktop.
Save pascalopitz/b307b447a98cb0471e10 to your computer and use it in GitHub Desktop.
package main
import "io"
import "os"
import "os/exec"
import "log"
import "net/http"
const TRANSCODER_FORMAT = "mp3"
func StreamTranscodeM4aToMp3(url string, writer http.ResponseWriter) {
headers := writer.Header()
headers.Add("Content-Type", "audio/"+TRANSCODER_FORMAT)
cmd := exec.Command("ffmpeg", "-i", "-", "-f", TRANSCODER_FORMAT, "-")
stdin, err := cmd.StdinPipe()
stdout, err := cmd.StdoutPipe()
resp, _ := http.Get(url)
ch := make(chan bool)
defer stdin.Close()
defer stdout.Close()
defer close(ch)
go func(die chan bool) {
io.Copy(writer, stdout)
}(ch)
go func(die chan bool) {
io.Copy(stdin, resp.Body)
cmd.Wait()
}(ch)
if err != nil {
log.Fatal(err)
}
if err := cmd.Run(); err != nil {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment