2017-07-28 2 views
3

これはmediainfoを使用してビデオのプロパティを抽出し、トラックの長さをチェックして、長いディレクトリまたは短いディレクトリのいずれかに応じてビデオを並べ替えます。長さ、必要性、可能性がある場合はビデオを並べ替え

mediainfo.exe %1 >%temp%\vdata 
type %temp%\vdata | find ": 9 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 8 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 7 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 6 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 5 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 4 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 3 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 2 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 1 h" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 59 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 58 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 57 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 56 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 55 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 54 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 53 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 52 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 51 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 50 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 49 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 48 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 47 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 46 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 45 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 44 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 43 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 42 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 41 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 40 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 39 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 38 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 37 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 36 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 35 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 34 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 33 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 32 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 31 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 30 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 29 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 28 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 27 min" >nul && move %1 long && goto next 
type %temp%\vdata | find ": 26 min" >nul && move %1 long && goto next 
:: sort long making of videos, leave short ones for manual checkup 
echo "%~n1" | find /i "making of " >nul && goto next 
type %temp%\vdata | find ": 25 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 24 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 23 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 22 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 21 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 20 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 19 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 18 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 17 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 16 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 15 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 14 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 13 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 12 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 11 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 10 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 9 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 8 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 7 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 6 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 5 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 4 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 3 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 2 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 1 min" >nul && move %1 short && goto next 
type %temp%\vdata | find ": 59 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 58 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 57 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 56 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 55 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 54 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 53 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 52 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 51 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 50 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 49 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 48 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 47 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 46 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 45 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 44 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 43 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 42 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 41 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 40 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 39 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 38 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 37 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 36 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 35 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 34 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 33 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 32 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 31 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 30 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 29 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 28 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 27 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 26 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 25 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 24 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 23 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 22 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 21 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 20 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 19 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 18 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 17 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 16 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 15 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 14 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 13 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 12 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 11 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 10 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 9 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 8 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 7 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 6 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 5 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 4 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 3 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 2 s " >nul && move %1 short && goto next 
type %temp%\vdata | find ": 1 s " >nul && move %1 short && goto next 
:next 

非常に非効率的です。これは数行に減らすことができますか?また、このトラックの長さのチェックは非常に信頼できるものではない場合があります。これは、ビデオに間違ったトラックが組み込まれていることが多いためです(通常は字幕)。

これはmediainfoがデータをvdataファイルに出力する方法です。ビデオトラック継続時間は、常に文字列を使用して数学的等価物で「H」、「分」、および「s」を置き換えることによって整数にh min s規則を変換することが可能であろうライン7

General 
Unique ID        : 46047801939398570510895581797401581513 (0x22A47BEB8AA8348EF96251DF04E557C9) 
Complete name       : Tomorrowland 2017 GoPro.mp4 
Format         : Matroska 
Format version       : Version 4/Version 2 
File size        : 3.86 GiB 
Duration         : 1 h 0 min 
Overall bit rate       : 9 074 kb/s 
Writing application      : Lavf57.41.100 
Writing library       : Lavf57.41.100/Lavf57.41.100 

