Got a RevidCLI written, just need to test

This commit is contained in:
Saxon Milton 2018-04-15 20:12:06 +09:30
parent 4ae6919cae
commit 6f82735ab2
2 changed files with 135 additions and 2 deletions

View File

@ -41,7 +41,6 @@ type Config struct {
Input uint8
InputCodec uint8
Output uint8
RtmpEncodingMethod uint8
RtmpMethod uint8
Packetization uint8
QuantizationMode uint8
@ -187,7 +186,7 @@ func (config *Config) Validate(r *revidInst) error {
case Ffmpeg:
case NothingDefined:
r.Log(Warning, "No RTMP encoding method defined, defautling to ffmpeg!")
config.RtmpEncodingMethod = Ffmpeg
config.RtmpMethod = Ffmpeg
default:
return errors.New("Bad rtmp method defined in config!")
}

134
revid/RevidCLI.go Normal file
View File

@ -0,0 +1,134 @@
package main
import (
"flag"
)
const (
inputPtr = 0
inputCodecPtr = 1
outputPtr = 2
rtmpMethodPtr = 3
packetisationPtr = 4
quantizationModePtr = 5
verbosityPtr = 6
framesPerClipPrt = 7
rtmpUrlPtr = 8
bitratePtr = 9
outputFileNamePtr = 10
inputFileNamePtr = 11
heightPtr = 12
widthPtr = 13
frameRatePtr = 14
httpAddressPtr = 15
quantizationPtr = 18
timeoutPtr = 19
intraRefreshPeriodPtr = 20
sleepTime = 2 * 43200
)
func main() {
flagNames := [19][2]string{
{"Input", "The input type"},
{"InputCodec", "The codec of the input"},
{"Output", "The output type"},
{"RtmpMethod", "The method used to send over rtmp (ffmpeg or librtmp)"},
{"Packetization", "The method of data packetisation"},
{"QuantizationMode", "The level of quantization"},
{"Verbosity", "Verbosity on or off"},
{"FramesPerClip", "Number of frames per clip sent"},
{"RtmpUrl", "Url of rtmp endpoint"},
{"Bitrate", "Bitrate of recorded video"},
{"OutputFileName", "The directory of the output file"},
{"InputFileName", "The directory of the input file"},
{"Height", "Height in pixels"},
{"Width", "Width in pixels"},
{"FrameRate", "Frame rate of captured video"},
{"HttpAddress", "Destination address of http posts"},
{"Quantization", "Desired quantization value"},
{"Timeout", "Http timeout in seconds"},
{"IntraRefreshPeriod", "The IntraRefreshPeriod i.e. how many keyframes we send"},
}
var flags [20](*string)
for i := 0; i < 20; i++ {
flags[i] = flag.String(flagNames[i][0], "", flagNames[i][1])
}
flag.Parse()
config := Config{}
switch flags[inputPtr] {
case "Raspivid":
config.Input = Raspivid
case "Rtp":
config.Input = Rtp
case "File":
config.Input = File
}
switch flags[inputCodecPtr] {
case "H264Codec":
config.InputCodec = H264Codec
}
switch flags[outputPtr] {
case "File":
config.Output = File
case "Http":
config.Output = Http
case "Rtmp":
config.Output = Rtmp
}
switch flags[rtmpMethodPtr] {
case "Ffmpeg":
config.RtmpMethod = Ffmpeg
case "LibRtmp":
config.RtmpMethod = LibRtmp
}
switch flags[packetisationPtr] {
case "None":
config.Packetisation = None
case "Rtp":
config.Packetisation = Rtp
case "Flv":
config.Packetisation = Flv
}
switch flags[quantisationModePtr] {
case "QuantizationOn":
config.Quantization = QuantizationOn
case "QuantizationOff":
config.Quantization = QuantizationOff
}
switch flags[verbosityPtr] {
case "No":
config.Verbosity = No
case "Yes":
config.Verbosity = Yes
}
config.FramesPerClip = flags[framesPerClipPtr]
config.RtmpUrl = flags[rtmpUrlPtr]
config.Bitrate = flags[bitratePtr]
config.OutputFileName = flags[outputFileNamePtr]
config.InputFileName = flags[inputFileNamePtr]
config.Height = flags[heightPtr]
config.Width = flags[widthPtr]
config.FrameRate = flags[frameRatePtr]
config.HttpAddress = flags[httpAddressPtr]
config.Quantization = flags[quantisationPtr]
config.Timeout = flags[timeoutPtr]
config.IntraRefreshPeriod = flags[intraRefreshPeriodPtr]
revidInst, err := NewRevidInstance(config)
if err != nil {
fmt.Println(err)
}
revidInst.Start()
time.Sleep(sleepTime * time.Second)
revidInst.Stop()
}