- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
func handleRequest(conn net.Conn) {
// размер данных
buf := make([]byte, 4)
n, err := conn.Read(buf)
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
size := utils.BinToDec(buf)
fmt.Printf("get data size: %v / n: %v\n", size, n)
if size < 10485760 {
// сами данные
binaryData := make([]byte, size)
n, err = io.ReadFull(conn, binaryData)
fmt.Printf("n: %v\n", n)
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
gp3, err := ioutil.TempFile(os.TempDir(), "temp")
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
mp4, err := ioutil.TempFile(os.TempDir(), "temp")
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
err = ioutil.WriteFile(gp3.Name()+".3gp", binaryData, 0644)
if err != nil {
fmt.Printf("%v", utils.ErrInfo(err))
}
out, err := exec.Command("/usr/bin/ffmpeg", "-i", gp3.Name()+".3gp", mp4.Name()+".mp4").Output()
if err != nil {
fmt.Println("/usr/bin/ffmpeg", "-i", gp3.Name()+".3gp", mp4.Name()+".mp4")
fmt.Printf("%v\n", utils.ErrInfo(err))
}
fmt.Printf("out: %v\n", out)
data, err := ioutil.ReadFile(mp4.Name()+".mp4")
if err != nil {
fmt.Println(err)
}
// в 4-х байтах пишем размер данных, которые пошлем далее
size := utils.DecToBin(len(data), 4)
n, err = conn.Write(size)
if err != nil {
fmt.Println(err)
}
fmt.Printf("n: %v\n", n)
// далее шлем сами данные
n, err = conn.Write(data)
if err != nil {
fmt.Println(err)
}
fmt.Printf("n: %v\n", n)
}
}
Со швабры, Go. Мне кажется, или здесь слишком много "if err != nil"?