56896


**Q.Twitter API で 動画ツイート 1件取得してHTML上で表示させるにはどうすれば良いですか？**  
・返り値のvariants配列内にある「.mp4」URLを、videoタグで指定すれば良い？  
・返り値のvariants配列の中で、「.mp4」「.m3u8」の順番が異なることがあるのはなぜ？  
・返り値のvariants配列内に「.mp4」が複数ある理由は？ サイズ違い？ サイズは固定？(例えば常に「1280x720」は存在している？）

* * *

**試したこと**  
[リンク先](https://syncer.jp/Web/API/Twitter/REST_API/GET/statuses/show/id/)のベアラートークンで、下記の通り$obj取得

[code]

    $obj = json_decode( $json );
    
[/code]

$obj内容抜粋

[code]

    public 'variants' => 
      array (size=4)
        0 => 
          object(stdClass)[50]
            public 'bitrate' => int 2176000
            public 'content_type' => string 'video/mp4' (length=9)
            public 'url' => string 'https://video.twimg.com/ext_tw_video/xxxx/pu/vid/1280x720/●●●●.mp4' (length=92)
        1 => 
          object(stdClass)[51]
            public 'content_type' => string 'application/x-mpegURL' (length=21)
            public 'url' => string 'https://video.twimg.com/ext_tw_video/xxxx/pu/pl/▲▲▲▲.m3u8' (length=83)
        2 => 
          object(stdClass)[52]
            public 'bitrate' => int 256000
            public 'content_type' => string 'video/mp4' (length=9)
            public 'url' => string 'https://video.twimg.com/ext_tw_video/xxxx/pu/vid/320x180/■■■■L.mp4' (length=91)
        3 => 
    
[/code]

videoタグ指定

[code]

    <video src="<?php echo (省略->video_info->variants[0]->url);?>"
    
[/code]

上記で表示されたのですが、動画ツイートによっては、`array[0]`に▲▲▲▲.m3u8が来て、`array[1]`に●●●●.mp4が格納されていることがあり、その場合は、`variants[0]`では動画表示されません。  
このvariants配列はどういう仕様なのでしょうか？


CC BY-SA 4.0
2019-07-25T14:36:00.850
56894
2019-07-26T00:19:29.877
2019-07-25T15:35:49.713
3060
7886
question
php twitter
Twitter API で 動画ツイート を1件取得してHTML上で表示させたいのですが、「.m3u8」形式と「.mp4」形式の関係性は？


メディアが添付されたツイートオブジェクトには `extended_entities` オブジェクトが含まれ、このオブジェクトは `media`
オブジェクトを持ちます。

そして、 `media` オブジェクト内に `video_info` オブジェクトがあり、このオブジェクト内には `aspect_ratio` と
`variants`、そして `duration_millis` オブジェクトが含まれます。これらのオブジェクトにはそれぞれ、 **動画のアスペクト比**
と **各フォーマットに変換した動画の情報** 、 **動画の長さ** が格納されています。

* * *

> ・返り値のvariants配列内に「.mp4」が複数ある理由は？ サイズ違い？ サイズは固定？(例えば常に「1280x720」は存在している？）

`variants` オブジェクト内には **`aspect_ratio` オブジェクトに基づいたサイズ**、 **ビットレート** 、
**フォーマット** の様々な動画が格納されています。これにより、それぞれの **プラットフォームに最も適した動画を選択**
することが出来ます。公式サイトを見る限り、これらのサイズ、ビットレート、フォーマットに関する規定は見つかりませんでした。

> ・返り値のvariants配列の中で、「.mp4」「.m3u8」の順番が異なることがあるのはなぜ？

これは推測ですが、上で書いたように、 `variants`
オブジェクトの内容は規定されていないため、配列に格納される動画情報の順序を包括的に一致させることが出来ない (必要が無い) からではないかと思います。

> Q.Twitter API で 動画ツイート 1件取得してHTML上で表示させるにはどうすれば良いですか？

以上より、動画を取得する場合は `variants` オブジェクトから用途に最適な形式の動画を探し、それを使用すれば良いということになります。


CC BY-SA 4.0
2019-07-26T00:19:29.877
56896
2019-07-26T00:19:29.877
32986
56894
answer