HLSのm3u8ファイルをパースするdart pluginを作成しました

flutterでHLSのm3u8ファイルを扱うとき、現状では手ごろなパーサが見つからなかったのでpluginとして作成しました。

ストリーミングを再生せずメタデータだけ取得したい(解像度・ビットレート・tsファイルのurl...)場合に有用かと思います。

マニフェストファイル・プレイリストファイルともにパース可能です。

 

github.com

 

使い方

Uri playlistUri;
List<String> lines;
try {
  playList = await HlsPlaylistParser.create().parse(playlistUri, lines);
} on ParserException catch (e) {
  print(e);
}

if (playlist is HlsMasterPlaylist) {
  // master m3u8 file
} else if (playlist is HlsMediaPlaylist) {
  // media m3u8 file
}

 

マスターファイルのデータ例

HlsMasterPlaylist playlist;

playlist.variants[0].format.bitrate;// => 1280000
Util.splitCodec(playlist.variants[0].format.codecs);// => ['mp4a.40.2']['avc1.66.30']
playlist.variants[0].format.width;// => 304(px)
playlist.subtitles[0].format.id;// => sub1:Eng
playlist.audios[0].format.sampleMimeType// => MimeTypes.AUDIO_AC3

 

メディアファイルのデータ例

HlsMediaPlaylist playlist;

playlist.version;// => 3
playlist.hasEndTag;// => true
playlist.segments[0].durationUs;// => 7975000(microsec)
playlist.segments[0].encryptionIV;// => '0x1566B'
playlist.segments[0].drmInitData.schemeData[0].uuid;// => uuid string

列車の走行位置をリアルタイムで表示するAndroidアプリ『電車今どこ?』をリリースしました

f:id:freqmodu874:20190719170321p:plain

Google Play で手に入れよう

--主な機能--

電車の現在地がわかる
今どこを走っているかを路線図上に表示します。
列車ごとに遅れ・行先・現在地などの情報を見ることができます。

運行情報
電車の遅延・運休などの情報をいち早くお知らせします。

完全無料・広告なし
アプリには一切の広告・課金が必要な機能がありません。
すべての機能を使うことができます。

 

 

現在はベータ版ですが、開発とリリースを平行して行い、適宜機能を強化していきたいと思います。

なお、不具合やご要望などあればhiroyuktamuraアットgmail.comまでご連絡ください。

絵文字を拡大表示してくれるSlackBotを製作しました

 

gif


slackの絵文字はやや小さいため、LINEスタンプ的な使い方ができればと思い製作しました。

カスタム絵文字だけでなくデフォルトの絵文字も実装しています。

また、botを使用するためのユーザ認証もbotがやってくれるため、userTokenの登録/削除などの機能を自前で用意する必要もありません。

 

github.com

 

フレームワーク

  • Firebase(CloudFunctions, Firestore)
  • Nodejs(ver.8)

注意点

  • Firebaseから外部サイトにアクセスするにはFirebaseのbrazeプランに加入している必要がありますが、このbotではSlackAPIを叩いているので、このbotを実装するにはblazeプランに加入している必要があります。

参考

github.com

 

radikoをMP3化できるAndroidアプリ「ラジカッター」を製作しました

f:id:freqmodu874:20180818220527p:plain

 

Androidアプリ「ラジカッター」をリリースしました

 

radikoをMP3化できるAndroidアプリを製作しました。スマホradikoをダウンロード・再生することができます。

現在、タイムフリーは「放送後1週間までの番組」かつ「聴取時間が計3時間以下」の番組しか聴けません。しかし、ラジカッターを使えばMP3としてダウンロードすることが可能です。

 

主な機能は以下の通りです。

  • 過去の番組表からボタン一つでダウンロードできます
  • 番組検索や出演者・詳しい番組内容も掲載
  • リアルタイム放送も聴取可能

 

現在はベータ版ですが、開発とリリースを平行して行い、適宜機能を強化していきたいと思います。

なお、不具合やご要望などあればhiroyukitamura@gmail.comまでご連絡ください。

 

Google Play で手に入れよう

 

 

 

 

Electronとpuppeteerを用いてRadikoをMP3化するソフトを製作しました

radiko-7e63e.firebaseapp.com

 

Electronpuppeteerを用いてRadikoをMP3化するソフトを製作しました。タイムフリーの番組表から番組を選ぶ⇒MP3ダウンロードが可能です。

製作中はノリノリで製作していたんですが、既にRadikoolELの開発が進んでいたんですね。そのことに全く気がつかず、ただの劣化版をリリースするに至りました。

 

成果物は全く無用なものに終わってしまいましたが、今回の経験で得た知見を以下に記しましたので、どなたかの参考になれば幸いです。

 

