※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

ここは、 My Wiki のミラーです。



[2006-08-31]

「お気に入り」のその後

しばらくの間、 urlをリストにしたテキスト をエディタで開いて検索・リンクに飛んだりしてた
のだけど、やはりマウスクリックじゃなくてキーボード操作でリンクに飛びたくて。

1.urlリスト(テキストファイル)を作成
  一行にひとつのurlを記述
  サイト名とか説明とかが必要なら行を分ける
MyWiki
http://mywiki.jp/juria/juria-no/

2. esText の設定ファイル(デフォルトはesText.ini)
link.ini
;;登録プログラムの設定
[exec]
;1行目がデフォルトプログラムになる。 [Space]で選択[Enter]で実行可

;ブラウザ起動
path\Internet\Lunascape3\Luna.exe | &browser
>"%M"
path\Internet\w3m\usr\bin\w3m.exe | w&3m
>"%M"

;エディタで表示テキストを開く
;システムの関連付け(notepadをsakuraと入れ替え済み)
@system | &sakura
path\xyzzy\xyzzycli.exe | &xyzzy

;クリップボードへ(行選択[Insert]で追加書き込み)

;MyWiki原稿用
@clip | clip &Wiki
>[[:new|%M]]

;行未選択なら表示行全て
@clip | clip&1 ""で囲みスペース区切り
>"%M"

;行未選択ならファイル全体
@clipX | clip&2 選択行そのまま
>"%T"

%end

3.ランチャーなどからlink.ini と urlリスト(テキスト)を引数に esText を起動
esText.exe /#s=link.ini "path\list_sf.txt"

問題はリストの長さで、視認性が落ちるし選択するまでの道のりが遠い。
リストを複数ファイルに分割して < > で移動も可能だが、できれば @grep に
キーワードを登録、キーワードでタグを付て検索したい。そのためには、urlと
タグを一行にして、urlを抜き出してクリップボードへ、クリップボード内のurlを
引数にブラウザを起動、とかやらねばならんのね。ふ~む。

x264エンコードオプション

この↓設定、ソースにもよるだろうけど手元のMPEG2ソースでテストした結果では、
bframes(-b)を3にしてb_pyramid を指定しないのが、一番videoとaudioの時間差が
少なかったのでそうしてるだけ。画質や圧縮率にはあまり差が無い気がするし。
その他のBフレーム関連のオプションを弄っても、音ズレに影響してくるものは
見つけられなかったし。

[2006-08-01]

(AVC-H264 + AAC).mkv


