@@ -135,8 +135,7 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress,
135
135
defer close (out )
136
136
err = cmd .Wait ()
137
137
if err != nil {
138
- b , _ := io .ReadAll (io .LimitReader (stderrIn , 100 ))
139
- err = fmt .Errorf ("failed to transcoding (%s) with args (%s) with error %w: %s" , t .config .FfmpegBinPath , args , err , string (b ))
138
+ err = fmt .Errorf ("failed to transcoding (%s) with args (%s) with error %w" , t .config .FfmpegBinPath , args , err )
140
139
log .Println (err )
141
140
out <- & Progress {Error : err }
142
141
}
@@ -145,8 +144,7 @@ func (t *Transcoder) Start(opts transcoder.Options) (<-chan transcoder.Progress,
145
144
} else {
146
145
err = cmd .Wait ()
147
146
if err != nil {
148
- b , _ := io .ReadAll (io .LimitReader (stderrIn , 100 ))
149
- return nil , fmt .Errorf ("failed to transcoding (%s) with args (%s) with error %w: %s" , t .config .FfmpegBinPath , args , err , string (b ))
147
+ return nil , fmt .Errorf ("failed to transcoding (%s) with args (%s) with error %w" , t .config .FfmpegBinPath , args , err )
150
148
}
151
149
}
152
150
@@ -286,6 +284,8 @@ func (t *Transcoder) GetMetadata() (transcoder.Metadata, error) {
286
284
}
287
285
288
286
var reEQ = regexp .MustCompile (`=\s+` )
287
+ var mgError = `Error `
288
+ var mgFailed = `Conversion failed!`
289
289
290
290
// progress sends through given channel the transcoding status
291
291
func (t * Transcoder ) progress (stream io.ReadCloser , out chan transcoder.Progress ) {
@@ -317,11 +317,18 @@ func (t *Transcoder) progress(stream io.ReadCloser, out chan transcoder.Progress
317
317
buf := make ([]byte , 2 )
318
318
scanner .Buffer (buf , bufio .MaxScanTokenSize )
319
319
320
+ var isFailed bool
321
+ var errMessages []string
322
+
320
323
for scanner .Scan () {
321
324
Progress := new (Progress )
322
325
line := scanner .Text ()
323
-
324
- if strings .Contains (line , "time=" ) && strings .Contains (line , "bitrate=" ) {
326
+ //println(`========>`, `[`+line+`]`)
327
+ if strings .HasPrefix (line , mgError ) {
328
+ errMessages = append (errMessages , line )
329
+ } else if strings .HasPrefix (line , mgFailed ) {
330
+ isFailed = true
331
+ } else if strings .Contains (line , "time=" ) && strings .Contains (line , "bitrate=" ) {
325
332
st := reEQ .ReplaceAllString (line , `=` )
326
333
f := strings .Fields (st )
327
334
var framesProcessed string
@@ -368,6 +375,9 @@ func (t *Transcoder) progress(stream io.ReadCloser, out chan transcoder.Progress
368
375
out <- * Progress
369
376
}
370
377
}
378
+ if isFailed && len (errMessages ) > 0 {
379
+ out <- & Progress {Error : errors .New (strings .Join (errMessages , "\n " ))}
380
+ }
371
381
}
372
382
373
383
// closePipes Closes pipes if opened
0 commit comments