2006年11月11日

MPEG4

MPEG4エンコーダを昨年からチョビチョビ作っています。

で、今日はその宣伝。

revison.107をアップしましたよ。久しぶりに、WindowsXP向けのビルドも作成しました。どうぞー、

・EsperanceXP Light (for Windows)
・EspOSX Light (for MacOSX)

MPEG4 ( H.264 + AAC ) encoder

プロジェクトページ ESP @Wiki
posted by esperance at 21:01| 千葉 🌁| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年10月29日

最近

最近簡単な物しかプログラミングとかしてなかったから、久しぶりに訳の分からんバグにぶちあたるとちょっと嬉しい。

うーん、音声が波打っているような。っていうか映像と音声の同期がとれていないような。

エンジン部分はさわっていないから、おそらくコンパイルし直したライブラリのせいだと思うんす。

って感じで盛り上がっています。
posted by esperance at 00:54| 千葉 ☁| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年08月24日

録音ソフト

勝手に、ALSA Recordのarecordにちなんで、mrecordとかって命名してテストしています。

やっとこsleep関数の問題も解決しました。ただ単に unistd.hをインクルードすればよいのね。なんかここ最近のブランクを感じました。はぁー。

それはそれで、とりあえずファイルパス、ファイル名、録音時間の3つを指定して、コマンドラインで動かすことができるようになりました。mainに全て書いている人間こうはなりたくない、やっつけ仕事で完成させました。しかも、CoreAudioハンドル部分はAppleのサンプルそのまんま。

おかげで、waveファイルを経由しないで直接AACファイルを作成できます。後は、crontabに登録して上手いこと動かすことができるように、シェルスクリプトを作成して日々ラジオ録音をーーー。

びば、やっつけーしごおーとー。
posted by esperance at 00:20| 千葉 ☀| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年08月19日

録音

久しぶりにアップルの開発者向けサイトを眺めていたら、RecordAudioToFile というサンプルが公開されていました。

ラインインなどの音声インプットから、録音→AAC形式へ変換という挙動をするものす。GUIで実装されていましたが、これ使えそう。

前々からラジオを録音したいなー、って感じでこれ系のソフトを探していましたが、シェアウェアだったり、GUIで実装しているため、cronで定期的に動かすことができなかったり、ぱっとしませんでしたが、このサンプルをちょこっと改造するだけで、目的のものが出来ちゃいそうです。

久しぶりにいい感じ。作ろう、今月中に。

posted by esperance at 18:38| 千葉 ☀| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年06月11日

久しぶりの更新

最近、個人的に作成しているプログラムに全くと言っていいほど手を加えてなくて、今日久しぶりに改良を施しました。

まあ、キャプチャしたアニメを綺麗にエンコードしたいという理由で、それが原動力で改造しました。なんかもう出来ることがなくなっていて、よほどの何かがないとなかなかねー、な状況になっています。

とりあえず、久しぶりにソースを見ましたが、他人のソースにはまだなっていませんでした。

Esperance MPEG4(H.264) エンコーダ
http://www3.atwiki.jp/esperance/
posted by esperance at 23:01| 千葉 ☔| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年05月06日

GUIバージョン

WindowsGUIバージョンできたよー。H.264/AVCエンコーダ。

見た目はショボイけどさ、内部機能的には凄いんですよー。

http://www3.atwiki.jp/esperance/
posted by esperance at 00:21| 千葉 | Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年05月05日

文字コード

やっぱりさ、プログラミングでこけたりするのって文字コードとか、同じ概念なんだけど多様な形態があるときに喰らうよね。

いままで、Windowsプログラミングで文字コードと戦っていましたよ。Unicodeかなんかをサポートしていたプロジェクト構成だったらしく、超しんどかった。なんというか、日本語ファイル名は使えません、とはじめから決めておけば良かった。

LPCTSTRとか、CStringとか、charとか、LPWSTRとか、もうわけがわかんなくなってきましたよ。Unicodeみたいにすると、strcpyが使えないという致命的な制限にひっかかったりするので、結局マルチバイト構成にしました。

文字コードとかってなんとかならんものかな?
posted by esperance at 00:37| 千葉 | Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年04月11日

覚え書き libx264

libx264をVC++でビルドするときの覚え書き。

LINK:error2005だったかそんなので、__hogeは既にMSVCR80.dllで定義されています。

と怒られたら、プロパティの 構成プロパティ→全般の MFCの使用を"共有DLLでMFCを使う"に変更するべし。

今日はまった。前回は無意識に変更していたみたい。覚えておこう。

ついでに、ビルドで外部ツール 'nasm'が必要になりますが、これはどっか適当なところにインストールし、Windowsのpath環境変数にパスを追加してあげれば、ビルド時に自動的に呼び出されます。
posted by esperance at 22:45| 千葉 ☔| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月30日

H.264

エンコーディングが出来るソフトウェアのWindowsバージョンがなんとかできました。これで、Windows、MacOSX、Linuxバージョンが揃いました。

こんな動作をします
MPEG2(VOBも) → MPEG4 (H.264 + AAC)

無料です〜

