2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
川上健太郎氏:『Flutterで動画再生する』というタイトルで川上健太郎が発表します。私は、2018年にサイバーエージェントに入社しました。「FRESH LIVE」「CL」でiOSアプリの開発をして、現在はFlutterで開発中です。Flutter歴はだいたい6ヶ月くらいで、今はAndroidもがんばって勉強しています。
今日の目次です。パッケージの紹介と、「video_player」と、その実装について話します。実際に機能追加するにはどうするのかや、まとめも話します。
まずパッケージの紹介についてです。Flutter公式が出しているvideo_playerというプラグインがあります。サードパーティ製のものがほかにもあるんですが、今のところはたぶんvideo_playerが一番メジャーです。
video_playerはiOS、Android、Webに対応していて、iOSはObjective-C、AndroidはJavaで書かれています。今回はWebについてはあまり触れないんですが、このvideo_playerを実際のプロダクトに導入するにあたって、どんな感じ? 実際どうなの? をメインに話します。
video_playerの使い方の説明をしたいと思います。ローカルファイル・アセットの再生は簡単で、まずVideoPlayerControllerインスタンスを作ります。そこでassetや、ファイルのパスを指定して、イニシャライズして、playを呼びます。
VideoPlayerウィジェットが用意されているので、それに先ほどのcontrollerを入れるといい感じに再生されます。disposeも忘れないようにしてあげましょう。
次は、リモートファイルの再生です。先ほどとほぼ変わらず、ただ.networkにしてパスを指定するだけです。もちろんHLSも対応しています。Androidは、DASHや、Smooth Streamingなどのフォーマットにも対応しているんですが、Androidのみの対応なので、ほぼ使わないのかなと私は思っています。
ほかにできる基本的ことですが、再生、停止、シーク、ループ再生、ボリューム設定、再生速度設定など、動画再生に最低限必要なことはできると思いました。プラスアルファで、video_playerが用意しているウィジェットや便利機能があります。字幕、シークバー、ライフサイクルについてちょっと触れていきたいと思います。
まず字幕についてです。完成状態は右の図なんですが、先ほどとほぼ変わらず、networkでウィジェットvideo_playerをやって、ローカルファイルから字幕ファイルを読み込む関数を処理して、それをVideoPlayerControllerに渡します。
ClosedCaptionというウィジェットが用意されているので、あとはそれ(ClosedCaption)にcontrollerから受け取ったcaptionを渡すだけでいい感じにやってくれます。
ただこの字幕は、現状ローカルファイルからただ読み込むだけなので、ストリームから受け取って表示する標準のものは、別途実装が必要です。
フォーマットは現在マスターでSRT(Secure Reliable Transport)に対応していて、WebVTTに関してはPR(Pull Request)が出ているんですが、1年くらいずっとレビュー中です。時々活発になるんですが、いつマージされるのかわからない状態です。
次に、シークバーについてです。これは簡単で、シークバーのウィジェットを追加するだけでシークバーが表示されます。iOSだとちょっと面倒くさいので、すでに実装してくれているのは便利かなと思います。カスタマイズ性がちょっと低いので使わないのですが、中の実装は参考にできるのかなと思いました。
次は、ライフサイクルに合わせた再生と停止です。プライベートクラスで、VideoAppLifeCycleObserverというWidgetsBindingObserverを継承したラッパーがあります。これはVideoPlayerControllerが持っているんですが、よしなに再生と停止をしてくれます。
ただこれも、自分でハンドリングしたい場合があると思うので、どうなんだろうという感じです。
(次回へつづく)
2024.10.29
5〜10万円の低単価案件の受注をやめたら労働生産性が劇的に向上 相見積もり案件には提案書を出さないことで見えた“意外な効果”
2024.10.24
パワポ資料の「手戻り」が多すぎる問題の解消法 資料作成のプロが語る、修正の無限ループから抜け出す4つのコツ
2024.10.28
スキル重視の採用を続けた結果、早期離職が増え社員が1人に… 下半期の退職者ゼロを達成した「関係の質」向上の取り組み
2024.10.22
気づかぬうちに評価を下げる「ダメな口癖」3選 デキる人はやっている、上司の指摘に対する上手な返し方
2024.10.24
リスクを取らない人が多い日本は、むしろ稼ぐチャンス? 日本のGDP4位転落の今、個人に必要なマインドとは
2024.10.23
「初任給40万円時代」が、比較的早いうちにやってくる? これから淘汰される会社・生き残る会社の分かれ目
2024.10.23
「どうしてもあなたから買いたい」と言われる営業になるには 『無敗営業』著者が教える、納得感を高める商談の進め方
2024.10.28
“力を抜くこと”がリーダーにとって重要な理由 「人間の達人」タモリさんから学んだ自然体の大切さ
2024.10.29
「テスラの何がすごいのか」がわからない学生たち 起業率2年連続日本一の大学で「Appleのフレームワーク」を教えるわけ
2024.10.30
職場にいる「困った部下」への対処法 上司・部下間で生まれる“常識のズレ”を解消するには