プッシュ通知に画像を付ける
・Firebase Cloud Messaging(FCM)
・Cloud Functions(Python)
でiOS デバイスに画像付きプッシュ通知を送る。
参考 https://firebase.google.com/docs/cloud-messaging/send-message?hl=ja
notification=messaging.Notification( title='', body='' )
この箇所にimageを入れる
notification=messaging.Notification( title='', body='', image='' )
mutable-contentを設定する必要がなかった。
配列をBool型の値でソートしたい
エラー文
Binary operator '<' cannot be applied to two 'Bool' operands
修正箇所
<を&&にする
CollectionViewのCellで動画を再生(Twitter風)
やりたいこと
CollectionViewのCellに動画を配置し、スクロールした画面中央あたりの動画のみを再生させたい。(Twitterのようなイメージ)
参考にした記事
・swift 画面上に表示されているcollectionviewの中心のcellを取得する - Qiita
・iOS - 【iOS,Swift】CollectionViewの画面内に表示されているセルの取得方法|teratail
・【Swift3】UITableViewで一番下までスクロールしたことを検知する - Qiita
実装方法について
画面中央あたりの動画のみを再生する
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { print("画面中央より上のcellの動画を止める処理") print("画面中央より下のcellの動画を止める処理") print("画面中央のcellの動画を再生する処理") }
例
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { guard let cell = cell else { return } let center = self.view.convert(collectionView.center, to: collectionView) guard let index = collectionView.indexPathForItem(at: center) else { return } if let beforCell = collectionView.cellForItem(at: [0,index.row - 1]) { beforCell.pause() } if let afterCell = collectionView.cellForItem(at: [0,index.row + 1]) { afterCell.pause() } if let centerCell = collectionView.cellForItem(at: index) { centerCell.play() } }
画面の一番下にスクロールしたときの処理
func scrollViewDidScroll(_ scrollView: UIScrollView) { if collectionView.contentOffset.y + collectionView.frame.size.height > collectionView.contentSize.height && collectionView.isDragging { print("画面中央より上のcellの動画を止める処理") print("画面中央のcellの動画を再生する処理") } }
画面の一番上にスクロールしたときの処理
func scrollViewDidScroll(_ scrollView: UIScrollView) { if videoCollectionView.contentOffset.y < 0 && videoCollectionView.isDragging { print("画面中央より下のcellの動画を止める処理") print("画面中央のcellの動画を再生する処理") } }
画面の最上部をタップし、画面が1番上に戻ったときの処理
func scrollViewDidScroll(_ scrollView: UIScrollView) { if videoCollectionView.contentOffset.y == 0 { print("画面中央より下のcellの動画を止める処理") print("画面中央のcellの動画を再生する処理") } }
streamio-ffmpegを使ったRailsAPIをGAEでデプロイ(2)[Ruby][GCP][Docker]
以下の記事で書いたDockefileを使っていたのだが、エラーが出るようになった。
streamio-ffmpegを使ったRailsAPIをGAEでデプロイ[Ruby][GCP][Docker] - RickBlog
エラー内容
E: Package 'libav-tools' has no installation candidate
解決法
libav-toolsをffmpegに変更
何のゲームか認識したい[Google Cloud AutoML Vision]
やりたいこと
ゲーム動画のサムネから何のゲームなのかを認識したい
使った技術
用意した画像
・学習用の画像 150枚(apex:58,cod:49,fortnite:21,pubg:22)
・予測用の画像 4枚
結果
apexの画像なので正解
apexの画像なので正解 fortniteの画像なので正解 fortniteの画像なので不正解
まとめ
学習用の画像も予測用の画像も少なすぎるのでこのような結果になったと思う、、
とてつもなく簡単な操作でこのようなことができるのすごすぎ😐
streamio-ffmpegを使ったRailsAPIをGAEでデプロイ[Ruby][GCP][Docker]
streamio-ffmpeg(gem)を使ったRails製APIを、Google App Engineでデプロイしようとしたら以下のエラーが発生した。
Errno::ENOENT (No such file or directory - the ffprobe binary could not be found in /app/vendor/bundle/ruby/2.6.0/bin:/opt/rbenv/versions/2.6.3/bin:/opt/rbenv/libexec:/opt/rbenv/plugins/ruby-build/bin:/opt/nodejs/bin:/opt/rbenv/shims:/opt/rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin):
Dockerを使ってffmpegをインストールする必要があるらしい。 qiita.com
いろいろと試行錯誤してうまくいったDockerfileがこちら。
FROM ruby:2.6.3 WORKDIR /app COPY . /app ENV RACK_ENV=production \ RAILS_ENV=production EXPOSE 8080 ENV PORT=8080 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive \ apt-get install -y \ libav-tools gpac \ && \ apt-get clean && \ rm -rf /var/lib/apt/lists/ RUN bundle install CMD bundle exec rackup --port $PORT
mp4をFFmpegでHLS(m3u8,ts)に変換[Ruby]
mp4をffmpegを使ってm3u8とtsファイルに変換する方法はこちらの記事を参考にした。
https://qiita.com/korsmic/items/fac1d737f48aabb1294fqiita.com
Rubyを使って変換したい場合はstreamio-ffmpegというgemを使う。 https://github.com/streamio/streamio-ffmpeg
optionsを以下のようにするとmp4をm3u8とtsファイルに変換できる。
options = { custom: ["-codec", "copy", "-map", "0", "-f", "segment", "-vbsf", "h264_mp4toannexb", "-segment_format", "mpegts", "-segment_time", "4", "-segment_list", "[output file path]", " [output file name] -%03d.ts" ]}