如何从Google Photos API播放视频

时间:2018-08-14 01:41:52

标签: api google-photos-api

我想使用Google Photos API来使用<video>...</video> html标签播放视频。我尝试使用baseUrl,但由于baseUrl只是图像而无法播放视频。

以下是示例mediaItem

{
  "id": "AGj1epULNh3net3nkDb1kIh3...",
  "productUrl": "https://photos.google.com/lr/photo/some-long-url",
  "baseUrl": "https://lh3.googleusercontent.com/lr/some-really-long-url",
  "mediaMetadata": {
    "creationTime": "2017-08-13T22:09:48Z",
    "width": "1920",
    "height": "1080",
    "video": {
      "cameraMake": "Apple",
      "cameraModel": "iPhone SE",
      "fps": 29.978708303761533,
      "status": "READY"
    }
  },
  "filename": "IMG_2281.MOV"
},

我觉得最后一部分filename必须是其中的重要部分。我尝试将其附加到baseUrl,但返回404。

2 个答案:

答案 0 :(得分:0)

您应该在baseUrl后附加'= dv'。例如:

src="https://lh3.googleusercontent.com/lr/some-really-long-url=dv"

答案 1 :(得分:0)

_renderVideo(item) {
        const opts = {
            height: '480',
            width: '100%'
        };
        return (
            <div className='image-gallery-image'>
                <div className='video-wrapper'>
                    <center>
                        {
                            item.mimeType === "video/mp4" ?

                                <video width="80%" controls>
                                    <source src={item.embedUrl} type="video/mp4" />
                                </video>

                                :
                                <img style={{width:"80%"}} src={item.original} alt="" />
                        }
                    </center>
                </div>
            </div>
        );
    }

render() {
        let images = [];
        if (this.props.arr_Photo && this.props.arr_Photo.mediaItems) {
            this.props.arr_Photo.mediaItems.map((item, index) => {
                images.push(
                    {
                        original: item.baseUrl,
                        thumbnail: item.baseUrl,
                        embedUrl: item.baseUrl + "=dv",
                        mimeType: item.mimeType
                    }
                );
            });
        };
        return (
            <div className="card">
                <div className="card-body">
                    <h4 className="card-title">
                        xxx
                    </h4>
                    <ImageGallery items={images}
                        renderItem={this._renderVideo}
                        onThumbnailClick={this._onSlide}
                        showPlayButton={false} />
                </div>
            </div>
        );
    }