Video 
ID          : 1 
Format         : HEVC 
Format/Info        : High Efficiency Video Coding 
Format profile       : [email protected]@Main 
Codec ID         : V_MPEGH/ISO/HEVC 
Duration         : 1 h 0 min 
Width         : 1 920 pixels 
Height         : 1 080 pixels 
Display aspect ratio      : 16:9 
Frame rate mode       : Constant 
Frame rate        : 25.000 FPS 
Color space        : YUV 
Chroma subsampling      : 4:2:0 
Bit depth        : 8 bits 
Writing library       : x265 1.9:[Windows][GCC 5.2.0][64 bit] 8bit 
Encoding settings      : wpp/ctu=64/min-cu-size=8/max-tu-size=32/tu-intra-depth=1/tu-inter-depth=1/me=1/subme=1/merange=57/no-rect/no-amp/max-merge=2/temporal-mvp/early-skip/rdpenalty=0/no-tskip/no-tskip-fast/strong-intra-smoothing/no-lossless/no-cu-lossless/no-constrained-intra/fast-intra/open-gop/no-temporal-layers/interlace=0/keyint=250/min-keyint=25/scenecut=40/rc-lookahead=15/lookahead-slices=6/bframes=4/bframe-bias=0/b-adapt=0/ref=2/limit-refs=3/no-limit-modes/weightp/no-weightb/aq-mode=1/qg-size=32/aq-strength=1.00/cbqpoffs=0/crqpoffs=0/rd=2/psy-rd=2.00/rdoq-level=0/psy-rdoq=0.00/signhide/deblock/sao/no-sao-non-deblock/b-pyramid/cutree/no-intra-refresh/rc=crf/crf=21.0/qcomp=0.60/qpmin=0/qpmax=51/qpstep=4/ipratio=1.40/pbratio=1.30 
Language         : English 
Default         : Yes 
Forced         : No 
DURATION         : 01:00:58.103000000 

Audio 
ID          : 2 
Format         : AAC 
Format/Info        : Advanced Audio Codec 
Format profile       : LC 
Codec ID         : A_AAC 
Duration         : 1 h 0 min 
Channel(s)        : 2 channels 
Channel positions      : Front: L R 
Sampling rate       : 44.1 kHz 
Frame rate        : 43.066 FPS (1024 spf) 
Compression mode       : Lossy 
Delay relative to video     : -743 ms 
Writing library       : Lavc57.48.101 aac 
Default         : Yes 
Forced         : No 
DURATION         : 01:00:58.028000000 

答えて

2

であるべきですその後、set /aを使用して、数え上げを秒単位で計算します。その秒の整数を取得したら、分で60を割ります。

また、mediainfoの出力をテキストファイルにダンプする必要はありません。ちょうどfor /fでそれをキャプチャしてください。

@echo off & setlocal 

set "video=%~f1" 

rem // Change "args" to whatever arguments mediainfo requires. I don't know its syntax. 
for /f "tokens=2*" %%I in (
    'mediainfo args "%video%" ^| findstr /irc:"Duration.*[0-9] [hms]"' 
) do if not defined duration set "duration=%%J" 

set "duration=%duration: h=*3600%" 
set "duration=%duration: min=*60%" 
set "duration=%duration: s=%" 
set /a "minutes=%duration: =+%/60" 

if %minutes% leq 25 (
    move "%video%" short\ 
) else (
    move "%video%" long\ 
) 

...または類似。


ビデオファイルの再生時間を削るためのツールがあります。

ffprobe -v quiet -show_entries "format=duration" -of csv "filename.mkv" 

出力はこのようになります:あなたは、次のコマンドを使用してseconds.microsecondsにビデオのグローバル時間を取得できるようになるffprobe(FFmpegのパッケージの一部)

形式、5028.080000

上記のmediainfoの例のように、for /fループを使用して、ffprobeの出力をキャプチャします。

@echo off & setlocal 

set "video=%~f1" 

for /f "tokens=2 delims=,." %%I in (
    'ffprobe -v quiet -show_entries "format=duration" -of csv "%video%"` 
) do set /a "minutes = %%~I/60" 

if %minutes% leq 25 (
    move "%video%" short\ 
) else (
    move "%video%" long\ 
) 
+0

叙事詩のシンプルさ! ffprobeのバージョンに移行します...ありがとう! – bricktop

+0

最近ffprobeから 'アクセスが拒否されました.'というエラーが表示されます。世界で何が起こる可能性がありますか? – bricktop

+1

@bricktop簡単な再起動を試してください。それでも問題が解決しない場合は、chkdskを実行してください。私の推測では、共有違反を引き起こすプロセスがハングアップしているか、ファイルシステムの破損が考えられます。 – rojo

関連する問題