- HTTP request
- Query parameters
- Request body
- Response body
- Authorization scopes
- PhotoSequence
- GpsSource
- Imu
- Measurement3d
- ProcessingState
- ProcessingFailureReason
- ProcessingFailureDetails
- InsufficientGpsFailureDetails
- GpsDataGapFailureDetails
- ImuDataGapFailureDetails
- NotOutdoorsFailureDetails
- NoOverlapGpsFailureDetails
- LatLngBounds
- InputType
- Try it!
After the client finishes uploading the PhotoSequence
with the returned UploadRef
, photoSequence.create
extracts a sequence of 360 photos from a video or Extensible Device Metadata (XDM, http://www.xdm.org/) to be published to Street View on Google Maps.
photoSequence.create
returns an Operation
, with the PhotoSequence
Id set in the Operation.name
field.
This method returns the following error codes:
google.rpc.Code.INVALID_ARGUMENT
if the request is malformed.google.rpc.Code.NOT_FOUND
if the upload reference does not exist.
HTTP request
POST https://streetviewpublish.googleapis.com/v1/photoSequence
The URL uses gRPC Transcoding syntax.
Query parameters
Parameters | |
---|---|
inputType |
Required. The input form of |
Request body
The request body contains an instance of PhotoSequence
.
Response body
If successful, the response body contains a newly created instance of Operation
.
Authorization scopes
Requires the following OAuth scope:
https://www.googleapis.com/auth/streetviewpublish
For more information, see the OAuth 2.0 Overview.
PhotoSequence
A sequence of 360 photos along with metadata.
JSON representation |
---|
{ "id": string, "photos": [ { object ( |
Fields | |
---|---|
id |
Output only. Unique identifier for the photo sequence. This also acts as a long running operation ID if uploading is performed asynchronously. |
photos[] |
Output only. Photos with increasing timestamps. |
uploadReference |
Input only. Required when creating photo sequence. The resource name where the bytes of the photo sequence (in the form of video) are uploaded. |
captureTimeOverride |
Optional. Absolute time when the photo sequence starts to be captured. If the photo sequence is a video, this is the start time of the video. If this field is populated in input, it overrides the capture time in the video or XDM file. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: |
uploadTime |
Output only. The time this photo sequence was created in uSV Store service. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: |
rawGpsTimeline[] |
Input only. Raw GPS measurements with increasing timestamps from the device that aren't time synced with each photo. These raw measurements will be used to infer the pose of each frame. Required in input when InputType is VIDEO and raw GPS measurements are not in Camera Motion Metadata Track (CAMM). User can indicate which takes precedence using gpsSource if raw GPS measurements are provided in both rawGpsTimeline and Camera Motion Metadata Track (CAMM). |
gpsSource |
Input only. If both rawGpsTimeline and the Camera Motion Metadata Track (CAMM) contain GPS measurements, indicate which takes precedence. |
imu |
Input only. Three axis IMU data for the collection. If this data is too large to put in the request, then it should be put in the CAMM track for the video. This data always takes precedence over the equivalent CAMM data, if it exists. |
processingState |
Output only. The processing state of this sequence. |
failureReason |
Output only. If this sequence has processingState = FAILED, this will contain the reason why it failed. If the processingState is any other value, this field will be unset. |
failureDetails |
Output only. If this sequence has |
distanceMeters |
Output only. The computed distance of the photo sequence in meters. |
sequenceBounds |
Output only. A rectangular box that encapsulates every image in this photo sequence. |
viewCount |
Output only. The total number of views that all the published images in this PhotoSequence have received. |
filename |
Output only. The filename of the upload. Does not include the directory path. Only available if the sequence was uploaded on a platform that provides the filename. |
GpsSource
Primary source of GPS measurements.
Enums | |
---|---|
PHOTO_SEQUENCE |
GPS in rawGpsTimeline takes precedence if it exists. |
CAMERA_MOTION_METADATA_TRACK |
GPS in Camera Motion Metadata Track (CAMM) takes precedence if it exists. |
Imu
IMU data from the device sensors.
JSON representation |
---|
{ "accelMpsps": [ { object ( |
Fields | |
---|---|
accelMpsps[] |
The accelerometer measurements in meters/sec^2 with increasing timestamps from devices. |
gyroRps[] |
The gyroscope measurements in radians/sec with increasing timestamps from devices. |
magUt[] |
The magnetometer measurements of the magnetic field in microtesla (uT) with increasing timestamps from devices. |
Measurement3d
A Generic 3d measurement sample.
JSON representation |
---|
{ "captureTime": string, "x": number, "y": number, "z": number } |
Fields | |
---|---|
captureTime |
The timestamp of the IMU measurement. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: |
x |
The sensor measurement in the x axis. |
y |
The sensor measurement in the y axis. |
z |
The sensor measurement in the z axis. |
ProcessingState
The processing state of the sequence. The states move as follows:
+-------------------------+
| |
+---v---+ +----------+ +----+----+
|PENDING+-->PROCESSING+-->PROCESSED|
+---+---+ +----+-----+ +----+----+
| | |
| +--v---+ |
+-------->FAILED<---------+
+------+
The sequence may move to FAILED from any state. Additionally, a processed sequence may be re-processed at any time.
Enums | |
---|---|
PROCESSING_STATE_UNSPECIFIED |
The state is unspecified, this is the default value. |
PENDING |
The sequence has not yet started processing. |
PROCESSING |
The sequence is currently in processing. |
PROCESSED |
The sequence has finished processing including refining position. |
FAILED |
The sequence failed processing. See FailureReason for more details. |
ProcessingFailureReason
The possible reasons this PhotoSequence
failed to process.
Enums | |
---|---|
PROCESSING_FAILURE_REASON_UNSPECIFIED |
The failure reason is unspecified, this is the default value. |
LOW_RESOLUTION |
Video frame's resolution is too small. |
DUPLICATE |
This video has been uploaded before. |
INSUFFICIENT_GPS |
Too few GPS points. |
NO_OVERLAP_GPS |
No overlap between the time frame of GPS track and the time frame of video. |
INVALID_GPS |
GPS is invalid (e.x. all GPS points are at (0,0)) |
FAILED_TO_REFINE_POSITIONS |
The sequence of photos could not be accurately located in the world. |
TAKEDOWN |
The sequence was taken down for policy reasons. |
CORRUPT_VIDEO |
The video file was corrupt or could not be decoded. |
INTERNAL |
A permanent failure in the underlying system occurred. |
INVALID_VIDEO_FORMAT |
The video format is invalid or unsupported. |
INVALID_VIDEO_DIMENSIONS |
Invalid image aspect ratio found. |
INVALID_CAPTURE_TIME |
Invalid capture time. Timestamps were from the future. |
GPS_DATA_GAP |
GPS data contains a gap greater than 5 seconds in duration. |
JUMPY_GPS |
GPS data is too erratic to be processed. |
INVALID_IMU |
IMU (Accelerometer, Gyroscope, etc.) data are not valid. They may be missing required fields (x, y, z or time), may not be formatted correctly, or any other issue that prevents our systems from parsing it. |
INSUFFICIENT_IMU |
Too few IMU points. |
INSUFFICIENT_OVERLAP_TIME_SERIES |
Insufficient overlap in the time frame between GPS, IMU, and other time series data. |
IMU_DATA_GAP |
IMU (Accelerometer, Gyroscope, etc.) data contain gaps greater than 0.1 seconds in duration. |
UNSUPPORTED_CAMERA |
The camera is not supported. |
NOT_OUTDOORS |
Some frames were indoors, which is unsupported. |
INSUFFICIENT_VIDEO_FRAMES |
Not enough video frames. |
INSUFFICIENT_MOVEMENT |
Not enough moving data. |
ProcessingFailureDetails
Additional details to accompany the ProcessingFailureReason enum. This message is always expected to be used in conjunction with ProcessingFailureReason, and the oneof value set in this message should match the FailureReason.
JSON representation |
---|
{ // Union field |
Fields | |
---|---|
Union field details . Only one set of details will be set, and must match the corresponding enum in ProcessingFailureReason. details can be only one of the following: |
|
insufficientGpsDetails |
See InsufficientGpsFailureDetails. |
gpsDataGapDetails |
See GpsDataGapFailureDetails. |
imuDataGapDetails |
See ImuDataGapFailureDetails. |
notOutdoorsDetails |
See NotOutdoorsFailureDetails. |
noOverlapGpsDetails |
See NoOverlapGpsFailureDetails. |
InsufficientGpsFailureDetails
Details related to ProcessingFailureReason#INSUFFICIENT_GPS.
JSON representation |
---|
{ "gpsPointsFound": integer } |
Fields | |
---|---|
gpsPointsFound |
The number of GPS points that were found in the video. |
GpsDataGapFailureDetails
Details related to ProcessingFailureReason#GPS_DATA_GAP. If there are multiple GPS data gaps, only the one with the largest duration is reported here.
JSON representation |
---|
{ "gapDuration": string, "gapStartTime": string } |
Fields | |
---|---|
gapDuration |
The duration of the gap in GPS data that was found. A duration in seconds with up to nine fractional digits, ending with ' |
gapStartTime |
Relative time (from the start of the video stream) when the gap started. A duration in seconds with up to nine fractional digits, ending with ' |
ImuDataGapFailureDetails
Details related to ProcessingFailureReason#IMU_DATA_GAP. If there are multiple IMU data gaps, only the one with the largest duration is reported here.
JSON representation |
---|
{ "gapDuration": string, "gapStartTime": string } |
Fields | |
---|---|
gapDuration |
The duration of the gap in IMU data that was found. A duration in seconds with up to nine fractional digits, ending with ' |
gapStartTime |
Relative time (from the start of the video stream) when the gap started. A duration in seconds with up to nine fractional digits, ending with ' |
NotOutdoorsFailureDetails
Details related to ProcessingFailureReason#NOT_OUTDOORS. If there are multiple indoor frames found, the first frame is recorded here.
JSON representation |
---|
{ "startTime": string } |
Fields | |
---|---|
startTime |
Relative time (from the start of the video stream) when an indoor frame was found. A duration in seconds with up to nine fractional digits, ending with ' |
NoOverlapGpsFailureDetails
Details related to PhotoSequenceProcessingFailureReason#NO_OVERLAP_GPS.
JSON representation |
---|
{ "gpsStartTime": string, "gpsEndTime": string, "videoStartTime": string, "videoEndTime": string } |
Fields | |
---|---|
gpsStartTime |
Time of first recorded GPS point. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: |
gpsEndTime |
Time of last recorded GPS point. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: |
videoStartTime |
Start time of video. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: |
videoEndTime |
End time of video. A timestamp in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits. Examples: |
LatLngBounds
A rectangle in geographical coordinates.
JSON representation |
---|
{ "southwest": { object ( |
Fields | |
---|---|
southwest |
The southwest corner of these bounds. |
northeast |
The northeast corner of these bounds. |
InputType
Input forms of PhotoSequence
.
Enums | |
---|---|
INPUT_TYPE_UNSPECIFIED |
Not specified. Server will return google.rpc.Code.INVALID_ARGUMENT . |
VIDEO |
360 Video. |
XDM |
Extensible Device Metadata, http://www.xdm.org |