docs: public FFmpegProbeResult probe(String mediaPath, @Nullable String userAgent) throws IOException {
      checkIfFFprobe();
  
      ImmutableList.Builder<String> args = new ImmutableList.Builder<String>();
  
      // TODO Add:
      // .add("--show_packets")
      // .add("--show_frames")
  
      args.add(path).add("-v", "quiet");
  
      if (userAgent != null) {
        args.add("-user-agent", userAgent);
      }
  
      args.add("-print_format", "json")
          .add("-show_error")
          .add("-show_format")
          .add("-show_streams")
          .add(mediaPath);
  
      Process p = runFunc.run(args.build());
      try {
        Reader reader = wrapInReader(p);
        if (LOG.isDebugEnabled()) {
          reader = new LoggingFilterReader(reader, LOG);
        }
  
        FFmpegProbeResult result = gson.fromJson(reader, FFmpegProbeResult.class);
  
        throwOnError(p);
  
        if (result == null) {
          throw new IllegalStateException("Gson returned null, which shouldn't happen :(");
        }
  
        return result;
  
      } finally {
        p.destroy();
      }
    }