Streamingで動画を配信してみる2(回線速度に応じてダイナミックに最適な品質の動画にアクセスする)2016年06月19日SIN(336)37この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。今回は、回線スピードに最適化させるために、ビットレート(品質)の違う複数のデータを用意し、動的にこれを変化させてみたいと思います。ffmpeg元となる動画から、ビットレート(品質)の違うデータを生成するためには、ffmpegを使用します。ffmpegは、多彩なオプションで動画や音声の変換を行うことができるフリーソフトです。ffmpegは、Homebrewでインストールが可能です。下記のコマンドは、ffmpegを使用してビットレート250kbpsのデータを作成している例です。生成されるファイル名です。コーディック変換とかは行わないと言う意味で、-b:vでビットレートを指定しています。この要領で、幾つかのビットレートのデータを生成してみました。source.mp4サイズは、ビットレートに応じて小さくなっていますが、表示して見ると、同時に動画の質が落ちていることが分かります。幾つかのビットレートのmp4を、前回紹介したmediafilesegmenterで、MP2(ts及びインデックス)に変換します。-Iスイッチは、後で使用することになる.plistも同時に作成できるように追加しています。source-128k.mp4出来上がったファイルは、下記のようになりました。これを、このままの状態でサーバーに置くことで、ユーザ(開発者)は、自由なビットレート(品質)の動画を指定することが可能です。複数のビットレート(品質)の取得例としては、次のようなものになるでしょう。Streamingでは、この幾つかのビットレートの選択を回線速度に合わせてダイナミックに最適に変化させることができます。この機能を有効にするためには、今作成したビットレートごとの複数のインデックスを、1つに統合したマスターインデックスを作成し、そこをエンドポイントとします。ここで、マスターインデックスで紐付けされた、各ストリームのデータは、代替ストリームと呼ばれます。Toolsに含まれるツールです。variantplaylistcreatorを使用して、mediafilesegmenterの出力である代替ストリームのインデックスファイルをリストアップしマスタインデックスファイルを作成します。variantplaylistcreatorの使用方法は次のとおりです。3つ目のストリームセットストリームセットは、必要なだけ繰り返します。各ストリームセットの形式は、次の形です。iframeファイル名この形式に従った、実際のコマンドは、次のようになります。これで、3種類の代替えストリーム(128Kbps,512Kbps,1Mbps)をまとめてた、マスターインデックス(all.m3u8)が生成されます。マスターインデックスall.m3u8の中を見ると次のようになっています。avc1.64001f",RESOLUTION=1280x720,FRAME-RATE=24.000,CLOSED-CAPTIONS=NONE1000k/index.m3u8#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=118203,BANDWIDTH=820911,CODECS="avc1.64001f",RESOLUTION=1280x720,URI="1000k/iframe_index.m3u8"注意して見てみると、代替ストリームごとにAVERAGE-BANDWIDTHとBANDWIDTHあたりの値が違います。この辺が、ビットレートの違いを表しているのかも知れません。出来上がったマスターインデックスにアクセスページは、次のようになります。今回は、PC上でWebサーバを起動して、アクセスログを見ながらテストしてみました。構成は、VirtualBoxでWindows10を立ち上げ、BlackJumboDogでWebサーバを起動しました。共有フォルダの機能で、Mac上の先ほどのリソースをWebサーバのドキュメントルートに設定し、MacのSafariからアクセスしています。BlackJumboDog(ステマ)Safariでアクセスした際の、Webサーバのログは次のようになりました。最初のアクセスでは、ビットレート128kのデータにアクセスしていましたが、その後、safariの動画を全画面表示にしたりすると高品質のデータを改めて取得しているのが分かりました。いう状況で、どの品質のデータにアクセスするのかは、ドキュメント化されていないためブラックボックスですが、確かに、複数の代替ストーリームにアクセスしていることは確認できました。代替えストリームを作成する際には、次のような注意点が必要であるとドキュメントに記載されています。バリアントプレイリストへ指定する最初のストーリームは、再生開始時に最初にテスト用にアクセスされます。詳しくは、ドキュメントをご参照ください。Streamingで複数ストリームにダイナミックにアクセスする動作を確認してみました。作業は思ったより簡単で、代替ストリームさえ十分に準備すれば、あとは、お任せと言う感じです。Carpio氏のものを利用させて頂きました。3,367,342CX事業本部の平内です。最近は、音声で操作するアプリの開発を担当させて頂いてます。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。和樹25こんにちは植木和樹@上越オフィスです。Terminalの機能確定版がリリースされたので試してみました。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。川原征大4形態素解析の入門中で、ブログの内容の分析を試しています。作業効率化をしたという話。夏目祐樹395こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介255SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健233こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。