パパエンジニアのポエム

奥さんと娘ちゃんへの愛が止まらない

GolangでMP4を連結するWebアプリ作ってみた

Golangを書いてみたかったので、仕事上必要そうなmp4を連結するアプリを実装してみました。
※ 勉強がてら作ったものなので、グローバルにホストしたコンテナは削除してしまいました。

アプリケーション概要

フロントエンドはVue.js(SPA)、バックエンドはGolang、WAFはGin使いました。
ffmpegに依存しています、事前にインストール必要です。

実際のUIですが、mp4ファイルを順番に input に追加していくだけです。
以下UIのキャプチャです。

f:id:yuki-toida:20180911152925p:plain

サーバーサイドの処理

  • Formから取り出したファイルをテキストファイルに書き込みリスト化
  • リストを ffmpeg の concat コマンドに突っ込む
  • 連結された mp4 ファイルを Cloud Storage にアップロード
err = exec.Command("ffmpeg", "-f", "concat", "-i", inputText, "-c", "copy", mp4).Run()
if err != nil {
  panic(err)
}

って感じです。
GCPのクライアントを使いたかったので、GCSにアップロードしてみました。
ファイル名は xid 使って難読化しています。

最終的なソースコードはこちら
github.com

Golang良き良き

Golangいいですね、すごく手に馴染む。
スターティングGo言語 Kindle版 で勉強しました。
覚える構文も少ないし学習コスト低いなーと。

vscode で書いてみたんですが、golint や gofmt 等の開発ツールがとても優秀で生産性高く開発できそうです。
ただ、ちょっとコード量が大きくなるのがいただけない気もしますね。
大規模アプリのバックエンドを新規でつくってみたいなー。
Golangしばらく追っかけようかな。