約一年前、h.264 エンコードテストした時(Juria's BBS Diary 参照)に比べ、
色々進化したみたいなので、TVを録画したビデオをとりあえず容量を節約して
(AVC-H264 + AAC).mkv にして取って置くことにした。録画したMPEG-2ソースは
スポーツ中継、中程度の画質。NTSC PC MPEG-2 640*480 3600kbps 29.97fps +
MPEG-1 レイヤII 44.1kHz 16bit stereo 224kbps

AVC-H264 + AAC の Matoroska(mkv)コンテナにするなら、
(1) Video は CLIエンコーダで rawストリームh264に、
(2) Audio は WAVEに出力後 aac にエンコード、
(3) raw.h264 と aac を mp4コンテナに入れてから、
(4) mkv に REMUX する
のがいいらしい。

VFWではBフレームを正しく扱えないので、Bフレームを使うとフレームがずれる
とかなんとか。んじゃ、CLIならBフレーム使っても音ズレしないかって言うと
そうでもなくて、エンコード時やMUX時のフレームレートの指定にも色々ありそう。
ムニャムニャ。。。

とりあえず、それは置いといて、工程数をできるだけ省力化してみた。

■必要なツール
  • DGMPGDec (DGIndex.exe + DGDecode.dll):MPEG-2ファイルを読み込む
 DGDecode.dll は AviSynth2.5\plugins\ にコピー
 mpasource.dll は AviSynth2.5\plugins\ にコピー
  • avs2wav.exe :AVS(AviSynthスクリプトファイル)からAudioDelay補正済みWAVEを出力
  • waveflt2.exe :WAVE に各種フィルタをかける。ここでは neroAacEnc.exe に
 pipeするために使う。(*1)

(*1) neroAacEnc が avs2wav が出力したWAVEを読み込めなかったので。
   pipeすると、中間出力ファイルがひとつ減るし。

■準備
(1) DGIndex用AVS(AviSynthスクリプト)テンプレートファイルを作成
  DelayAudio deinterlace, clop, resize など、ソースに合わせて数種類用意
  しておき、(2)のバッチファイルも、DGIndexのコマンドラインのAVSファイルの
  指定を変えたものを用意する。

d2vTemplate_delay-026.avs
#### ソースのディレクトリ
SourceDir = "E:\TV\"
#### MPEG-2ファイルを開く
## DGIndexとDGDecode.dllを使用
## [__vid__] がソースファイル名+拡張子(.d2v)に置換される
DGDecode_mpeg2source(SourceDir + "__vid__")
## フレームレートを指定
AssumeFPS( 30000, 1001)
#ConvertToYV12()	
# x264.exe が読めるのは YV12
# DGIndex で [YUV->RGB] を PC Scale出力した d2v は YV12

#### オーディオを読み込む
[__aud__ ] がソースファイル名+ T01 DELAY xxms.mpa に置換される
AudioDub(last, MPASource("__aud__"))
## 音声遅延設定 
DelayAudio(-0.026)
#### フィールドオーダー
## トップファースト
#AssumeFrameBased().ComplementParity()	#またはAssumeTFF()
## ボトムファースト
AssumeFrameBased()	#またはAssumeBFF()

return last

(2) AVS→(AVC-H264 + AAC).mkv エンコードバッチファイルを作成

x264+aac_mkv.bat
 ソースファイル名_日付.mkv が出来上がる。
 size1:表示の都合によりコマンドラインの一部を改行しています:size
@echo off
echo.
echo ########################################################
echo %~n1.mpg のエンコード Sample
echo ########################################################
echo.
echo.#### プロジェクトファイル(d2v + mpa + avs )を出力 ####
echo.

"path\DGIndex.exe" -IA=6 -FO=0 -OM=2 -TN=1 -YR=1 -IF=[%1] -OF=[%~dpn1] 
-AT=[path\d2vTemplate_delay-026.avs] -exit -HIDE

rem -IA= iDCT Algorithm (1=MMX, 2=SSEMMX, 3=SSE2MMX, 4=64-bit Floating Point,
rem                      5=IEEE-1180 Reference, 6=Skal MMX, 7=Simple MMX)
rem -FO= Field Operation (0=Honor Pulldown Flags, 1=Force Film,
rem                       2=Ignore Pulldown Flags)
rem -OM= Output Method  (0=None  1=Demux  2=Demux all  3=Decode)
rem -TN= Track Number (カンマ区切りで列挙)
rem -YR= YUV->RGB (1=PC Scale, 2=TV Scale)
rem -IF= Input Files 
rem -OH= Output File 拡張子なし
rem -AT=[AVS template file]

echo.
echo #### Audioエンコード ###################################
echo.
echo ## avs のソースファイルから WAVE を出力
echo.

"path\avs2wav.exe" %~n1.avs

echo.
echo ## 出力した WAVE を mp4aac に (NeroDigitalAudio) (*2)
echo ## waveflt2 を通して標準出力→ m4a
rem ソースが48000Hzのときは -rsmp -dither 0 で44100Hzに
rem ビットレートの変更 -bit16
echo.

"path\waveflt2.exe" -pipeout "path\neroAacEnc.exe -cbr 96000 -lc -if -
-of "%~n1_aac.m4a"" "%~n1.avs.wav" "out.wav"

echo.
echo #### Videoエンコード ###################################
echo.
echo ## rawストリームh264 にエンコード
echo.

rem ABR 700kbps 1pass(速度優先)
"path\x264.exe" -I 300 -i 1 --scenecut 68 --bitrate 700 --bframes 3 --subme 6
--analyse p8x8,b8x8,i4x4,p4x4 --direct auto --cqmfile "path\matrix.cfg"
--progress -o "%~n1.264" "%~n1.avs"

rem ABR 700kbps 1pass(画質重視)
rem "path\x264.exe" -I 300 -i 1 --scenecut 68 -b 3 -r 3 -B 700 -A p8x8,
i4x4,p4x4,b8x8 --direct auto --cqmfile "path\matrix.cfg" --me umh -m 6
--b-rdo --no-fast-pskip --no-dct-decimate --progress -o "%~n1.264" "%~n1.avs"

rem Quality-based VBR 1pass(画質 ソースによってcrfを調整)
rem "path\x264.exe" -I 300 -i 1 --scenecut 68 --crf 25 --bframes 3
--subme 6 --analyse p8x8,b8x8,i4x4,p4x4 --direct auto --cqmfile
"path\matrix.cfg" --progress -o "%~n1.264" "%~n1.avs"

echo.
echo #### mp4 mux ###########################################
echo.
echo ## video と audio をmp4にmuxする
echo.

"path\MP4Box.exe" -fps 29.970030 -add "%~n1.264" -add "%~n1_aac.m4a" "%~n1.mp4"

echo.
echo #### mkvにremux ########################################
echo.
rem mp4は track1,aviは track0
rem タイムコード・アスペクトレート等の指定のときに注意
rem --timecodes 1:hoge_timecode.txt 
rem --display-dimensions 1:320x240 (displayサイズ指定の場合)

"path\MKVtoolnix\mkvmerge.exe" -o "%~n1_%date:~0,4%%date:~5,2%%date:~8,2%.mkv"
--aspect-ratio 1:4/3 -a 2 -d 1 -S "%~n1.mp4" --track-order 0:1,0:2

echo.
echo ########################################################
echo %~n1.mpg のエンコード終了
echo ########################################################
echo.
echo #### 一時ファイルをごみ箱へ ############################
echo.
"path\recycle.exe" -y "%~n1.d2v"
"path\recycle.exe" -y "%~n1 T01 DELAY -26ms.mpa"
"path\recycle.exe" -y "%~n1 T01 DELAY -26ms.mpa.d2a"
"path\recycle.exe" -y "%~n1.avs"
"path\recycle.exe" -y "%~n1.avs.wav"
"path\recycle.exe" -y "%~n1_aac.m4a"
"path\recycle.exe" -y "%~n1.mp4"
"path\recycle.exe" -y "%~n1.264"
rem echo #### 一時ファイルを削除 ############################
rem del /p で確認あり
rem del "%~n1.avs.wav"
rem del "%~n1_aac.m4a"
rem del "%~n1.mp4"
rem del "%~n1.264"
echo #### shutdown ##########################################
echo 中止するには shutdown -A 
goto :shutdown
echo.
:shutdown
echo.
shutdown -s -t 30 -c "30秒後にシャットダウンします"

(*2) -lc オプションを付けても(extensionAudioObjectType: 5 (0x5)(0b00101)
   HE-AAC sbr_present_flag: 0)、デコーダ、解析ソフトによっては HE-AACと
   間違って解釈する。

■実行
バッチファイルをソースファイルと同じディレクトリに置いて、
  • コマンドプロンプトから x264+aac_mkv.bat hoge.avs
  •  「あふ」から&EACHコマンドでAVSを連続エンコード
&EACH -P "path\x264+aac_mkv.bat" $MF


過去ログ



-