http://www3.atwiki.jp/esperance/
posted by esperance at 20:38| 千葉 ☔| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月29日

ありがたや

昨日ちょっとググってたら、libavcodecのdllと静的リンクライブラリ.libを発見。ありがたやー

ちょっとコーディングしてみたら、mpeg2+mp2ファイルを普通に開くことができました。まあコンパイル結果が公開されているみたいなので、、、って、a52コーデックとリンクされていないじゃん。でもあるだけましだ。

やっぱりLinuxライクなクロス環境じゃないとコンパイルできないみたい。VC++での、エラー7500には萎えたけど、当分このライブラリでしのげそう。あー、今日もまたはまるのかなーー。

なんか、いろいろなツールが出てきても、自分で0から作った物の方を使い続けるような気がしてきた今日この頃。

wiki
http://www3.atwiki.jp/esperance/
posted by esperance at 11:54| 千葉 ☁| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月26日

あーー

あー、プログラミングでキューイングを実装しようとしたら、過去の副産物に悩まされています。

そのせいでもうこんな時間。あー、だいたいできたんだけど、めっちゃメモリリークしている。はぁ〜。とんでもメンドイ、、、

LPCMで音が飛ぶとかそんな局所的な問題じゃなく、プロジェクトのファイル広範囲にわたって修正の必要が、、、はっきりいって過去最大の大改造ですよ。泣)
posted by esperance at 23:42| 千葉 | Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

キターーーー

キターーーーーーーーーーー!!!!!

LPCM→AACのエンコードできたーーーーー。感動。

やっぱり、インプットサンプルを2048にそろえてあげる必要があったのね。

ぬおーーーーーーーーー
posted by esperance at 10:25| 千葉 ☁| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月13日

だーーー

あー、LPCM音声のデコードがうまくいかない。なんか、再生時間が2倍ぐらいに超スローな出力になってしまう。なんでだ?

もう、MP4ファイルの方で調節してみたり、ビットマスクして検証してみたり、いろいろやったけど原因がわからず、もしかして本体もできないのでは?と思って、久しぶりにffmpegコマンド使ってみたけど、、、できるし。

これは、ffmpeg本体のソースと睨めっこするしかないかな。あのソース見づらいんだよね。

そもそも、LPCMってなにもの?
posted by esperance at 01:13| 千葉 ☁| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月08日

プログレッシブ

恐らく最後の障害、プログレッシブ素材とB-Frameサポート。

一般的にムービー素材に用いられる、90000タイムスケールのとき、プログレッシブ24fps素材の場合、1フレーム長は90000÷24=3750である。がしかし、実際ムービー中では、3003x4フレーム、4505x2フレームの繰り返しを行うことによって、24fpsへ近づけている。

全てのフレーム長が一定ならB-Frameを用いたエンコードも簡単に行うことが出来るが、このように可変長のフレームが現れた場合、きちんとフレーム情報をハンドルしないと、おかしなムービーが出来てしまう。

また別の問題もある。オリジナルの素材はこのように可変長フレームを用いているが、フレームが長くなるところ、特に高速スクロールをしているシーンで、ぐいっぐいっ、というような映像になってしまう。滑らか、小ストップ、滑らか、小ストップを繰り返す映像である。

じゃあ逆に、フレーム長をリバランスして、3750にした場合はどうか。この方法、(見た感じmplayerはこっちを使っているようであるが)、確かにスクロール時に全体として一定の速度でスクロールするが、もともと連続していた画像の長さ、特に3003を3750に伸ばすのであるから、不要な細かいストップが入る。つまり、チカチカしてしまうのである。

スクロールの滑らかさをとるか、スクロールスピードの自然さをとるかの問題で、この中間の解決方法は、つまりフレーム補完であり現実的に不可能。よって、基本的に二者択一でそれ以外の方法は無い。

可変長フレームの方は
・動きは滑らかで高画質であるが、画面全体が高速にスクロールするシーンに弱い

固定長フレームの方は
・高速スクロールにおいても、落ち着いた動きをするが、ややチカチカした映像になってしまう

現在、私のソフトでは可変長フレームを用いており、内部動作的にかなり面倒な処理をして、オリジナルに忠実になるようにしているが、やはりB-Frameと異なるフレーム長の並び替えといった組み合わせが悪い状況に弱い。もし、3750長を用いるなら、全て同じ長さなのでB-Frameを用いるのも簡単。ラッキー。

--
と、どっちもどっちなんですよ。で、私なりの答えとして、"どっちの方法も選択できるようにして、後は使う人に任せよう、、、"、です。これでいいですよね。
posted by esperance at 23:17| 千葉 | Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月07日

ばかな

libavcodecが提供する、デインターレース機能を用いて出力された画像、、、彩度が落ちてる。

つまり、鮮やかさが薄れ、薄い色になってしまっている。そ、そんなばかな。実写はともかく、アニメだとちょっと困る。とはいえ、どうしようもないな、今のところ。
posted by esperance at 23:56| 千葉 ☁| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

そうですか

最初の1分は、インターレース29.97fpsで、その後プログレッシブ24fpsになるんですか。しかも、第1話だけ。第2話は全てプログレッシブ。

下手物ファイルですね。いいさ、auto detect機能を付け加えてあげますよ。まっとれ、、、、
posted by esperance at 20:12| 千葉 ☁| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月06日

エンコード結果

○○○をねらえ!○の第2話、1,2.vobを連続エンコードした結果報告。

端的にいうと、大成功です。以下要点 (rev.71にて試行)

  • リサイズ 854 x 480 で、CRFモード1-pass、怖かったのでB-Frameなし
  • 平均ビットレート 620 + 128 = 748 kbps (驚異的に小さい、Bがないのにこんなに小さくなった)
  • ファイル結合部分の不自然な点は特になし
  • 映像と音声がだんだんズレてくるといったことがなく、問題なし (可変長フレームに対応したので)
  • 画質はもちろん超絶に綺麗。ビットレートを考慮すると、ありえねーーーって叫べる

という感じに、大成功に終わりました。ビットレートは、コーデックによって決定され、このビットレートですので、なんというかCBRや2-passなぞは不要な気がしてきました。このCRFは革命的に素晴らしいです。

ただ一つ残念なことに、ディレイが不要だった。音声がはやい。下に出力ファイルの情報を掲載していますが、ディレイさせたので、異常に映像が長い。ディレイが0.3secだったので、これがなければ0.1secのズレで済んでいたはず。またエンコードし直さなくては、、、orz

--
[esperance@Freedom Project]$ MP4Box -info 〜/output.mp4
* Movie Info *
Timescale 90000 - Duration 00:27:09.868
Fragmented File no - 2 track(s)
File Brand mp42 - version 0

File has root IOD
Scene PL 0xff - Graphics PL 0xff - OD PL 0xff
Visual PL: AVC/H264 Profile (0x15)
Audio PL: High Quality Audio Profile @ Level 2 (0x0f)
No streams included in root OD

Track # 1 Info - TrackID 1 - TimeScale 90000 - Duration 00:27:09.868
Media Info: Language "und" - Type "vide" - Sub Type "avc1" - 39171 samples
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 854 x 480
Self-synchronized

Track # 2 Info - TrackID 2 - TimeScale 48000 - Duration 00:27:09.408
Media Info: Language "und" - Type "soun" - Sub Type "mp4a" - 76379 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000
Synchronized on stream 1
posted by esperance at 10:35| 千葉 | Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

VS

あの〜、VisualStudioっていつになったらインストールできるんですか?

インストールしようとすると、Express版を消せっていわれ、またトライすると、.NETを消せっていわれ、また今度は.NET-JAPを消せっていわれ、再起動を繰り返し、かれこれ30分。いい加減にあきてきた。っていうか、呆れてきた。

そうだった、この無駄に時間がかかるのがWindowsだった。これが嫌いで、Macを使っていたんだった。なんか、タスクバーから、お使いのコンピュータは危険にさらされていますとかいわれたり、ウイルスバスターの期限が切れました、ってアプリケーションに割り込んで表示したり、、、、つまり、うざい。

インストールを始めるまでに30分以上もかかるなんて、そんなのありなの?
posted by esperance at 01:00| 千葉 ☀| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月05日

どうやら

かなり、極まってきたかんじです。独り言です。自分へのメッセージです。

先ほどから、libavcodecのシーク機能を使って、ちゃんとムービーが連結されるかに集中して検証等をしていました。危惧されることとして、音が飛ぶ・白いフレームが入る、などが考えられましたがどちらも発生しませんでした。

ただ、内部動作がわかっていてるので、理論上は音声1フレーム弱のみ欠落すると思われる仕様になっていましたが、聞き分けられませんでした。これは、libfaacを閉じないでエンコードバッファにどんどん付け加えることにより、空白のフレームの発生を防いだからだと思います。また、実際は欠落があるけど、ごくごく瞬間のことで聞き分けるのが難しいからだと思います。

映像に関しては、先のファイルのリードが終わったら、きちんとフラッシュするので空白のフレーム等は基本的に発生しません。それに○VDのファイルスプリットは、Iフレームが登場する直前で切られていると思いますので、その点もあって不自然なフレーム自体が発生しにくいのだと思います。ただ、対象物がVFRのものですので、B-Frameを用いると対応できません。これは、いまから取り組み、解決したいと思います。

一番問題な点としては、私のパソコンの性能が弱々しく、854 x 480のサイズでのエンコードがいつ終わるのかわからないくらい時間がかかり、激感動までにまだ時間がかかってしまうということです、、、、って感じ〜〜〜
posted by esperance at 17:37| 千葉 ☀| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

2006年03月04日

連鎖

いやー、悪いことって続くものですね。

プログラミングで、あれが出来たー、と思って油断していると、実はできてなかったー、ってことがあって、そこで直すと、また違うところが出来ていない。なんてことが、今日1日を通してありました。

うーん、まいった。こいう時は頭を冷やした方が良いんでしょうね。"バスタァーーービィーーーム"で盛り上がってたんですけどね。反省反省。
posted by esperance at 21:12| 千葉 ☀| Comment(0) | TrackBack(0) | ものづくり | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。