yyokii / DiaryApp

Simple iOS Diary App
https://apps.apple.com/jp/app/id6451009770
MIT License
5 stars 1 forks source link

数日分の日記を動画化する #17

Open yyokii opened 1 year ago

yyokii commented 1 year ago

https://tattn.dev/blog/2023/08/20/internalhackday19/

TODO

yyokii commented 1 year ago

AVFoundation周りのメモ

FPS, Timescale

FPS (Frames Per Second)

Timescale

timescaleを600で設定した場合、1秒は600の単位に分けられます。この場合、1単位は1/600秒となる。 fpsは、1秒あたりのフレーム数を表すもので、これとtimescaleは別の概念。しかし、timescaleとfpsを組み合わせることで、各フレームの時間の長さを具体的に計算することができる。

例えば、30fpsの動画でtimescaleが600の場合、1フレームの時間は次のように計算できる:

1秒の単位 ÷ fps = 600 ÷ 30 = 20単位

この場合、1フレームは20単位の時間を持つ

AVAssetWriter

これを利用してQuickTime ムービー ファイル形式や MPEG-4 ファイル形式などのファイル形式にメディアを書き込みます。

AVAssetWriterInput

asset writerの出力ファイル内のトラックにメディアサンプルを追加するオブジェクト。

AVAssetWriterInputPixelBufferAdaptor

ピクセルバッファーを出力ファイルに割り当てるために使用するピクセルバッファー プールを提供する。通常、バッファ割り当てに提供されたプールを使用する方が、独自のプールを管理するより効率的。 特定の形式(CVPixelBuffer)のメディアデータAVAssetWriterInput に効果的に渡すためのアダプター。 CVPixelBufferのデータをAVAssetWriterInputが理解できる形に変換してくれる。 このアダプターを使用することで、ピクセルバッファの取り扱いがシンプルになり、高度な変換や処理を気にすることなく、簡単にビデオフレームを動画に追加することができる。

AVAssetWriterInput はメディアデータの書き込みのための入力チャンネルそのもので、AVAssetWriterInputPixelBufferAdaptor は特定のデータ形式をその入力チャンネルに効果的に渡すためのヘルパー。

CVPixelBuffer

メインメモリ内のピクセルを保持するイメージバッファであり、フレームを生成するアプリや、Core Imageを使用するアプリで利用される。

コーデックキー

ビデオやオーディオのデータを圧縮するための技術やアルゴリズムを特定するための識別子。AVFoundationなどのメディア関連のライブラリやフレームワークで使用される際、特定のコーデックを選択するためにこのキーを使用する。

具体的には、AVVideoCodecKeyはAVAssetWriterなどでビデオのエンコード形式を指定するためのキーとして使用される。

いくつかの一般的なコーデックキーの値: