[NEEK][動画再生]ACM動画を作る
SDカードから読んで動画再生したいが、SPIモードでのリードは低速なので、大容量の動画は再生出来ない。
そこで以下、長船さんのACM(Adaptive Code Mapping)を利用させて頂く。
http://www001.upp.so-net.ne.jp/syrius/pld/lmf/lmf.html
既にとんずら雑記RさんがNEEKでACM動画再生成功されてるので、参考になる。
■ACM動画作成手順
・AviUtl入手
AVIから連番BMP(ビットマップ)を作成するために、AviUtlを入手。解凍。
http://spring-fragrance.mints.ne.jp/aviutl/
aviutl99i5.zip version0.99i5 2010/2/22
・AviUtlへコーデック追加
「DirectShow File Reader プラグイン for AviUtl」を以下から入手。「ds_input026a.lzh」を入手。
解凍後「ds_input.aui」をAviUtlと同DIRへコピー。これが無いと今回使ったAVIは読めなかった。
http://www.tenchi.ne.jp/~yoko/aviutl/index.php?DirectShow%20File%20Reader%20%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%20for%20AviUtl
・AviUtlへ連番BMP出力プラグイン追加
上記同URLから入手し、解凍後の「bmp_output.auo」をAviUtlと同DIRへコピー。
bmp_output.zip 連番BMP出力 version0.06 2008/10/24
・AVIから連番BMP作成
AviUtl起動 > AVIファイルをD&D > ファイル > プラグイン出力 > 連番BMP出力
> ファイル名(試しにhoge)入力 > 音声無しにチェック(とりあえず画像データだけ出すため)
> 保存 > 「hoge_0000.bmp」~「「hoge_0250.bmp」が指定DIRへ保存された。
・ACM動画作成プログラム入手
長船さんご提供の以下プログラムを入手。
http://www001.upp.so-net.ne.jp/syrius/pld/lmf/lmf.html
①ACM圧縮・展開プログラム(50kバイト,Rev20080421) --- mcu_codec.lzh
②CK-codec圧縮プログラム(48kバイト,Rev20080421) --- ck_enc.lzh
・BMPからACMを作成(テスト)
以下のように実行するとppmとacm(バイナリ)が生成された。ppm見ると成功してるみたい。
./mcu_codec/mcu_codec.exe bmp_file quality color_num
BMP : ピクセルは「縦横とも8の倍数」という規定あり。ソース参照。
quality : 0 - 6, 6 is best quality.
color_num: 0=RGB888(16M色)でデコード(減色なし)
1=RGB555(32k色)でデコード
2=RGB444(4096色)でデコード
・ACM動画作成
ck_enc.exeで扱えるファイルは「name_n.bmp(nは0から連番)」という事なので、AviUtlで生成したファイル名
(name_0000.bmp ~ name_0250.bmp)は扱えない。なので、「お~瑠璃ね~む」というフリーソフトで、
連番の前に付く余計な「0」を削除してやる。
つまり、
hoge_0000.bmp → hoge_0.bmp
hoge_0250.bmp → hoge_250.bmp
ってこと。
ファイル名を変更したら以下実行すると「hoge.ck」が生成された。中身確認出来ないが成功したっぽい。
./ck_enc/ck_enc.exe hoge
あとはSDカードへ保存して、動画ファイルの先頭アドレスから読み出せば良いのかな?
それとも成功された方が利用しているファイルシステム(FatFsとか)がやはり必要なんだろうか。
Windowsからファイル保存するのに、SDカードはFATか何かで良いと思うが、後は、保存したファイルの先頭
アドレスを確かめる方法があれば実機でも確認出来ると思うのだが・・・
(2010/2/28追記)
SDカードをFATでフォーマットし、最初のデータを書き込むと以下だった。
ファイル名: 81セクタの途中から保存された。
データ : 113セクタの先頭から保存された。
ちなみにSDカードは16Mbyte(1セクタ=512byte、0~28800セクタ)のもの。
ってことは113セクタ目から決めうちで読み出せば、FATファイルシステム実装しなくて読み出し可能かな?
そこで以下、長船さんのACM(Adaptive Code Mapping)を利用させて頂く。
http://www001.upp.so-net.ne.jp/syrius/pld/lmf/lmf.html
既にとんずら雑記RさんがNEEKでACM動画再生成功されてるので、参考になる。
■ACM動画作成手順
・AviUtl入手
AVIから連番BMP(ビットマップ)を作成するために、AviUtlを入手。解凍。
http://spring-fragrance.mints.ne.jp/aviutl/
aviutl99i5.zip version0.99i5 2010/2/22
・AviUtlへコーデック追加
「DirectShow File Reader プラグイン for AviUtl」を以下から入手。「ds_input026a.lzh」を入手。
解凍後「ds_input.aui」をAviUtlと同DIRへコピー。これが無いと今回使ったAVIは読めなかった。
http://www.tenchi.ne.jp/~yoko/aviutl/index.php?DirectShow%20File%20Reader%20%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%20for%20AviUtl
・AviUtlへ連番BMP出力プラグイン追加
上記同URLから入手し、解凍後の「bmp_output.auo」をAviUtlと同DIRへコピー。
bmp_output.zip 連番BMP出力 version0.06 2008/10/24
・AVIから連番BMP作成
AviUtl起動 > AVIファイルをD&D > ファイル > プラグイン出力 > 連番BMP出力
> ファイル名(試しにhoge)入力 > 音声無しにチェック(とりあえず画像データだけ出すため)
> 保存 > 「hoge_0000.bmp」~「「hoge_0250.bmp」が指定DIRへ保存された。
・ACM動画作成プログラム入手
長船さんご提供の以下プログラムを入手。
http://www001.upp.so-net.ne.jp/syrius/pld/lmf/lmf.html
①ACM圧縮・展開プログラム(50kバイト,Rev20080421) --- mcu_codec.lzh
②CK-codec圧縮プログラム(48kバイト,Rev20080421) --- ck_enc.lzh
・BMPからACMを作成(テスト)
以下のように実行するとppmとacm(バイナリ)が生成された。ppm見ると成功してるみたい。
./mcu_codec/mcu_codec.exe bmp_file quality color_num
BMP : ピクセルは「縦横とも8の倍数」という規定あり。ソース参照。
quality : 0 - 6, 6 is best quality.
color_num: 0=RGB888(16M色)でデコード(減色なし)
1=RGB555(32k色)でデコード
2=RGB444(4096色)でデコード
・ACM動画作成
ck_enc.exeで扱えるファイルは「name_n.bmp(nは0から連番)」という事なので、AviUtlで生成したファイル名
(name_0000.bmp ~ name_0250.bmp)は扱えない。なので、「お~瑠璃ね~む」というフリーソフトで、
連番の前に付く余計な「0」を削除してやる。
つまり、
hoge_0000.bmp → hoge_0.bmp
hoge_0250.bmp → hoge_250.bmp
ってこと。
ファイル名を変更したら以下実行すると「hoge.ck」が生成された。中身確認出来ないが成功したっぽい。
./ck_enc/ck_enc.exe hoge
あとはSDカードへ保存して、動画ファイルの先頭アドレスから読み出せば良いのかな?
それとも成功された方が利用しているファイルシステム(FatFsとか)がやはり必要なんだろうか。
Windowsからファイル保存するのに、SDカードはFATか何かで良いと思うが、後は、保存したファイルの先頭
アドレスを確かめる方法があれば実機でも確認出来ると思うのだが・・・
(2010/2/28追記)
SDカードをFATでフォーマットし、最初のデータを書き込むと以下だった。
ファイル名: 81セクタの途中から保存された。
データ : 113セクタの先頭から保存された。
ちなみにSDカードは16Mbyte(1セクタ=512byte、0~28800セクタ)のもの。
ってことは113セクタ目から決めうちで読み出せば、FATファイルシステム実装しなくて読み出し可能かな?
スポンサーサイト