Electron内部でpuppeteerを使うとアプリの容量がとっても大きくなる

1 Electronは容量がばかでかい

Ask HN: Do you think Electron is good for building Desktop Apps? | Hacker News

Electronでリリース用にビルドしてみると、意外と容量が大きくなってしまうことに気づきます。実際、hellow worldするだけのアプリケーションで優に100MBを超えてしまいます。これは、Electronがchromiumをベースしていることに由来します。

これを避ける為の開発も行われていますが、まだ実際のリリースに採用することは推奨されていません。

GitHub - pojala/electrino: Desktop runtime for apps built on web technologies, using the system's own web browser engine

 

2 puppeteer

puppeteerはchromiumをベースにしているため、いくつかの点でpuppeteerと異なります。例えば、デフォルトでFLASHが同梱されていない・ライセンス上の問題でHLSがサポートされていない・extentionが使えない等です。

これらの点を解消には、chrome launcher等でユーザが既にダウンロードしているchromeを探すか、地味にchromiumの設定をいじっていくのが妥当かと思います。

github.com

github.com

 

また、puppeteerにはchromiumが同梱されていますから、chromium自体の容量も大きいことも気になります。puppeteer同梱のchromiumをelectron内部で使う場合、いよいよ容量が大変なことになってきます。

 

そんな訳で、Electron内でpuppetterを使うことはベストプラクティスなのかどうか、設計時にちゃんと調べることが、今の時点では必要かと思います。

障がい者向け就労支援アプリを製作しました

f:id:freqmodu874:20171117130937j:plain

 

ChalengedKit(β)は、働く障がい者の方々向けの就労支援アプリです。

毎日の体調を記録・共有できるだけでなく、カレンダーや文章なども共同編集できます。

 f:id:freqmodu874:20171207033823p:plain 

こんな機能があります

【記録】睡眠時間や症状の有無など、毎日の体調記録がつけられます。項目は自由に変更することができます。
【分析】日々の記録を一覧表示し、分析することができます。
【共有】クラウドを通じて、他のユーザと記録を共有することができます。そのほか、スケジュールや文章を共有し、共同編集することができます。pdfや画像といった各種ファイルにも対応しています。


こんな使い方ができます

・体調や勤務時間、症状を記録することで、当事者の症状悪化や欠勤などのトラブルを支援者が迅速に把握できます。
・配慮事項や副作用の内容などを文書として共有し、必要に応じて関係者同士で編集することができます。
・通院日や上司との面談日をスケジュールに書き込み、関係者同士でスケジュールを調整できます。
・目に見えない症状でも、記録を通じて見える化することでよりわかりやすくなります。職場では記録をもとに割り振る仕事内容を決めたり、面談の材料にすることができます。

スクリーンショット

f:id:freqmodu874:20171207034532p:plain   f:id:freqmodu874:20171207034647p:plain

f:id:freqmodu874:20171207034652p:plain   f:id:freqmodu874:20171207034427p:plain

その他

作成の経緯

 私は普段デイケアに通っています。デイケアでは、普段の服薬や睡眠を毎日記録し、月に一回提出することになっているのすが、これが億劫で・・・いっそアプリ化したいなあと思い、作成しました。実際の記録が以下の写真です。*1

 

f:id:freqmodu874:20170727232906j:plain

  また、働くうえで配慮事項やら通院日を共有しなければいけないと思い、ファイル・スケジュールのシェア機能も実装しました。社会に出たことがない私が言うのもなんですが、きっと役立つと思います。

 

とりせつビルダー

それから、配慮事項や支援者の連絡先をまとめて表示・urlで共有できるwebツールも作りました。職場の方に口頭で障がいについて伝えるより、こっちの方が楽かなと思います。

freqmodu874.hatenadiary.com

 

 

誰か私を雇ってください(切実)

freqmodu874.hatenadiary.com

*1:デイケアのスタッフさん、無許可で載せてごめんなさい...

配慮事項や障がいの内容を職場で共有できるwebツールを作成しました

 働く障がい者の方が、配慮事項や障がいの内容を職場で共有できるwebツールを作成しました。

wppsc.html.xdomain.jp

 

 質問にしたがって配慮事項や障がいの内容などを入力すると、それらの内容をひとまとめにしたwebページを出力します。そのurlを社内で共有すれば、いちいち社内の同僚の方々に自分の障がいを説明したり、配慮をお願いする手間が省けます。

スクリーンショット

f:id:freqmodu874:20171207010814j:plain

 

f:id:freqmodu874:20171207010823p:plain

 

サンプル

http://wppsc.php.xdomain.jp/ws_test/sample/basic/index.html?key=-L-eizu0XgWV9MqspKKf

 

 

とりあえず、僕の通ってるデイケアで流行らせていこうと思います(希望)