pipe flv to ffmpeg hls segmentation
This commit is contained in:
parent
f165efcdc2
commit
f80e86fcf6
2 changed files with 22 additions and 7 deletions
|
@ -2,10 +2,12 @@ package rtmp
|
|||
|
||||
import (
|
||||
"stream_server/rtmp/flv"
|
||||
"os"
|
||||
)
|
||||
|
||||
func HandleDataLoop(chnk_wrp_ptr *ChunkWrapper) {
|
||||
file_writer, err := flv.NewFLVWriter(chnk_wrp_ptr.params.stream_key)
|
||||
base_dir, _ := os.UserHomeDir()
|
||||
file_writer, err := flv.NewFLVWriter(base_dir + "/live/" + chnk_wrp_ptr.params.stream_key + "/")
|
||||
defer file_writer.Close()
|
||||
if err != nil {
|
||||
return
|
||||
|
|
|
@ -2,22 +2,35 @@ package flv
|
|||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
"encoding/binary"
|
||||
)
|
||||
|
||||
type FLVWriter struct {
|
||||
w io.Writer
|
||||
w io.WriteCloser
|
||||
}
|
||||
|
||||
func NewFLVWriter(stream_dir string) (*FLVWriter, error) {
|
||||
writer := new(FLVWriter)
|
||||
base_dir, _ := os.UserHomeDir()
|
||||
filepipe, err := os.Create(base_dir + "/live/" + stream_dir + "/stream.flv")
|
||||
transcoder := exec.Command(
|
||||
"ffmpeg",
|
||||
"-probesize", "5000",
|
||||
"-i", "pipe:0",
|
||||
"-c:a", "aac",
|
||||
"-c:v", "h264",
|
||||
"-b:v", "1M",
|
||||
"-hls_time", "6",
|
||||
"-hls_list_size", "10",
|
||||
"-hls_flags", "delete_segments",
|
||||
"stream.m3u8",
|
||||
)
|
||||
transcoder.Dir = stream_dir
|
||||
flvpipe, err := transcoder.StdinPipe()
|
||||
transcoder.Start()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
writer.w = filepipe
|
||||
writer.w = flvpipe
|
||||
if err = writer.write_flv_header(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -25,7 +38,7 @@ func NewFLVWriter(stream_dir string) (*FLVWriter, error) {
|
|||
}
|
||||
|
||||
func (writer *FLVWriter) Close() (error) {
|
||||
return writer.w.(*os.File).Close()
|
||||
return writer.w.Close()
|
||||
}
|
||||
|
||||
func (writer *FLVWriter) WriteMetadataTag(data *[]byte) (err error) {
|
||||
|
|
Loading…
Reference in a new issue