信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    Chatwrok API でダイレクトチャットに通知を送る方法

    要点Chatwrok API でダイレクトチャットに特殊な通知をしたい場合は、https://api.chatwork.com/v2/contacts でコンタクト一覧が手に入るので、そこにある該当アカウントの room_id にメッセージを送ります。背景アカウント作成を ChatOps でやりたいパスワードも自動発行して、発行コマンドを叩いたユーザーにだけ通知させたいたったこれだけです。これだけですが、正式名称であるダイレクトチャットで探しても出ない出ない。「Chatwork API ダイレクトチャット」などで Google 検索しても、「結局どうするの?」状態です。私の探し方が悪いのかもしれませんが、このままだと癪なので、自分で方法を書くことにしました。ダイレクトチャットへの送信方法1. ダイレクトチャット用の部屋番号を取得まずダイレクトチャット用の部屋番号を取得します。というよりも、ここができたら後は幾らでもネット上に情報があります。以下、 curl での実行例です。 curl -H "X-ChatWorkToken: APIトークン" "https://api.chatwork.com/v2/contacts" この結果、以下のような JSON がレスポンスとして返ってきます。[  {   "account_id": 000000,   "room_id": 000000000,   "name": "チャットワーク",   "chatwork_id": "chatwork",   "organization_id": 000000,   "organization_name": "チャットワーク",   "department": "",   "avatar_image_url": "https://appdata.chatwork.com/avatar/ico_avatar_notfound.png"  }, . . . ] ダイレクトチャットを送りたいアカウントのID と同じ account_id でフィルタリングを行い、room_id を取得します。jq で取得するならこうです。 curl -H "X-ChatWorkToken: APIトークン" "https://api.chatwork.com/v2/contacts" | jq '.[] | select(.account_id==ダイレクトチャットを送りたいアカウントのID)' | jq '.room_id' 2回パイプ噛ませる必要はない気もしますが、jq で複雑な条件のフィルタリングをしようとするとやり方を忘れるので、こうしています。2. ダイレクトチャットを送信する上で取得した部屋番号に送るだけです。それ以外は通常の使い方のままです。 まとめChatwrok API でダイレクトチャットに特殊な通知をしたい場合は、https://api.chatwork.com/v2/contacts でコンタクト一覧が手に入るので、そこにある該当アカウントの room_id にメッセージを送る!

  • テクログ

    【AWSでの動画配信】HLS 出力には Elastic Transcoder ではなく Elemental MediaConvert を使用するべき

    2020年4月入社の Hary です。今回は動画ライブストリーミング配信の話をさせて頂きます。要点結論だけ知りたい人はここを読めば大体分かります。HLS を使用したVOD形式の動画配信を AWS で行う場合、動画変換には Elastic Transcoder ではなく Elemental MediaConvert を使いましょう。そうしないと iOS で見た時プレイリストファイルを無限にダウンロードし続けます。背景ライブストリーミング配信 コロナの影響でリモートワークの必要性が再認識され、SE カレッジなどでも動画配信コンテンツ提供が多数派となりました。動画配信には様々な形態がありますが、ライブストリーミング配信が一般的です。ビデオオンデマンド (VOD) でもライブ中継でもほぼこれ一択と言っていいでしょう。簡単に言えば、ライブストリーミング配信は動画を時間分割したセグメントに分けて配信します。1時間の動画を1ファイルで扱えばダウンロードだけで時間がかかりますが、10秒毎に区切れば、再生に必要な直近の10秒から順にダウンロードすることでストレスなく視聴できます。これがライブストリーミング配信のキモです。 このライブストリーミング配信の主流は Apple が開発した HTTP Live Streaming (HLS) です。他にも様々な規格がありますが、デファクトスタンダードは HLS と言っていいでしょう。AWS での動画変換 Amazon Web Service (AWS) には動画変換サービスとして Elastic Transcoder と Elemental MediaConvert があります。大雑把に言えばMediaConvert の方が新しく、より多機能MediaConvert の方が基本的に値段が安いです。AWS は基本的に Mediaconvert の使用を推奨しています。Transcoder でなければできない事の方が少ないです。値段についても、一般的な動画であれば MediaConvert の値段は Transcoder の半分と思っていいです。動画の再生時間が短い(2分以下)場合、更に値段の差は開きます。詳しい比較は以下を見てください。ElasticTranscoder VS MediaConvert (Qiita)前提条件今回対象とする HLS は v3出力ファイルは以下の2種類 m3u8 ファイル:プレイリスト ts ファイル:時間分割されたセグメントHLS 変換に MediaConvert を使用するべき理由HLS の設定 EXT-X-PLAYLIST-TYPE を VOD に指定できないとライブ扱いされてプレイリストをずっと再読み込みするからです。MediaConvert が出力する m3u8 ファイルEXT-X-PLAYLIST-TYPE があります。値は VOD になっています。これにより、ビデオオンデマンド方式(プレイリストの更新はありえない)として解釈されます。#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:3 #EXT-X-MEDIA-SEQUENCE:1 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:3, movie3-sdk-hls_00001.ts #EXTINF:3, movie3-sdk-hls_00002.ts #EXTINF:3, movie3-sdk-hls_00003.ts . . . (省略) . . . #EXTINF:3, movie3-sdk-hls_00017.ts #EXTINF:3, movie3-sdk-hls_00018.ts #EXTINF:3, movie3-sdk-hls_00019.ts #EXT-X-ENDLIST Transcoder が出力する m3u8 ファイル変換元ファイルは違いますが、同じファイルから変換しても結果は同じです。EXT-X-PLAYLIST-TYPE がありません。これにより、ライブ方式(プレイリストの更新がされる;例:ライブ中継など)として解釈されます(参考元)。#EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:7 #EXTINF:6.064000, movie2-hls-vod-check00000.ts #EXTINF:6.000000, movie2-hls-vod-check00001.ts #EXTINF:3.000000, movie2-hls-vod-check00002.ts #EXTINF:6.000000, movie2-hls-vod-check00003.ts #EXTINF:6.000000, movie2-hls-vod-check00004.ts #EXTINF:3.000000, movie2-hls-vod-check00005.ts #EXTINF:6.000000, movie2-hls-vod-check00006.ts #EXTINF:1.266667, movie2-hls-vod-check00007.ts #EXT-X-ENDLIST この場合、プレイリストの更新を想定して HLS プレイヤーは一定間隔でプレイリストファイル(*.m3u8)をダウンロードしようとします。PC などではキャッシュが働くようで特に問題は起きませんが、 iOS の Web ブラウザで見る場合、プレイリストのダウンロードを延々と繰り返します。まとめTranscoder で変換した HLS は VOD 扱いされないMediaConvert で変換した HLS は VOD 扱いされるVOD 扱いされない HLS だとプレイリストを延々とダウンロードし続ける上の例のような小さなファイルであれば大したファイルサイズではありませんが、それが延々とダウンロードされ続ければ話は別です。そうならないためにも、VOD 方式の動画配信を行いたい場合は MediaConvert を使用しましょう。