Skip to content

team-dauntless-uncharted/PosixAvi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PosixAviLibrary 利用ガイド

参考元: AviLibrary_Arduino

PosixAviLibraryクラスは、JPEGフレームからAVI形式の動画を生成するためのライブラリです。このライブラリは、通常録画とタイムラプス録画の2つのモードをサポートしています。

通常の動画録画

このモードは、リアルタイムの動画撮影に適しており、フレームの追加時間に基づいてFPS(フレーム/秒)を計算します。

使い方

1.初期化

begin()メソッドを呼び出し、ファイル名、幅、高さを指定してAVIファイルを作成・開きます。

#include "PosixAvi.hpp"

PosixAviLibrary avi;
const char* filename = "movie.avi";
uint16_t width = 1280;
uint16_t height = 960;

if (avi.begin(filename, width, height)) {
    // 成功
} else {
    // エラー処理
}

2.録画開始

startRecording()を呼び出すことで、AVIヘッダーがファイルに書き込まれ、録画時間計測が開始されます。

if (avi.startRecording()) {
    // フレーム追加可能
} else {
    // エラー処理
}

3.フレーム追加

addFrame()をループ内で繰り返し呼び出し、JPEG画像データとサイズを渡します。これにより、動画にフレームが追加され、FPSやファイルサイズなどの情報が更新されます。

// ループ内で実行
char* imgBuffer = getJpegFrame(); // 独自のJPEG取得関数
uint32_t imgSize = getJpegSize();
if (imgBuffer && imgSize > 0) {
    avi.addFrame(imgBuffer, imgSize);
}

4.録画終了

endRecording()を呼び出して録画を完了させます。これにより、ヘッダー情報が最終的な値に更新されます。

if (avi.endRecording()) {
    // 完了
}

5.リソース解放

end()を呼び出してファイルを閉じます。

avi.end();

タイムラプス録画

このモードは、特定のFPSで再生される動画を作成するのに適しています。

使い方

初期化: 通常録画と同じくbegin()で初期化します。

タイムラプス開始: startTimelapse()を呼び出し、目的のFPSを引数に渡します。

uint8_t targetFps = 10;
if (avi.startTimelapse(targetFps)) {
    // タイムラプス録画開始
}

フレーム追加: addTimelapseFrame()を呼び出してフレームを追加します。このモードでは、指定したtargetFpsに基づいて動画情報が計算されます。

char* imgBuffer = getJpegFrame();
uint32_t imgSize = getJpegSize();
avi.addTimelapseFrame(imgBuffer, imgSize);

終了: endTimelapse()を呼び出して、最終的な情報をヘッダーに書き込みます。

if (avi.endTimelapse()) {
    // 完了
}

リソース解放: end()を呼び出してファイルを閉じます。

avi.end();

About

AVIをPOSIX APIで保存する

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages