FastStart aken:
****************************************************************** * MP4BOX utiliidi kaivitamine. (C) 2013 A.Aaslo * * See lukkab MP4-video MOOV atomi faili algusse, mis teeb video * * sobivaks veebi jaoks: kohene start brauseri flashplayeris, * * niipea kui faili algusosa on veebist loetud. * ****************************************************************** Soovid jatkata [Y,N]?_
Paigaldamiseks lae alla 'MP4_FastStart_shell-ext.zip' (lehekülje allosas), paki lahti ja käivita INSTALL.vbs
Automaatselt tehakse ära:
1) Kopeeritakse fstart.cmd ja mp4box.exe %APPDATA%\FastStart alamkataloogi.
Selleks APPDATA kataloogiks on tavaliselt
C:\Documents and Settings\kasutajanimi\Application Data (Win-XP)
või
C:\Users\kasutajanimi\AppData\Roaming (Vista, Win-7).
Skript leiab selle automaatselt, mis kettal ja mis nimega ta konkreetselt mingil
kompuutril ja mingil kasutajal on.
2) Järgmine samm - loetakse Windowsi registrist .MP4 videofaili assotsiatsiooni, määratluse-string
ja registri teises kohas just selle stringi juurde kirjutatakse Windowsi 'shell'i lisavõti
"FastStart" mille käsureaks on fstart.cmd käivitus.
Selle .vbs (Visual Basic Script) installija juures tuleb mõned korrad OK nuppu vajutada.
Windowsi keskkonda ehk SHELL'i tekib uus valik - kui MP4-faili peal klõpsida.
Vaikimisi valik menüüs on endiselt Open, (või Play)
lisandub FastStart konvertimise võimalus.
Lisa-utiliit:
findmoov.cmd on lihtne skript, mis otsib MP4-failide seest
MOOV blokki ja näitab ära, kas see on faili alguses, [7][8][9][10] väikesed 10 piires numbrid (ka [10][12])
või siis faili lõpus,
[3678] [45776] [3466576] - tunduvalt suurem number
Kui suur on see konkreetne number, see sõltub videofaili pikkusest.
findmoov.cmd kopeeri kuskile MP4 failidega videokataloogi ja klõpsi seal käima.
Läheb minut-paar aega, kuni ta läbi kammib neid, näitab aknas ära, mis seis on.
***
Peale installimist
1) Seda fstart.cmd käivitust tehakse iga kord, kui kasutaja
valib mõne .MP4-faili parema hiireklahvi menüüst: "FastStart"
2) fstart.cmd käivitab omakorda MP4box-i
mp4box.exe -inter 0.5 -v minuvideo.mp4 -out mp4box-tempfile.mp4
(See "minuvideo.mp4" on käsurea argumendiks, seda hakkabki mp4box konvertima)
fstart.cmd skript on tehtud nii, et mp4box.exe kirjutab uue video-faili
ja jätab originaali tagavaraks, kui miskit untsu läheb, siis saab sealt taastada.
Vastasel korral võib juhtuda, et kui väliselt .MP4 laiendiga video
EI OLE sisemiselt tegelikult MP4, vaid miski muu videotüüp, siis videofail hävineb.
MP4box töötab õigesti ainult päris MP4 video peal.
.FLV videot EI OLE VAJA selliselt konvertida, see on algusest peale juba selline
konteineri-formaat, et mõeldud just netis striimimiseks. Tema andmete blokk asub
alati faili alguses. 'FastStart' menüüvalik ilmub AINULT .MP4 faili peal,
kuid mitte kusagil teise failitüübi juures.
On tehtud ka UnInstalli võimalus. uninstall-fstart.vbs on VisualBasic skript,
mis eemaldab FastStart võtmed ja kirjed Registrist. Pisikesed failid mp4box.exe ja
fstart.cmd võib soovi korral hiljem käsitsi kustutada.
Märkus: installatsioon töötab Win-XP, Vista ja Win-7 puhul, [testitud Win-7 peal],
Win-8 puhul andis VB WindowsScriptHost veateate, registrivõtmete juures. Asja uuritakse...
(Asi võib olla ka kasutaja admini-õigustes registrisse kirjutada, kui installi skript käivitada)
Igatahes fstart.cmd + mp4box.exe koos töötavad igal juhul, kui konverditava faili nimi
käsitsi käsurealt anda - juhul kui seda ShellExtensioni paika panna ei saa.
Siin paremal on näha pildid, mis võetud LISTER-viewer aknast, moov bloki algus leiti faili lõpust (tavaline, veebis striimimiseks mitte-optimiseeritud) ja teine kus moov blokk on päris faili alguses, ca 20...30-s bait lugedes faili esimesest baidist.
Kui nüüd selline MP4 fail on veebiserveris ja internetibrauseri flashplayer hakkab seda tõmbama, siis enne ei saa videot näitama hakata, kui KOGU fail on kohale jõudnud, et lõpus olevast MOOV blokist lugeda faili andmed, MIDA ja KUIDAS näitama hakata. (Kõvakettal olevast failist loetakse ka lõpus olevad andmed hetkeliselt, sekundi murdosaga. Internetis aga faililõpp alles tulemas, pika filmi puhul vb mitukümmend minutit)
Kui aga nihutada MOOV blokk faili algusse, siis flashplayer saab juba tõmbamise alguses video andmed kätte ja saab KOHE näitama hakata, ülejäänud fail venib kohale vaatamise käigus. (soovitav on, et internetiühenduse kiirus oleks kiirem kui videofaili video/audio striimide kogukiirus.)
Suurtes videosaitides, nagu YOUTUBE, VIMEO, ka Facebook - ongi failid konverditud selliseks, peale seda, kui kasutaja on mingi video üles laadinud. Kui sealt alla laadida mõni selline video Youtubest või mujalt, siis üle vaadates selgub, et neil ongi MOOV faili alguses !!!
What is ShellExtension?
Windows shell: Environment, where user interacts with operating system.
Shell Extension - just basically the additional software to integrate into Windows,
like into the right-click context menu, etc.
A.Aaslo - dets.2013
Märkus: Avastatud viga, kus fstart.bat ei suutnud õigesti käsitleda tühikuid sisaldavaid (video)failinimesid. Samuti lisatud käsurea õigsuse kontroll, kas fail mida konvertima tahetakse hakata - üldse eksisteerib?
HKEY_CLASSES_ROOT
|
|_____.MP4...........................(Default) VLC.MP4
|___OpenWithProgIds
|___ShellEx
Siit LOETAKSE, mis selle .MP4 laiendiga faili string parasjagu on: praegu on VLC.MP4 aga seal võib olla suvaline, MP4_file, MP4VIDEO jne.jne.
Kui see loetud, siis otsitakse kus on sama string registris ja selle juures olevad võtmed, mis määravad, milline on selle faili IKOON ja millised on standard-tegevused, mida selle failiga ette võetakse, kui tema peal hiirega klõpsitakse. Play, Open, Edit, Convert, ... jne. Üks neist on vaikimisi (kaksikklõpsu või ENTER puhul) teised aga saadaval hiire paremklahvi kontekst-menüüst. Enamikel failidel ongi ainult üks valik - OPEN.
kusagil allpool ongi sama võti
HKEY_CLASSES_ROOT
|
|____VLC.MP4.......................(Default) Video MP4
|
|___DefaultIcon..............(Default) mplayerc.exe,1
|
|___shell.................(Default) Open
|__Open
| |_command.......(Default) mplayerc.exe "%1"
|
|__FastStart
|_command.......(Default) fstart.cmd "%1"
"Open" valik ja vastav käsk on olemas, avada MediaPlayerClassic 'uga Nüüd lisati juurde veel "FastStart" valik ja käsk: avada fstart.cmd skriptiga mis konverdib selle faili ringi MP4box utiliidiga.
"%1" on käsurea argument, antud juhul siis selle faili nimi, mille peal klõpsiti.
See antakse edasi fstart.cmd 'le, selle sees aga antakse omakorda edasi
mp4box.exe 'le
Selline keemia siis Windowsi Registris
VABAVARA
MP4box utiliit, originaalsait.
MP4box download - Videohelp.com
' **************************************************************************** ' Skript .MP4 videofaili kontekstmenüüsse FastStart konvertimiskäsu lisamiseks ' A.Aaslo - 20.dets.2013 ' mp4box.exe ja fstart.cmd kopeeritakse %APPDATA% kataloogi ' ' **************************************************************************** Dim filesys Dim objShell Public ins_path Const USERPROFILE = &H28& Const PROGRAM_FILES = &H26& Const APPDATA = &H1a& answer = MsgBox ("VBScript " &Chr(169)& " 2013 A.Aaslo" & vbLf & vbLf _ & "Kas alustada installi?", vbYesNo+vbQuestion, " FastStart ShellExtension install") if answer = vbNo then WScript.Quit End if ' Eelmiste versioonide installi folderid ' -------------------------------------- 'Set objShell = CreateObject("Shell.Application") 'Set objFolder = objShell.Namespace(USERPROFILE) 'Set objFolderItem = objFolder.Self 'Wscript.Echo "Kasutaja nimi ja kasutajaprofiil" &vbLf _ ' & objFolderItem.Name & " | " & objFolderItem.Path 'ins_path = objFolderItem.Path & "\" ' ------------------------------------------------------ 'Set objShell = CreateObject("Shell.Application") 'Set objFolder = objShell.Namespace(PROGRAM_FILES) 'Set objFolderItem = objFolder.Self 'Wscript.Echo "Folderi nimi ja PATH" &vbLf _ ' & objFolderItem.Name & " | " & objFolderItem.Path 'ins_path = objFolderItem.Path & "\" ' ------------------------------------------------------ ' ****************************************************************** ' Application Data - asukoha lugemine (praegune versioon 20.12.2013) ' ****************************************************************** Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace(APPDATA) Set objFolderItem = objFolder.Self 'Wscript.Echo objFolderItem.Name & ": " & objFolderItem.Path ins_path = objFolderItem.Path & "\" ' ******************************************************** ' Uue kataloogi tegemine ja kopeerimine ' ******************************************************** set filesys = CreateObject("Scripting.FileSystemObject") ' Wscript.echo "objFolderItem.Path: " & objFolderItem.Path ' Kui ei ole kataloogi, siis teha if filesys.FolderExists(ins_path & "FastStart") = false Then filesys.CreateFolder (ins_path & "FastStart") End if ' Wscript.echo "Kopeerin failid kataloogi: " & ins_path & "FastStart" If filesys.FileExists("fstart.cmd") Then filesys.CopyFile "fstart.cmd", ins_path & "FastStart\" Else MsgBox "Couldn't find 'fstart.cmd'", vbCritical, " Error" End If If filesys.FileExists("mp4box.exe") Then filesys.CopyFile "mp4box.exe", ins_path & "FastStart\" Else MsgBox "Couldn't find 'mp4box.exe'", vbCritical, " Error" End If MsgBox "Failid 'fstart.cmd' ja 'mp4box.exe' kopeeritud" & vbLf _ & ins_path & "FastStart" & vbLf & "kataloogi", vbInformation, " Failide kopeerimine:" set objShell = Nothing ' ************************ ' Registrikirjete tegemine ' ************************ Dim strMP4Type strMP4Type = "HKEY_CLASSES_ROOT\.mp4\" Set objShell = WScript.CreateObject("WScript.Shell") Set WshShell = CreateObject("WScript.Shell") myKey = "HKEY_CLASSES_ROOT\" & objShell.RegRead(strMP4Type) & "\shell\FastStart\command\" WScript.Echo ".MP4 videofaili registreeritud nimi on praegu: " & objShell.RegRead(strMP4Type) & vbLf & vbLf _ & "Kirjutan lisaks uue registri-võtme: " & vbLf _ & "————————————————" & vbLf _ & myKey & vbLf & "(Default) = " & ins_path & "FastStart\fstart.cmd ""%1""" WshShell.RegWrite myKey, ins_path & "FastStart\fstart.cmd ""%1""","REG_SZ" dummy = MsgBox (".MP4 videofaili puhul on nüüd parema hiireklahvi kontekst-" & vbLf _ & "menüüs valik ·FastStart·, mis käivitab MP4Box utiliidi video netikõlbulikuks konvertimiseks." & vbLf & vbLf _ & "'mp4box.exe' ja 'fstart.cmd' asuvad " & ins_path & "FastStart kataloogis" & vbLf & vbLf _ & ":::::::::::::::::::::: " & Chr(169) & " Aivar Aaslo 2013 ::::::::::::::::::::::" , _ vbInformation+vbOKOnly, " FastStart paigaldatud !") Set WshShell = Nothing Set objShell = Nothing WScript.Quit