twilioが生成したmkaを短くせずに変換する

twilioで生成されたmkaをFFMPEGでflacとかwavに変換する時時間が短くなることがある. 具体的には短くなったりするのだがこの現象を回避しようとすると簡単に実現するとcompostion apiを利用することになる. ただcomposition apiは遅いので回避したい. 理由はtwilioで生成されたmkaの中身はopusという形式で音声を保持しているが, opusはwavみたいに連続したデータを持たずにgranule positionという情報を持つことでデータの開始位置を持つことで空白時間を気にすることなくデータを保持している. つまりデータが連続していないわけです. なのでちゃんと処理しないと空白時間がなかったことにされて実際の情報より短いデータが出力されてしまう. FFMPEGで処理するときは次の用にパラメータを指定すると空白部分も保持したまま変換することができます. $ ffmpeg -copyts -i in.mka -filter_complex "[0]aresample=async=1:first_pts=0[a0];[a0]amix=inputs=1" out.mka

4月 20, 2022

前輪のタイヤ交換をしました

カブの前輪タイヤ交換しました. 後輪も変更しようとしましたが割りピン抜いた後ナットを外せなかったので来週に持ち越しです.

4月 4, 2022

3月29日のGo言語のtime.Time#AddDateの挙動について

3月29日と書いて有るが前の月よりも長いときで且つ前の月にない日付のときに AddDate で -1ヶ月するときの挙動についてである. -1ヶ月してないときは月初に丸められるっぽい. package main import ( "fmt" "time" ) func main() { fmt.Println(time.Date(2022, 3, 1, 0, 0, 0, 0, time.UTC).AddDate(0, -1, 0)) // 2022-02-01 00:00:00 +0000 UTC fmt.Println(time.Date(2022, 3, 29, 0, 0, 0, 0, time.UTC).AddDate(0, -1, 0)) // 2022-03-01 00:00:00 +0000 UTC fmt.Println(time.Date(2022, 12, 31, 0, 0, 0, 0, time.UTC).AddDate(0, -1, 0)) // 2022-12-01 00:00:00 +0000 UTC }

3月 29, 2022

スーパーカブのオイル交換をした

オイル交換した. 20年もののオイルは少し緑がかった黒でした.

3月 29, 2022

スーパーカブの整備を始めた

しばらく全然更新してませんでしたが元気です. 最近は祖父母が20年ほど前に使っていたスーパーカブ70を引き継いだのでレストアしています. キャブレターからガソリンが染み出してきているので近々ガスケット交換しようかなと思っています.

3月 24, 2022

メモ go-swaggerでcookieをsetする

middleware.Responder を実装してCookieをsetする. func Handler(params foo.Requestparams) middleware.Responder { ... 何らかの処理 ... return NewSetCookieResponder(foo.NewSetCookieOK().WithPayload(&models.SetCookieResponse{})) } type SetCookieResponder struct { responder middleware.Responder } func NewSetCookieResponder(responder middleware.Responder) *SetCookieResponder { return &SetCookieResponder{ responder: responder, } } func (l *SetCookieResponder) WriteResponse(rw http.ResponseWriter, p runtime.Producer) { http.SetCookie(rw, &http.Cookie{ Name: "some token name", Value: "hogehogehoge", Domain: "localhost", Path: "/", HttpOnly: true, Secure: true, Expires: time.Now().Add(7 * 24 * time.Hour), SameSite: http.SameSiteStrictMode, }) l.responder.WriteResponse(rw, p) }

2月 5, 2021

iPhone12 Pro Maxのディスプレイが故障した

12月に購入したiPhone12 Pro Maxのディスプレイが故障した. 落として割れたとかではなく突然左端の領域が反応しなくなった.

1月 27, 2021

丸笹山/赤帽子山

2020/12/12に徳島県の丸笹山, 赤帽子山に登ってきた. 登山口はラ・フォーレつるぎ山のところを利用した. 8時に登山口に到着し登り始めた. 行ってきます pic.twitter.com/iwrJETFH2M — 煩悩 (@ast839) December 11, 2020 この日私以外の登山客はいなかった. 登山口の気温は1度ぐらいだった. 登山道であったのは鹿だけだった. 10頭ほどの群れに4回出会った. 登山道には鹿の糞がところどころ落ちており鹿の多さがよくわかった. 鹿 pic.twitter.com/fFact5H8F5 — 煩悩 (@ast839) December 12, 2020 写真を撮影しながら歩いて40分ほどで丸笹山登山口に到着した. 誰もいない pic.twitter.com/vIWrQdUILw — 煩悩 (@ast839) December 11, 2020 多少もやっていたが悪くわない景色だった. むしろ森の中は多少もやってるほうが幻想的でいい. 丸笹山の山頂付近の木々は少しだけ霧氷が付着していた. pic.twitter.com/DwbckT65ML — 煩悩 (@ast839) December 13, 2020 丸笹山までは特に疲れることもなかったので休憩せずにそのまま赤帽子山へ向かった. 丸笹山から赤帽子山までは下りが続いた. 赤帽子山のほうが標高が低いので当然といえば当然である. 丸笹山, 赤帽子山, 国道439号線分岐のあたりまではとても鹿ポイントだった. 赤帽子山山頂に10時頃到着し早めのお昼をとった. 赤帽子山 pic.twitter.com/wy5GeuP09B — 煩悩 (@ast839) December 12, 2020 帰りは丸笹山山頂を通らずに貞光川源流を通って下山した. pic.twitter.com/GQ1zOOauqN — 煩悩 (@ast839) December 13, 2020 このルートは全体的になだらかで登りやすいし樹林帯は苔が豊富な景観を楽しめるし, 山頂は剣山/三嶺が見渡せて山をはじめたばかりの人に良さそうだと思う. 丸笹山は苔がいいぞ pic....

12月 14, 2020

gocv+v4l2を利用して任意の画像をwebcamとして流す

リモートワークとかするときにzoomとかslackとかGoogle Meetとかでビデオ会議をするんですけど任意の画像をカメラ画像として差し込めると楽しいと思わないですか? LinuxだとCanonとかの一眼レフとかをWebカメラとして認識させるのにv4l2を利用してやる方法が有るんですけど, v4l2を利用することで任意の画像をWebカメラの画像として配信することができます. ざっくり言うと 標準出力に1フレームの情報としてjpegを吐き出す ffmpegでv4l2の仮想デバイスに吐き出す 簡単ですね. sample.jpegというダミー画像を出力することを考えましょう. まずはじめに仮想カメラを生成します. # /dev/video20 として仮想カメラを作る $ sudo modprobe v4l2loopback card_label="dummy_cam" video_nr=20 exclusive_caps=1 次にGoのプログラムを書く. とりあえず main.go とかで用意する. package main import ( "bytes" "image" "image/color" "image/jpeg" "os" ) func main() { of, err := os.Open("sample.jpeg") if err != nil { panic(err) } jpg, err := jpeg.Decode(of) if err != nil { panic(err) } b := jpg.Bounds() // jpegをYUV420pに変換する converted := image.NewYCbCr(b, image....

12月 2, 2020

Amazon ECS FargateでS3から環境変数読み込むときの注意点

S3に保存するときのファイルの拡張子は .env であること .env 以外でやろうとするとTaskDefinitionの作成時に An invalid environment file extension was used. Specify a valid .env file and try again. というエラーを見ることになる プラットフォームバージョンは 1.4.0 以上であること AWSのECS FargateでプラットフォームバージョンをLATESTにしたときの挙動がLATESTぽくない気がする S3から環境変数を読み込む機能を利用できるのが1.4.0からなんだけどLATESTだと使えなくて明示的に1.4.0にすると使えたからLATESTにしたときに古いバージョンが利用されているのではないか? — 煩悩 (@ast839) November 5, 2020 これは注意点と言うよりもおかしな挙動をしてるんじゃないかってことなんだけど. 公式のマニュアルには When specifying a platform version, you can use either a specific version number, for example 1.4.0, or LATEST (which uses the 1.4.0 platform version). と書いてあるので LATEST でも大丈夫なはずなんだけど実際にやってみたら One or more of the requested capabilities are not supported....

11月 6, 2020