Tyrrrz / CliWrap

Library for running command-line processes
MIT License
4.37k stars 268 forks source link

ExecuteAsync throwing error even though command runs fine #28

Closed remiX- closed 6 years ago

remiX- commented 6 years ago

Hey, so I just updated CliWrap on my App and changed the usage to use SetArguments.

I'm having trouble now as it throws an error on my ExecuteAsync() line even though the command it executes works 100%. It's using ffmpeg to copy a video.

In the temp folder it outputs to, the file is there and works completely fine. Can't figure out whats erroring here

Error:


  HResult=0x80131500
  Message=Underlying process reported an error:
ffmpeg version N-90649-g9825f77ac7 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7.3.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
  libavutil      56. 13.100 / 56. 13.100
  libavcodec     58. 17.100 / 58. 17.100
  libavformat    58. 11.101 / 58. 11.101
  libavdevice    58.  2.100 / 58.  2.100
  libavfilter     7. 14.100 /  7. 14.100
  libswscale      5.  0.102 /  5.  0.102
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\njord\Videos\nVidia Share\Rocket League\rage_quit.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2018-09-29T10:20:37.000000Z
    date            : 2018
  Duration: 00:02:00.23, start: 0.000000, bitrate: 46971 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt470m), 1920x1080 [SAR 1:1 DAR 16:9], 46769 kb/s, 59.89 fps, 60 tbr, 90k tbn, 120 tbc (default)
    Metadata:
      creation_time   : 2018-09-29T10:20:37.000000Z
      handler_name    : VideoHandle
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)
    Metadata:
      creation_time   : 2018-09-29T10:20:37.000000Z
      handler_name    : SoundHandle
[mp4 @ 00000219fa0f44c0] track 1: codec frame size is not set
Output #0, mp4, to 'C:\Users\njord\Videos\temp\fbc9413e-a396-4f6b-8101-861cc592f16b.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    date            : 2018
    encoder         : Lavf58.11.101
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt470m), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 46769 kb/s, 59.89 fps, 60 tbr, 90k tbn, 90k tbc (default)
    Metadata:
      creation_time   : 2018-09-29T10:20:37.000000Z
      handler_name    : VideoHandle
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 195 kb/s (default)
    Metadata:
      creation_time   : 2018-09-29T10:20:37.000000Z
      handler_name    : SoundHandle
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 5810 fps=0.0 q=-1.0 size=  556800kB time=00:01:37.79 bitrate=46641.5kbits/s speed= 195x    
frame= 7200 fps=0.0 q=-1.0 Lsize=  689458kB time=00:02:00.21 bitrate=46983.7kbits/s speed= 198x    
video:686409kB audio:2871kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.025804%

  Source=CliWrap
  StackTrace:
   at CliWrap.Cli.<ExecuteAsync>d__28.MoveNext()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at YouTubeTool.ViewModels.CutVideoViewModel.<Go>d__46.MoveNext() in C:\Source\GitHub\remiX-\YouTubeTool\src\ViewModels\CutVideoViewModel.cs:line 147```
Tyrrrz commented 6 years ago

FFmpeg writes progress to stderr. CliWrap 2.0 now has on-by-default error validation but you can disable it:

var result = await new Cli("cli.exe")
    .EnableExitCodeValidation(false) // disables exceptions on non-zero exit code
    .EnableStandardErrorValidation(false) // disables exceptions on non-empty stderr
    .ExecuteAsync();
remiX- commented 6 years ago

Awesome, thanks!