0

来自规范配置的 WebM Spritesheet/Transcode 无法完成并显示错误消息:请求字段 config.editList[0].startTimeOffset 为 0s,预期开始时间小于此原子的所有输入的最短持续时间 (0s)。

使用的配置来自https://cloud.google.com/transcoder/docs/how-to/generate-spritesheet#generate_image_periodically

项目编号:PROJECT-NUMBER

作业 ID:projects/PROJECT-NUMBER/locations/us-central1/jobs/JOB-ID

地点:us-central1

作业配置

{
  "name": "projects/PROJECT-NUMBER/locations/us-central1/jobs/JOB-ID",
  "config": {
    "inputs": [
      {
        "key": "input0",
        "uri": "gs://input_video.webm"
      }
    ],
    "editList": [
      {
        "key": "atom0",
        "inputs": [
          "input0"
        ],
        "startTimeOffset": "0s"
      }
    ],
    "elementaryStreams": [
      {
        "videoStream": {
          "codec": "h264",
          "profile": "high",
          "preset": "veryfast",
          "heightPixels": 360,
          "widthPixels": 640,
          "pixelFormat": "yuv420p",
          "bitrateBps": 550000,
          "rateControlMode": "vbr",
          "crfLevel": 21,
          "vbvSizeBits": 550000,
          "vbvFullnessBits": 495000,
          "gopDuration": "3s",
          "entropyCoder": "cabac",
          "frameRate": 60
        },
        "key": "video-stream0"
      },
      {
        "audioStream": {
          "codec": "aac",
          "bitrateBps": 64000,
          "channelCount": 2,
          "channelLayout": [
            "fl",
            "fr"
          ],
          "sampleRateHertz": 48000
        },
        "key": "audio-stream0"
      }
    ],
    "muxStreams": [
      {
        "key": "sd",
        "fileName": "sd.mp4",
        "container": "mp4",
        "elementaryStreams": [
          "video-stream0",
          "audio-stream0"
        ]
      }
    ],
    "output": {
      "uri": "gs://output/"
    },
    "spriteSheets": [
      {
        "format": "jpeg",
        "filePrefix": "small-sprite-sheet",
        "spriteWidthPixels": 64,
        "spriteHeightPixels": 32,
        "startTimeOffset": "0s",
        "interval": "7s",
        "quality": 100
      },
      {
        "format": "jpeg",
        "filePrefix": "large-sprite-sheet",
        "spriteWidthPixels": 128,
        "spriteHeightPixels": 72,
        "startTimeOffset": "0s",
        "interval": "7s",
        "quality": 100
      }
    ]
  },
  "state": "FAILED",
  "failureReason": "Job validation failed: Request field config.editList[0].startTimeOffset is 0s, expected start time less than the minimum duration of all inputs for this atom (0s).",
  "ttlAfterCompletionDays": 30
}
4

1 回答 1

0

看起来我们为输入计算的持续时间是 0 秒。所以要么输入为空,要么我们无法计算输入的持续时间。你知道是不是前者吗?对于后者,如果客户在他们的 editList 中提供了一个 endTimeOffset,那么我们应该使用这个持续时间,这样可以克服这个验证错误。

完全错过了评论#1中的输入链接,对此感到抱歉!所以当我在输入上运行 ffprobe 时,我得到

  Metadata:
    encoder         : Chrome
  Duration: N/A, start: 0.000000, bitrate: N/A
  Stream #0:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)
  Stream #0:1(eng): Video: h264 (Baseline), yuv420p(progressive), 640x480 [SAR 1:1 DAR 4:3], 29.97 fps, 29.97 tbr, 1k tbn, 2k tbc (default)

我们确实生成了 editList,但在这种情况下,我们无法从输入中获得有效的持续时间。我的猜测是,这在以前是有效的,因为使用的输入包含计时元数据,尽管我可以帮助确认您是否有来自成功完成的工作的输入。如果可能,我建议在作业配置中指定 endTimeOffset(特别是如果从输入到输入使用不同的编码)。

于 2021-08-23T19:13:44.820 回答