Pipe Protocol Unit tests + README Cleanup

This commit is contained in:
muhammadharis
2019-11-03 19:36:23 -05:00
parent 7784ff4443
commit 2d4028807f
3 changed files with 70 additions and 18 deletions

View File

@@ -14,7 +14,7 @@ FFMPEG wrapper written in GO which allows to obtain the progress.
- Windows - Windows
# Getting started # Getting started
How to transcode a media file ## How to transcode a media file
```shell ```shell
go get github.com/xfrr/goffmpeg go get github.com/xfrr/goffmpeg
``` ```
@@ -47,7 +47,7 @@ func main() {
} }
``` ```
How to get the transcoding progress ## How to get the transcoding progress
```go ```go
... ...
func main() { func main() {
@@ -75,8 +75,36 @@ func main() {
} }
``` ```
## How to pipe in data using the (pipe protocol)[https://ffmpeg.org/ffmpeg-protocols.html#pipe]
```go
func main() {
// Create new instance of transcoder
trans := new(transcoder.Transcoder)
// Initialize an empty transcoder
err := trans.InitializeEmptyTranscoder()
// Handle error...
// Set the output path on the transcoder
trans.SetOutputPath("/tmp/data/out/output.mp4")
// Set a command such that its output should be passed as stdin to ffmpeg
err = trans.CreateInputPipe(exec.Command("cat", "/tmp/data/testmpeg"))
// Handle error...
// Start transcoder process without checking progress
done := trans.Run(true)
// This channel is used to wait for the transcoding process to end
err = <-done
}
```
# Progress properties # Progress properties
```golang ```go
type Progress struct { type Progress struct {
FramesProcessed string FramesProcessed string
CurrentTime string CurrentTime string

View File

@@ -1,15 +1,16 @@
package test package test
import ( import (
"os/exec"
"testing" "testing"
"github.com/xfrr/goffmpeg/transcoder" "github.com/muhammadharis/goffmpeg/transcoder"
) )
func TestInputNotFound(t *testing.T) { func TestInputNotFound(t *testing.T) {
var inputPath = "/data/testmkv" var inputPath = "/data/testmkv"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -43,7 +44,7 @@ func TestTranscoding3GP(t *testing.T) {
func TestTranscodingAVI(t *testing.T) { func TestTranscodingAVI(t *testing.T) {
var inputPath = "/data/testavi" var inputPath = "/data/testavi"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -64,7 +65,7 @@ func TestTranscodingAVI(t *testing.T) {
func TestTranscodingFLV(t *testing.T) { func TestTranscodingFLV(t *testing.T) {
var inputPath = "/data/testflv" var inputPath = "/data/testflv"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -85,7 +86,7 @@ func TestTranscodingFLV(t *testing.T) {
func TestTranscodingMKV(t *testing.T) { func TestTranscodingMKV(t *testing.T) {
var inputPath = "/data/testmkv" var inputPath = "/data/testmkv"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -106,7 +107,7 @@ func TestTranscodingMKV(t *testing.T) {
func TestTranscodingMOV(t *testing.T) { func TestTranscodingMOV(t *testing.T) {
var inputPath = "/data/testmov" var inputPath = "/data/testmov"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -127,7 +128,7 @@ func TestTranscodingMOV(t *testing.T) {
func TestTranscodingMPEG(t *testing.T) { func TestTranscodingMPEG(t *testing.T) {
var inputPath = "/data/testmpeg" var inputPath = "/data/testmpeg"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -148,7 +149,7 @@ func TestTranscodingMPEG(t *testing.T) {
func TestTranscodingOGG(t *testing.T) { func TestTranscodingOGG(t *testing.T) {
var inputPath = "/data/testogg" var inputPath = "/data/testogg"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -169,7 +170,7 @@ func TestTranscodingOGG(t *testing.T) {
func TestTranscodingWAV(t *testing.T) { func TestTranscodingWAV(t *testing.T) {
var inputPath = "/data/testwav" var inputPath = "/data/testwav"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -190,7 +191,7 @@ func TestTranscodingWAV(t *testing.T) {
func TestTranscodingWEBM(t *testing.T) { func TestTranscodingWEBM(t *testing.T) {
var inputPath = "/data/testwebm" var inputPath = "/data/testwebm"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -211,7 +212,7 @@ func TestTranscodingWEBM(t *testing.T) {
func TestTranscodingWMV(t *testing.T) { func TestTranscodingWMV(t *testing.T) {
var inputPath = "/data/testwmv" var inputPath = "/data/testwmv"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)
@@ -229,10 +230,33 @@ func TestTranscodingWMV(t *testing.T) {
} }
} }
func TestTranscodingInputPipe(t *testing.T) {
// Tests pipe with input mpeg, output mp4 using cat command for pipe-in
var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder)
err := trans.InitializeEmptyTranscoder()
trans.SetOutputPath(outputPath)
trans.CreateInputPipe(exec.Command("cat", "/data/testmpeg"))
if err != nil {
t.Error(err)
return
}
done := trans.Run(false)
err = <-done
if err != nil {
t.Error(err)
return
}
}
func TestTranscodingProgress(t *testing.T) { func TestTranscodingProgress(t *testing.T) {
var inputPath = "/data/testavi" var inputPath = "/data/testavi"
var outputPath = "/data/testmp4.mp4" var outputPath = "/data/out/testmp4.mp4"
trans := new(transcoder.Transcoder) trans := new(transcoder.Transcoder)

View File

@@ -79,8 +79,8 @@ func (t Transcoder) GetCommand() []string {
return rcommand return rcommand
} }
// InitializeTranscoder initializes the fields necessary for a blank transcoder // InitializeEmptyTranscoder initializes the fields necessary for a blank transcoder
func (t *Transcoder) InitializeTranscoder() error { func (t *Transcoder) InitializeEmptyTranscoder() error {
var Metadata models.Metadata var Metadata models.Metadata
var err error var err error
@@ -218,7 +218,7 @@ func (t *Transcoder) Run(progress bool) <-chan error {
return return
} }
// Run the pipe-in command if it's been set // Run the pipe-in command if it has been set
if t.mediafile.InputPipeCommand() != nil { if t.mediafile.InputPipeCommand() != nil {
err = t.mediafile.InputPipeCommand().Run() err = t.mediafile.InputPipeCommand().Run()
if err != nil { if err != nil {