@echo off REM ========================================== REM 初期設定 REM ========================================== REM ===FFMPEG 実行ファイル指定 set FFMPEG_LATEST=ffmpeg.exe set PATH=%~dp0\cores;%PATH% set QTFILE="%~dp0\cores\QT_3GPP(MobileMP4)_WQVGA_AAC.ini" cd /d "%~dp0" REM ========================================== REM ========================================== echo INPUT: %~1 echo ------------------------------- echo iPod nano 3G 用  echo 変換バッチファイル (2008/06/15) echo ------------------------------- if ""=="%INIFORMAT0%" ( set INIFORMAT=1 ) else ( set INIFORMAT=%INIFORMAT0% ) echo 入力ファイルのフォーマット: %INIFORMAT% REM ========================================== echo ------------------------------- echo 入力動画のアスペクト比の指定 echo (上手くいかないとき2,3を指定) echo (1) 4:3動画用 (強制的に4:3に) [default] echo (2) 16:9動画用 (黒帯追加で16:9動画を4:3に変更) echo ------------------------------- set /p INIASPECT0=入力ファイルのアスペクト比(1, 2 or 3): if ""=="%INIASPECT0%" ( set INIASPECT=1 ) else ( set INIASPECT=%INIASPECT0% ) echo 入力ファイルのアスペクト比: %INIASPECT% REM ========================================== echo ------------------------------- echo iPod nano 動画品質設定 echo (1) 標準画質用  (ビデオbps 768k、フレームレート 30fps) echo (2) 長編用   (ビデオbps 384k、フレームレート 30fps) [default] echo (3) アニメMAD用 (ビデオbps 768k、フレームレート 24fps) echo (4) 長編アニメ用 (ビデオbps 384k、フレームレート 24fps) echo (5) 見れれば良い用 (ビデオbps 128k、フレームレート 15fps) echo (6) 高画質用 (ビデオbps 1024k、フレームレート 30fps) echo (7) 超高画質用 (ビデオbps 2048k、フレームレート 30fps) echo ------------------------------- set /p VIDEOQT0=動画品質設定(1, 2, 3, 4, 5 or 6): if ""=="%VIDEOQT0%" ( set VIDEOQT=2 ) else ( set VIDEOQT=%VIDEOQT0% ) echo 動画品質設定: %VIDEOQT% REM ========================================== echo ------------------------------- echo iPod nano AAC音質設定(元ファイルの音質より良くなる事はない) echo (1) iTune標準 (bps 128k、サンプルレート 48000Hz, ステレオ) [default] echo (2) 高音質  (bps 192k、サンプルレート 48000Hz, ステレオ) echo (3) 一般  (bps 96k、サンプルレート 44100Hz, ステレオ) echo (4) 無劣化コピー(入力ファイルがmp4(H.264)の時のみ利用可。-acodec copy) echo (5) 会議録   (bps 32k、サンプルレート 11050Hz, モノラル) echo (6) TV,英会話用 (bps 48k、サンプルレート 32000Hz, モノラル) echo ------------------------------- set /p AUDIOQT0=動画品質設定(1, 2, 3, 4, or 5): if ""=="%AUDIOQT0%" ( set AUDIOQT=1 ) else ( set AUDIOQT=%AUDIOQT0% ) echo 音質設定: %AUDIOQT% REM ========================================== echo ------------------------------- echo パス数指定 [default : 1] echo ------------------------------- set /p PASSNUM0=パス数指定(1 or 2): if ""=="%PASSNUM0%" ( set PASSNUM=1 ) else ( set PASSNUM=%PASSNUM0% ) echo パス数指定: %PASSNUM% REM ========================================= echo ------------------------------- echo ffmpegの-tオプションの秒数 echo デバッグ用です。10 とか短い秒数にしてちゃんと動作するかの確認用 echo ------------------------------- set /p TSEC=秒数指定(未入力でEnterでもOK): if ""=="%TSEC%" ( set TSECS=0 ) else ( set TSECS=%TSEC% ) REM =============================================================== REM ######## FFMPEG 引数設定 ############# REM ============================================================== set FORMAT= set EXTOPT=%FORMAT% -t %TSECS% REM ========================================== REM OTHER OPT set OPT0=-y set OPT1= set OPT2= set OPT=%OPT0% %OPT1% %OPT2% REM ========================================== REM pass の指定、パスログファイルの指定 set PASSLOG="%~1.log" set PASSLOGDEL="%~1.log-0.log" set PASS1=-pass 1 -passlogfile %PASSLOG% set PASS2=-pass 2 -passlogfile %PASSLOG% REM ========================================== REM INPUT, OUTPUT ファイルを指定 set OUTPUT="%~1.mp4" set OUTPUT1="%~1.p1.mp4" set OUTPUT2="%~1.p2.mp4" set OUTPUTQ="%~1.ipod.mp4" set INPUT="%~1" REM ========================================== REM ビデオフォーマット設定 REM 最初に指定した番号から、解像度とcrop、padを指定 REM ========================================== REM ===4x3 (1) if %INIASPECT% == 1 ( set VS=-s 320x240 set VOPT2=-aspect 4:3 ) REM ===16x9 kuroobi-ari (2) if %INIASPECT% == 2 ( set VS=-s 320x180 set VOPT2=-padtop 30 -padbottom 30 -aspect 4:3 ) REM ===16x9 (3) (16:9動画は-aspectで16:9に指定してるので、結局427x240になる) REM ==== iPodで表示すると左右が切られる。(QTplayerでみると問題ない)  if %INIASPECT% == 3 ( set VS=-s 320x240 set VOPT2=-aspect 16:9 ) REM === TEST if %INIASPECT% == 9 ( set VS=-s 320x180 set VOPT2= ) REM === TEST if %INIASPECT% == 10 ( set VS=-s 320x128 set VOPT2=-padtop 56 -padbottom 56 -aspect 4:3 ) REM ========================================== REM ビデオオプション REM ==========================================   REM (高画質化したいならVBのビットレートを上げること。)   REM (フレームレートで60fpsは表示できるけど, 良く止まるので却下)   REM ========================================== set VCODEC=-vcodec libx264 set VOPT1=-g 300 -keyint_min 30 -sc_threshold 40 -cmp +chroma -level 13 REM set VOPT4=-rc_eq "blurCplx^(1-qComp)" -threads auto set VOPT4=-threads auto set VOPT5=-flags +bitexact+loop set VOPT6=-flags2 +mixed_refs set VOPT7=-partitions +parti4x4+partp8x8+partb8x8 set VOPT8=-me umh -trellis 1 -refs 5 -coder 0 -me_range 16 -bufsize 4M set VOPT9=-subq 5 -i_qfactor 0.71 -qcomp 0.6 -qdiff 4 REM ========================================== if %VIDEOQT% == 1 ( set VB=-b 768k set VR=-r 30000/1001 set VOPT3=-qmin 6 -qmax 31 ) if %VIDEOQT% == 2 ( set VB=-b 384k set VR=-r 30000/1001 set VOPT3=-qmin 6 -qmax 31 ) if %VIDEOQT% == 3 ( set VB=-b 768k set VR=-r 24000/1001 set VOPT3=-qmin 6 -qmax 31 ) if %VIDEOQT% == 4 ( set VB=-b 384k set VR=-r 24000/1001 set VOPT3=-qmin 6 -qmax 31 ) if %VIDEOQT% == 5 ( set VB=-b 128k set VR=-r 15000/1001 set VOPT3=-qmin 10 -qmax 51 ) if %VIDEOQT% == 6 ( set VB=-b 1024k set VR=-r 30000/1001 set VOPT3=-qmin 2 -qmax 31 ) if %VIDEOQT% == 7 ( set VB=-b 2048k set VR=-r 30000/1001 set VOPT3=-qmin 1 -qmax 4 ) REM === テスト用 === if %VIDEOQT% == 9 ( set VB=-b 128 set VR=-r 15000/1001 set VOPT3=-qmin 10 -qmax 51 set VOPT1=-g 300 -keyint_min 30 -level 13 set VOPT4=-threads auto set VOPT5=-flags +bitexact+loop set VOPT6= set VOPT7= set VOPT8= set VOPT9= ) if %VIDEOQT% == 10 ( set VB=-b 768 set VR=-r 30000/1001 set VOPT3=-qmin 35 -qmax 35 set VOPT1=-g 300 -keyint_min 30 -level 13 set VOPT4=-threads auto set VOPT5= set VOPT6= set VOPT7=-partitions +parti4x4+partp8x8+partb8x8 set VOPT8= set VOPT9= ) REM ========================================== REM set VOPT1=-flags +fixaspect+bitexact set VOPT=%VCODEC% %VB% %VS% %VR% %VOPT1% %VOPT2% %VOPT3% %VOPT4% %VOPT5% %VOPT6% %VOPT7% %VOPT8% %VOPT9% REM ========================================== REM 音声コーデック設定 REM ========================================== set ACODEC=-acodec libfaac set AOPT1= REM ==== default if %AUDIOQT% == 1 ( set AB=-ab 128k set AR=-ar 48000 set AC=-ac 2 ) if %AUDIOQT% == 2 ( set AB=-ab 192k set AR=-ar 48000 set AC=-ac 2 ) if %AUDIOQT% == 3 ( set AB=-ab 96k set AR=-ar 44100 set AC=-ac 2 ) REM ==== 無劣化 if %AUDIOQT% == 4 ( set ACODEC=-acodec copy set AB= set AR= set AC= ) REM ==== モノラル 32k if %AUDIOQT% == 5 ( set AB=-ab 32k set AR=-ar 11050 set AC=-ac 1 ) REM ==== モノラル 48k if %AUDIOQT% == 6 ( set AB=-ab 48k set AR=-ar 32000 set AC=-ac 1 ) set AOPT=%ACODEC% %AB% %AR% %AC% %AOPT1% REM ========================================== REM FFMPEGで変換処理 REM ========================================== echo #### %FFMPEG_LATEST% %OPT% -i %INPUT% %VOPT% %AOPT% %EXTOPT% %OUTPUTQ% #### if %PASSNUM% == 2 ( REM ==== for 2pass %FFMPEG_LATEST% %OPT% -i %INPUT% %VOPT% %AOPT% %EXTOPT% %PASS1% %OUTPUT1% %FFMPEG_LATEST% %OPT% -i %INPUT% %VOPT% %AOPT% %EXTOPT% %PASS2% %OUTPUTQ% ) if %PASSNUM% == 1 ( REM ==== 1pass only %FFMPEG_LATEST% %OPT% -i %INPUT% %VOPT% %AOPT% %EXTOPT% %OUTPUTQ% ) REM ========================================== REM 終了処理、テンポラリファイルの削除 REM ========================================== del %OUTPUT1% del %OUTPUT2% del %PASSLOGDEL% del x264_2pass.log echo Enterキーで終了します。 REM pause>nul exit ------------------------------------------------------------------------------- *メモ  このバッチファイルは携帯動画変換君のFFMPEGやQTComverterを利用しています。といってもいいけど、ipod用は携帯動画変換君のファイルは使ってません。  免責事項としてこのバッチファイルを用いたことによって携帯電話の破損、パソコンの破損、データの破損などを含む、利用者または第三者が被ったいかなる損害についても当方は責任を負わないものとします。自己責任での利用をお願いします。 【入力ファイル指定】  ニコニコムービーメーカで作ったのは圧縮SWFらしい。ただのSWFなら付属のFFMPEGでも対応可能だけど圧縮SWFは入力未対応。swftoolとか使えばよいけど・・・ 【アスペクト指定】   【動画画質指定】  最初は画質固定だったけど、とりあえず何パターンか選択できるようにつくってしまった。個人的にはiPod nano 3Gには384k-30fpsで十分画質なです。 【パス数指定】  最初は1パスしか考慮してなかったけど、2passもとりあえず入れてみた。 【-t 秒数指定】  はっきり言ってデバッグ用。 【余談】  Linuxで業務上短いシェルスクリプトとかjavascriptとかは書いたことあるけど。まともなプログラムは作ったことない。だから排他処理や例外処理やエラー処理も中途半端。  最初はあまり会話的処理を多くしたくなかったけど結局かなりの数になってしまった。  あくまで動画共有サイト動画の変換を目指しているので、avisynth利用でWMVの変換とかはこのスクリプトで今のところ考慮してない。