JURIA @Wiki
@あれこれ-2007年8月
最終更新:
juria
-
view
[2007-08-20]
FFMpegSource.dll は
VirtualDubMod が起動時に AviSynth のオートローディング用ディレクトリ
(デフォルトでは AviSynth2.5\plugins)内の Plugin を読み込む場合は、
plugins フォルダに FFmpegSource.dll があると、avcodec-51.dll、avformat-51.dll、
avutil-49.dll、postproc-51.dll、swscale-0.dll、zlib1.dll が見つからないと
警告されてしまう。
FFMpegSource.dll は別ディレクトリに置いて、必要に応じて手動で読み込む方が
良さそ。もし、FFmpegSource を VDM やその他複数のアプリでも使用するなら、上記
6個のランタイムファイルをパスが通ったところにコピーする。
WM9Controller 等、使うアプリが決まっている場合は、そのアプリのディレクトリに
置けばよい。([2007-08-13] 参照)
(デフォルトでは AviSynth2.5\plugins)内の Plugin を読み込む場合は、
plugins フォルダに FFmpegSource.dll があると、avcodec-51.dll、avformat-51.dll、
avutil-49.dll、postproc-51.dll、swscale-0.dll、zlib1.dll が見つからないと
警告されてしまう。
FFMpegSource.dll は別ディレクトリに置いて、必要に応じて手動で読み込む方が
良さそ。もし、FFmpegSource を VDM やその他複数のアプリでも使用するなら、上記
6個のランタイムファイルをパスが通ったところにコピーする。
WM9Controller 等、使うアプリが決まっている場合は、そのアプリのディレクトリに
置けばよい。([2007-08-13] 参照)
#--- プラグインの手動読み込み # AVS と同じディレクトリにある場合 LoadPlugin("FFMpegSource.dll") # プラグインを直接指定する場合 #LoadPlugin("path\to\pluginsdir\FFMpegSource.dll") #--- ソースのディレクトリ --- SourceDir = "E:\Video\FLASH\" #--- ソースファイルを開く --- FFmpegSource(SourceDir + "hoge.flv", vtrack = -1, atrack = -1, vcache = false) return last
どうやら FFMpegSource.dll は
On2 VP6(FLV4) をデコードできないようです。(FLV1 はオッケ)
最近の ffmpeg であれば対応しているので、一旦 rawvideo にしてから WMV9 に
エンコードすればよいけど、中間ファイルは作りたくないなあ。
最近の ffmpeg であれば対応しているので、一旦 rawvideo にしてから WMV9 に
エンコードすればよいけど、中間ファイルは作りたくないなあ。
ffmpeg.exe -y -i "path\to\VP6.flv" -vcodec rawvideo -acodec copy "pipe.avi"
[2007-08-18]
WMV エンコード用入力ソースに関する覚書
WM エンコーダで対応していないフォーマットを入力ソースにしたい
(WM エンコーダは VFAPI に未対応)
(WM エンコーダは VFAPI に未対応)
プロジェクトファイルの相互利用、 VFAPI Plug-In、参照AVI は、言ってみれば
WMV に限らず動画エンコードの基本でしょうか。
WMV に限らず動画エンコードの基本でしょうか。
■ TMPGEnc、Aviutl +
DirectShow File Reader プラグイン for AviUtl(ds_input.aui)
で読み込み、プロジェクトファイルを作成する。
■ VFAPI Plug-In を経由して AviUtil or TMPGEnc or DVD2AVI/DGIndex にソースを読み込ませてプロジェクトファイルを作成する。
MPEG-2 VIDEO VFAPI Plug-In(m2v.vfp)
Shockwave Flash VFAPI Plug-In(swf.vfp)
AviUtil ProjectFile Reader(aviutil.vfp)
TMPGEnc ProjectFile Reader(TMPGEnc.vfp)
DVD2AVI ProjectFile Reader(DVD2AVI.vfp)
MPEG-2 VIDEO VFAPI Plug-In(m2v.vfp)
Shockwave Flash VFAPI Plug-In(swf.vfp)
AviUtil ProjectFile Reader(aviutil.vfp)
TMPGEnc ProjectFile Reader(TMPGEnc.vfp)
DVD2AVI ProjectFile Reader(DVD2AVI.vfp)
1.
VF2WMV Encoder Beta.1 (最終版)
AviUtlプロジェクトファイル(.aup) or TMPGEnc プロジェクトファイル(.tpr)
or DVD2AVI/DGIndex プロジェクトファイル(.d2v)に対応
AviUtlプロジェクトファイル(.aup) or TMPGEnc プロジェクトファイル(.tpr)
or DVD2AVI/DGIndex プロジェクトファイル(.d2v)に対応
2.各プロジェクトファイルを VFAPIConv.exe(
VFAPI Reader Codec 1.05
同梱)で
参照AVIに変換後 WM エンコーダやフロントエンドで読み込む
参照AVIに変換後 WM エンコーダやフロントエンドで読み込む
■ AviUtl +
FrameLoader
で中継AVIを作成、WMエンコーダ(or フロントエンド)に
(出力100% になったら完了、AviUtl は閉じないでおくこと。)
(出力100% になったら完了、AviUtl は閉じないでおくこと。)
■ AviUtl +
wmvout
or
wmvoutplus
■ AviSynth 経由
WM9Controller
VF2WMV Encoder
WM9Tool
WMNicEnc - Nic's WMV encoder (suports the all advanced settings)
WM9Controller
VF2WMV Encoder
WM9Tool
WMNicEnc - Nic's WMV encoder (suports the all advanced settings)
その他
Windows Media Encode Script 改
映像と音声を別ファイルから入力可
wmcmd.vbs
supports all the advanced settings and .avs inputs
Windows Media Encode Script 改
映像と音声を別ファイルから入力可
wmcmd.vbs
supports all the advanced settings and .avs inputs
MPEG4+MP3のwmvファイルに変換する簡易キット
使用する WMCmd.vbs と プロファイル(.prx)を設定ファイルで指定
Audio に MP3 を使わないのならレジストリの変更は不要。その場合は付属の
プロファイル以外のプロファイルを指定すること→使い分けが可能)
[2007-08-08] 参照
使用する WMCmd.vbs と プロファイル(.prx)を設定ファイルで指定
Audio に MP3 を使わないのならレジストリの変更は不要。その場合は付属の
プロファイル以外のプロファイルを指定すること→使い分けが可能)
[2007-08-08] 参照
Tools for configuring all the advanced settings of WMV9 encoder and decoder
(registry settings)
WMV9 PowerToy (要 .NET Framework version 2.0)
WMV9 Advanced Settings Editor (要 .NET Framework version 2.0)
(registry settings)
WMV9 PowerToy (要 .NET Framework version 2.0)
WMV9 Advanced Settings Editor (要 .NET Framework version 2.0)
参考
Using the Advanced Settings of the Windows Media Video 9 Advanced Profile Codec
VC-1 and Windows Media Video 9 FAQ
Using the Advanced Settings of the Windows Media Video 9 Advanced Profile Codec
VC-1 and Windows Media Video 9 FAQ
[2007-08-15]
ffmpeg の怪
相も変わらず エクスプローラから gigabeat への転送テストなんですが、
Microsoft MPEG-4 (MP4S)
Windows Media Video V7 (WMV1)
Windows Media Video V8 (WMV2)
Windows Media Video V9 (WMV3)
Windows Media Video V7 (WMV1)
Windows Media Video V8 (WMV2)
Windows Media Video V9 (WMV3)
いずれも、WM エンコーダでエンコードした WMV は(制限内であれば)転送・
再生可能なんですよね。エンコーダに ffmpeg を使うとダメっぽいです。
再生可能なんですよね。エンコーダに ffmpeg を使うとダメっぽいです。
WMPlayer 11 では再生できるので、ヘッダー情報の何かの所為かもしれない。
内部デコーダに libavcodec を使用しているプレーヤー(#)によって再生できたり
出来なかったりするのは、また別の問題でしょう、たぶん。
内部デコーダに libavcodec を使用しているプレーヤー(#)によって再生できたり
出来なかったりするのは、また別の問題でしょう、たぶん。
結論として、WMV へのエンコードには何を使っても、同期には WMPlayer を使え
ってことになるんでしょうけど(劣化は避けられない)、へそ曲がりな私には、
納得しがたいのだわ。
ってことになるんでしょうけど(劣化は避けられない)、へそ曲がりな私には、
納得しがたいのだわ。
[2007-08-13]
FLV to WMV (AviSynth)
頑張れば AHK で WM エンコード スクリプトのフロントエンドが作れるかも、と
思ったが、けっこうあるんですね。
WM9Controller
WM9ES Frontend
AzWM9 Script Frontend
VF2WMV Encoder
思ったが、けっこうあるんですね。
WM9Controller
WM9ES Frontend
AzWM9 Script Frontend
VF2WMV Encoder
WM9Controller
は AVS が開ける!
と言うことで早速。
と言うことで早速。
■準備
- AviSynth 2.5 はインストール済み
- FFmpegSource17.rar 内の FFmpegSource.dll を AviSynth 2.5\plugins フォルダに、
- avcodec-51.dll、avformat-51.dll、avutil-49.dll、postproc-51.dll、swscale-0.dll、zlib1.dll を WM9Controller(WM9C0140.exe) と同じフォルダにコピー
■AviSynth スクリプト(AVS)ファイルを作成
FLV.avs(都合により一部改行)
FLV.avs(都合により一部改行)
#--- ソースのディレクトリ --- SourceDir = "E:\Video\FLASH\" #--- ソースファイルを開く --- FFmpegSource(SourceDir + "hoge.flv", vtrack = -1, atrack = -1, vcache = false) return last
# Video,Audio とも最初のトラックを使用(省略しない)
# Video の cacheファイルは作成しない(Audioの cacheファイルは必ず作成される)
# 詳細は FFmpegSource.html を参照
# Video の cacheファイルは作成しない(Audioの cacheファイルは必ず作成される)
# 詳細は FFmpegSource.html を参照
■WM9Controller でエンコード
- 入力ファイルに AVS を指定。出力ファイル名は、自動で AVSファイルと同名になるので修正
- オプションの設定(ビデオ、オーディオ)等をして「実行」
- リストに「登録」すれば、バッチエンコードが可能
- BES (Battle Encoder Shirase)ver.1.2.2 で CPU負荷制限するなら、ターゲットは WM9C0140.exe
FLVSplitter と ffdshow 入れちゃう方が楽なのかもしれないけどね。
[2007-08-12]
BES + WMV エンコード for gigabeat-V
エクスプローラから gigabeat にコピーする場合(デバイスの設定はデフォルト)、
テストでは、Video(WMV9),Audio(WMA9) とも CBR の場合、210kbps + 96kbps が限界。
(gigabeat を接続して)WMP 11から[同期]→[gigabeat-V]→[詳細オプション]
→[品質]で、「最高音質レベルを選択する」(音楽 64~192kbps、ビデオ 80~800kbps)か、
[同期]→[その他のオプション]→[デバイス]→[詳細]→[ビデオの変換時に速度より
品質を優先する] にチェックすると変わってくるのかもしれません(未確認)。
→ダメでした。やっぱり WMP から同期する場合のみの設定ですね、当然か。。。
テストでは、Video(WMV9),Audio(WMA9) とも CBR の場合、210kbps + 96kbps が限界。
(gigabeat を接続して)WMP 11から[同期]→[gigabeat-V]→[詳細オプション]
→[品質]で、「最高音質レベルを選択する」(音楽 64~192kbps、ビデオ 80~800kbps)か、
[同期]→[その他のオプション]→[デバイス]→[詳細]→[ビデオの変換時に速度より
品質を優先する] にチェックすると
→ダメでした。やっぱり WMP から同期する場合のみの設定ですね、当然か。。。
BES (Battle Encoder Shirase)ver.1.2.2 で WMエンコーダのCPU負荷率を制限
- BES を wmenc.exe を引数にして(Watching)起動後、wmenc.exe を起動する
BES-WMEnc.ahk(都合により一部改行)
DetectHiddenWindows, On ; 制限率 25%、BES は最小化で起動 Run, path\to\BES.exe "C:\Program Files\Windows Media Components \Encoder\wmenc.exe" 25 --minimize ; wmenc.exe が起動していなければ起動する ; すでに起動していれば、BES が見つけてくれる ifWinNotExist, ahk_class MS Windows Media Encoder { Run,"C:\Program Files\Windows Media Components\Encoder\wmenc.exe" "%1%" ; 引数はセッションファイル(.wme)のみ WinWait,ahk_class BATTLEENC } Return
WMエンコーダをコマンドラインで操作
「Windows Media エンコード スクリプト」、つまり、CLI版 WSH (cscript.exe) を
使えばいいらしい。WMCmd.vbs が用意されている。
GUI でプレビューしながら(↑)より 20% ほど速い気がする(CPUへの負荷が減る分?)
使えばいいらしい。WMCmd.vbs が用意されている。
GUI でプレビューしながら(↑)より 20% ほど速い気がする(CPUへの負荷が減る分?)
- 変換元ファイルを AHK の引数にして実行、BES を cscript.exe Watching 起動してエンコードを開始
- BES (Battle Encoder Shirase)ver.1.2.2 でcscript.exe の CPU負荷率を制限
- エンコードオプションの詳細は「Windows Media エンコード スクリプト」のヘルプ参照(C:\Program Files\Windows Media Components\Encoder\WMEncUtil.chm)
- 変換後のファイルは、ソースと同じ場所に、ファイル名末尾に [_] をつけて保存
BES-WMCmd.ahk(都合により一部改行)
DetectHiddenWindows, On source = %1% SplitPath, source, file, dir, ext, name, drive ; 制限率 33%(未指定なら規定値)、BES は最小化で起動 Run, path\to\BES.exe C:\WINDOWS\system32\cscript.exe --minimize ; cscript.exe が起動していなければ起動する ; すでに起動していれば、BES が見つけてくれる ifWinNotExist, ahk_pid cscript.exe { ; CBR 1pass、Audio・Video の品質とサイズを指定してエンコード ; そのプロファイルをファイルに保存 Run, cscript.exe "C:\Program Files\Windows Media Components\Encoder \WMCmd.vbs" -input "%source%" -output "%dir%\%name%_.wmv" -v_mode 0 -a_mode 0 -a_setting 96_44_2 -v_bitrate 210000 -v_framerate 29.97 -v_height 240 -v_width 320 -saveprofile D:\My-profiles\210-96.prx WinWait,ahk_class BATTLEENC } Return
同じプロファイルを使用してエンコードする場合は、保存したプロファイルを
指定するとスクリプトが短くなっていいかも。(utf16 の xml なので、文字コードに
対応しているエディタで編集も可能)
指定するとスクリプトが短くなっていいかも。(utf16 の xml なので、文字コードに
対応しているエディタで編集も可能)
-loadprofile C:\My-profiles\210-96.prx
コーデックを指定可能(-a_codec,-v_codec 未指定なら wmv9)なので、wmv8 とかも
検証してみなくちゃダメかしらん。。。
検証してみなくちゃダメかしらん。。。
[2007-08-10]
厳し過ぎない?
ffmpeg rev.9767 で wmv にエンコードしてみた。(表示の都合により改行)
(たぶん、rev.9017 頃には wma エンコードに対応)
(たぶん、rev.9017 頃には wma エンコードに対応)
ffmpeg.exe -formats Codecs: 抜粋(D:デコード E:エンコード) DEA wmav1 DEA wmav2 DEVSD wmv1 DEVSD wmv2 D V wmv3
ffmpeg.exe -y -i "input.flv" -title "hoge" -vcodec wmv2 -b 200000 -r 15.00 -acodec wmav2 -ar 44100 -ac 2 -ab 96000 "output.wmv"
200kbp/s 以下であればエクスプローラから転送は出来るのだが、再生不能。
WMV9 (Code:WMV3) でないとダメってことですかね。ffmpeg で対応して欲しいね。
→WM エンコーダのバージョンに関わらず、ffmpeg じゃだめなのかも。
→WM エンコーダのバージョンに関わらず、ffmpeg じゃだめなのかも。
BES (Battle Encoder Shirase)
は Windows Media エンコーダの CPU負荷率を
きちっと抑えてくれたので、もう少しテスト続けてみよ。 GCooler も試してみたいし。
きちっと抑えてくれたので、もう少しテスト続けてみよ。 GCooler も試してみたいし。
。。。泥沼の予感
[2007-08-08]
gigabeat Vシリーズ
思いがけず、gigabeat V401 を頂いてしまった^^
ポータブルAVプレーヤーとしては既に PMP-140 を持っているが、gigabeat V401 は
何と言ってもワンセグ対応、予約録画も出来る。高温高負荷時に緊急シャットダウンが
かかるようになってしまったメインマシンの代わりに F1 の録画をしようかと。
ポータブルAVプレーヤーとしては既に PMP-140 を持っているが、gigabeat V401 は
何と言ってもワンセグ対応、予約録画も出来る。高温高負荷時に緊急シャットダウンが
かかるようになってしまったメインマシンの代わりに F1 の録画をしようかと。
WMV、WMA(固定・可変ビットレート、ロスレス)MP3、WAV の再生が可能。
データの転送には Windows Media Player 11 or 10 が必要とのことで、試しに WMP 8
が入ってるサブマシンに繋いでみたが、ドライバのインストールさえ出来なかった。
やむなく、メインマシンに WMP 11 をインストール。
データの転送には Windows Media Player 11 or 10 が必要とのことで、試しに WMP 8
が入ってるサブマシンに繋いでみたが、ドライバのインストールさえ出来なかった。
やむなく、メインマシンに WMP 11 をインストール。
結論から言うと、デバイスとして認識されてしまえば、WMP は不要。
エクスプローラから、gigabeat-V\Storage\Music または \Video フォルダ以下に
対応ファイルを放り込めば良し。
エクスプローラから、gigabeat-V\Storage\Music または \Video フォルダ以下に
対応ファイルを放り込めば良し。
但し、
Area61 ビデオダウンローダー
(エンコーダは ffmpeg)で FLVからデフォルト
の設定でエンコードした WMV(Mpeg4v2 + mp3)のようなイレギュラなコンテナは、
WMP 11 で同期させないと再生不可。転送時に WMV9 + WMA に変換処理が行われて
いる。同梱の ffmpeg.exe のバージョンを新しいものにして、Transcoding.ini に
コマンドを書き足せば行けるのかもしれない。→ ffmpeg 使うとダメですね。WM エンコーダでエンコードすれば、Mpeg4v2 + mp3 も再生可能です。[2007-08-21]追記
また、Windows Media エンコーダでも、VHS品質程度+96kbps程度以下の低ビットレート
じゃないとエクスプローラからのコピー(転送)時に「デバイスの制限を越えている」
と警告される。
の設定でエンコードした WMV(Mpeg4v2 + mp3)
WMP 11 で同期させないと再生不可。転送時に WMV9 + WMA に変換処理が行われて
いる。
また、Windows Media エンコーダでも、VHS品質程度+96kbps程度以下の低ビットレート
じゃないとエクスプローラからのコピー(転送)時に「デバイスの制限を越えている」
と警告される。
正確な情報が欲しい。
Windows Media エンコーダでプロファイルのテストエンコード中に緊急シャットダウン
しちゃうんだもん。
Windows Media エンコーダでプロファイルのテストエンコード中に緊急シャットダウン
しちゃうんだもん。
BES (Battle Encoder Shirase)
を試してみるかなあ。(
日本語説明
)
-