|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Vladimir Mosgalin 2:5030/1041.17 24 Jul 2003 18:30:12 To : Eugene Vlasov Subject : Re: Консольная программа определения свойств AVI и MPG -------------------------------------------------------------------------------- On Tue, 22 Jul 2003 21:45:10 +0400, Eugene Vlasov <si1verf0x@tyumen.ru> wrote about 'Консольная программа определения свойств AVI и MPG': EV> Ищется программа, выдающая продолжительность видео-файла в минутах EV> и секундах, размер кадра, видео и аудио-кодеки. Hашел программу EV> tcscan из пакета transcode, но она не устраивает по нескольким EV> критериям: EV> 1. Выдает _слишком_ много информации. grep уже отменили? EV> 2. Та информация что выдается не совсем удобна, например для EV> определения продолжительности, необходимо поделить два числа. awk или expr тоже? EV> 3. Так и не понял, как с ее помощью определить продолжительность EV> MPEG-файла. С этим вообще тяжко. Я тебе покажу, чем я пользуюсь, но оно не корректно определяет размер mpeg2 файлов. Требуются mplayer и plaympeg. Могу дать вариант для старых mplayer'ов. Тут заточка под русский mplayer, но это думаю сам уберешь, если нужно ;) #!/bin/sh # use parsed mplayer output to get info about avi/mpg/etc, version 0.5 # suited for mplayer-cvs (post-0.90) # (c) Vladimir Mosgalin. mplayer -ao null -vo null -frames 0 -nocache -identify "$1" -noautosub -vfm , -afm , 2>/dev/null | awk -v vidname="$1" -F = ' /^Обнаружен/ { flag = 1; split($0, ftype, " "); info["ftype"] = ftype[2] next; } /ID_FILENAME=/ { info["filename"] = $2; next} /ID_VIDEO_FORMAT=/ { info["vformat"] = $2; next} /ID_VIDEO_BITRATE=/ { info["vbitrate"] = $2; next} /ID_VIDEO_WIDTH=/ { info["vwidth"] = $2; next} /ID_VIDEO_HEIGHT=/ { info["vheight"] = $2; next} /ID_VIDEO_FPS=/ { info["vfps"] = $2; next} /ID_VIDEO_ASPECT=/ { info["vaspect"] = $2; next} /ID_AUDIO_CODEC=/ { info["acodec"] = $2; next} /ID_AUDIO_FORMAT=/ { info["aformat"] = $2; next} /ID_AUDIO_BITRATE=/ { info["abitrate"] = $2; next} /ID_AUDIO_RATE=/ { info["arate"] = $2; next} /ID_AUDIO_NCH=/ { info["anch"] = $2; next} /ID_LENGTH=/ { info["length"] = $2; next} /^=.*ASF.*START/ { while ($0 !~ /^=.*ASF.*END/) getline; next} /Информация / { getline; while ($0 !~ /====/) { print $0; getline}; next} /^VIDEO:|^AUDIO:|^Selected/ { print $0 } { next } { if (flag) print $0 } END { print "Filename: " info["filename"] print "File type: " info["ftype"] print "Video format: " info["vformat"] print "Video bitrate: " info["vbitrate"]/1000 " kbps" print "Video resolution: " info["vwidth"] "x" info["vheight"] print "Video fps: " info["vfps"] " fps" if (info["ftype"] == "AVI") # get number of frames using aviinfo { avinforun = "aviinfo \"" info["filename"] "\"" avinforun | getline avinforesult close(avinforun) split(avinforesult, frames, " ") info["frames"] = frames[2] print "Video frames: " info["frames"] } print "Video aspect: " info["vaspect"] print "Audio codec: " info["acodec"] print "Audio format: " info["aformat"] print "Audio bitrate: " info["abitrate"]/1000 " kbps" print "Audio rate: " info["arate"] "Hz" if (info["anch"] == 1) info["achdesc"] = " (mono)" else if (info["anch"] == 2) info["achdesc"] = " (stereo)" print "Audio channels: " info["anch"] " ch" info["achdesc"] if (info["vformat"] == "0x10000001") # mpeg1 { # currently mplayer calculates incorrect total time for mpeg1/2 files # for mpeg1, plaympeg shows correct time, but it hangs for mpeg2 :( plaympegrun = "plaympeg --novideo --nosound \"" info["filename"] "\" | grep time" #for (a = 0; a < 4; a++) plaympegrun | getline plaympegresult close(plaympegrun) split(plaympegresult, size, " ") info["length"] = int(size[3]) } print "Stream length: " info["length"] " s (" int(info["length"] / 3600) \ ":" int(info["length"] / 60) - int(info["length"] / 3600) * 60 ":" \ info["length"] - int(info["length"] / 60) * 60 ")" print "" } ' # vim: ft=awk -- Vladimir --- slrn/0.9.7.4-asp (Linux) * Origin: Me organized (2:5030/1041.17) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/452800000a8c.html, оценка из 5, голосов 10
|