|
SWiSH Forum Forum użytkowników programów SWiSH |
|
SWiSH Max - Ładowanie zewnętrznego pliku FLV
tjindy - Sob 04 Lut, 2012 09:33 Temat postu: Ładowanie zewnętrznego pliku FLV Witam serdecznie,
jak zwykle poległem przy - wydawać by się mogło - prostym temacie.
W skrócie: wymóżdżyłem sobie na stronie animację przedstawiającą ćwiczące postacie. Film zapisałem w FLV - waga 10 MB. Zrobiłem sobie kontenerek (klip.swf) dla filmu który go czyta. Następnie w swej naiwności próbowałem za pomocą drugie swf`a (loadera) czytać klipa - i wsio fajnie tylko że loader nie działa tak jak sądziłem.
Po prostu zlicza wielkość samego klip.swf (22 kB) - a już nie "przypisanego" w nim zewnętrznego pliku FLV.
Być może nawet to logiczne.
Wracając jednak do tematu - czy ktoś mógłby poratować mnie wiedzą na ten temat jak sobie poradzić w takiej sytuacji? Starałem się przekopać fora swishmaxa - jednakże jakoś nie potrafię sklecić niczego sensownego. Podejrzewam jednak że może mieć to związek z poleceniami sterującymi strumieniowaniem
W wersji bez loadera - przy posiadaniu w miarę szybkiego łącza klip się wyświetla, mogę go potem loopować, wstawiać zdarzenia (na linii czasu oczywiście). Gorzej gdy osoba posiada wolne łącze - wtedy klip się zatrzymuje, gubi ramki, widać błędy w kodowaniu/kwantyzacji.
Stąd nieodzownym elementem byłoby puszczenie klipa po jego załadowaniu oraz moja gorąca prośba o nakierowanie toku myślenia mego we właściwym kierunku
Pozdrawiam
Janusz T.
PS. Link do strony gdzie jest animacja: www.imxs.pl/cardiofit/fit
Januszr - Sob 04 Lut, 2012 10:27
EXTERNAL FILE PRELOAD:
http://blog.swishzone.com/?p=47
oraz
http://blog.swishzone.com/?p=3426
Jak załączysz kawałek tego SWI, z którym masz problemy to pewnie uda mi się coś wymyślić. A tak na szybko to... nachodzi mnie jedna myśl: po cholerę Ci flv skoro masz postacie jednobarwne, które aż prosi się do vektora przerysować?
tjindy - Sob 04 Lut, 2012 13:32
Tak, przeglądałem te przykłady i nawet starałem się coś z tego zrobić.
Ale ok, wrócę jeszcze raz do kodu i postaram się podesłać coś sensownego - chociaż przy moim poziomie umiejętności będzie niezły ubaw
Januszr napisał/a: | EXTERNAL FILE PRELOAD:
...CIACH...
..nachodzi mnie jedna myśl: po cholerę Ci flv skoro masz postacie jednobarwne, które aż prosi się do vektora przerysować? |
Dobrze postawione pytanie - moja riposta brzmi: jakim programem mogę trace`ować animację? I to tak abym miał wektorek ? Lub też: rozbić animację na klatki i potem zamieniać na wektor... ?
Pozdrawiam
Janusz T.
Januszr - Sob 04 Lut, 2012 14:10
Nie wiem Ta animacja wygląda jakby była zrobiona w wektorach a potem zapisana jako AVI
Był jednak taki program... Ale nie pomogę a tym.
Anyway, jest od groma programów do zapisu filmu do pojedynczych klatek: np SwishMax4, jednak może jak wpiszesz w wyszukiwarkę "avi t obmp" to znajdziesz więcej.
Co do zamiany bmp na vektora: Macromedia flash 5, corel trace, i znowu: w wyszukiwarkę: bmp to vector
A może nawet znajdziesz "avi to vector?
Tutaj raczej ubaw jest jak ktoś nie próbuje zrobić tylko uważa, że to koncert życzeń. Nie wstyd nie wiedzieć, wstyd udawać, że się wie
tjindy - Sob 04 Lut, 2012 14:33
Animacja była na blueboxie - czyli zielonym ekranie
W Sony Vegas dałem chromakey + delikatny glow, dorzuciłem tło wycięte z tworzonego szablonu. Zapisałem do do xvida -> convert do FLV.
W swishmax4 dodałem do klipu maskę (to fioletowe ustrojstwo z dołu). I pełen nadziei wrzuciłem na serwa. U mnie fajnie śmiga - no ale mam niemałe łącze. Przetestowałem u innych i (cenzura).
Macromedia i corel odpadają - nie mam licencji i mnie nie stać.
Zostaje mi raczej nauczenia się poprawnego ładowania plików FLV, z pomocą tegoż forum. Co jest chyba najlepszym rozwiązaniem - będzie doświadczenie no i inne ludziska też zapewne skorzystają
Ok, lecę z psem i po zakupy, a potem siadam do skryptowania. Jak już coś będę miał to zapodam
Pozdrawiam
Janusz T.
PS. Zlecenie jest za grosze, ale to akurat bardziej ambitne podejście tfurcy niż zarobek
krzywy105 - Sob 04 Lut, 2012 15:52
Nie wiem czy dobrze rozumie problem ale czy nie możesz zrobić preloadera do ładowanego pliku z filmikiem?
czyli coś w rodzaju:
Kod: |
p = animacja.getPercentLoaded();
if(p < 100) {_parent.animacyjny.prevFrameAndPlay ();} |
oczywiście wcześniej ładujesz plik do animacja przez LoadMovie
tjindy - Sob 04 Lut, 2012 16:05
krzywy105 napisał/a: | Nie wiem czy dobrze rozumie problem ale czy nie możesz zrobić preloadera do ładowanego pliku z filmikiem?
czyli coś w rodzaju:
Kod: |
p = animacja.getPercentLoaded();
if(p < 100) {_parent.animacyjny.prevFrameAndPlay ();} |
oczywiście wcześniej ładujesz plik do animacja przez LoadMovie |
Gdybym miał animację zaimportowaną do swf`a to tak, ale wolę strumieniować plik zewnętrzny bo ma lepszą jakość. W podanym przez Ciebie przykładzie swf miałby wtedy wielkość, po kompresji, powiedzmy 2-3 MB i wtedy to by zadziałało. Zresztą, pierwsze próby tak właśnie czyniłem.
Ok, biorę się do pracy, rodacy. Albo mnie zmorzy kod albo sobotni wspomagacz
krzywy105 - Sob 04 Lut, 2012 16:35
Wydaje mi się że klasa loadMovie obsługuje pliki .flv i możesz przecież tak sprawdzać procent załadowania tego pliku.
tjindy - Sob 04 Lut, 2012 16:52
krzywy105 napisał/a: | Wydaje mi się że klasa loadMovie obsługuje pliki .flv i możesz przecież tak sprawdzać procent załadowania tego pliku. |
Hmmm.. jak na razie czyta wszystko inne bo testuję na jpg, png, swf. Przy próbie FLV preloader zjeżdża mi do 1 % i nic....
Teraz zrobiłem tak że preloader czyta swf w którym jest zlinkowany FLV.
Test tegoż tutaj -> http://www.imxs.pl/test/
Jeśli ktoś ma słabsze łącze to będę wdzięczny za opinie. Jeśli pierwsza pozycja faktycznie się zacznie odtwarzać po załadowaniu to jesteśmy w domu. Jeśli jednak zacznie się rwać - to znaczy że idę na spacer przemyśleć moje życie
Załączam SWI - które niczym się nie różni od tego co już mamy na stronie podanej przez JanuszR.
PS.
U mnie te 10 MB powinno się ładować ok 3 sek. (optymistyczny wariant). Wygląda na to że w nosie ma loadera tak czy owak. Czyta "wagę" samego SWFa.
krzywy105 - Sob 04 Lut, 2012 17:46
Chyba jednak loadMovie nie obsługuje .flv
W jaki sposób wczytujesz zewnętrzny flv? NetConnection ,NetStream z tego co widzę ma wszystko do obsługi buforowania itd, ale niestety jeszcze tego nie stosowałem więc nie bardzo pomogę.
tjindy - Sob 04 Lut, 2012 18:02
krzywy105 napisał/a: | Chyba jednak loadMovie nie obsługuje .flv
W jaki sposób wczytujesz zewnętrzny flv? NetConnection ,NetStream z tego co widzę ma wszystko do obsługi buforowania itd, ale niestety jeszcze tego nie stosowałem więc nie bardzo pomogę. |
W pierwszej wersji wrzuciłem flv do swisha i sam mi zlinkował flv jako zewnętrzne media. Zapisałem to jako klip.swf. Potem chciałem do tego dorobić preloadera - i zaczęły się schody.
Na stronie zamieściłem w 3 pozycji kod ze swishzone:
Kod: |
onSelfEvent (load) {
var listener:Object = new Object();
}
onSelfEvent (load) {
play = "true";
}
onFrame (5) {
listener.onLoadInit = function(targetMC:MovieClip):void {
targetMC.obj._width = 480;
targetMC.obj._height = 300;
var connection:NetConnection = new NetConnection();
connection.connect(null);
var stream:NetStream = new NetStream(connection);
stream.onStatus = function(info) {
outTFB = "";
outTFB += "Stream Status is, \n";
outTFB += "Event: " + info.code + "\n";
outTFB += "Type: " + info.level;
}
stream.onMetaData = function(infoObject) {
metaTFB = "";
for(var prop:String in infoObject) {
metaTFB += prop + ": " + infoObject[prop] + "\n";
}
}
targetMC.obj.attachVideo(stream);
//loads flv file
stream.playIt = stream.play;
stream.playIt("Fitnes2.flv");
}
}
onFrame (5) {
var MCLoader:MovieClipLoader = new MovieClipLoader();
MCLoader.addListener(listener);
MCLoader.loadClip("videoObject.swf", "videoObjectMC");
}
onFrame (6) {
stream.onMetaData = function(evt:Object):void
{
duration = evt.duration;
}
stream.onStatus = function(evt:Object):void
{
if (this.time > 0 && this.time >= (duration))
{
gotoSceneAndPlay("<current scene>",40);
delete this.onStatus;
}
}
}
onFrame (30) {
stop();
}
onFrame (39) {
stop();
}
onFrame (46) {
stop();
}
|
I działa jak widać.
Jako że podobno "play" jest funkcją specjalną Swishmaxa stąd zrobiono podmiankę stream.playIt.. ale mi swish wywala błędy.
Teraz staram się zrozumieć kod do strumieniowania i jakoś to ugryźć. Temat ciekawy i sądzę że wielu powinien zainteresować.
Niestety, ja w AS kiepski jestem do "bulu" także jak ktoś pomoże rozszyfrować kod to będę wdzięczny
espe1 - Sob 04 Lut, 2012 22:50
W komponentach swisha masz kilka wersji odtwarzaczy flv (proste, skomplikowane).
Po przeciągnięciu na scenę, można je modyfikować w parametrach (wielkość, kolory itd)
W parametrach wpisujemy też nazwę pliku (plik lokalny w tym samym katalogu) lub adres http (plik zewnętrzny).
Jeśli ktoś ma bardzo słabe łącze (typu bezpłatne Aero2), to mu nic nie pomoże przy pliku 10mb.
tjindy - Nie 05 Lut, 2012 17:10
espe1 napisał/a: | W komponentach swisha masz kilka wersji odtwarzaczy flv (proste, skomplikowane).
Po przeciągnięciu na scenę, można je modyfikować w parametrach (wielkość, kolory itd)
W parametrach wpisujemy też nazwę pliku (plik lokalny w tym samym katalogu) lub adres http (plik zewnętrzny).
Jeśli ktoś ma bardzo słabe łącze (typu bezpłatne Aero2), to mu nic nie pomoże przy pliku 10mb. |
No i dlatego lepiej mieć kontrolę nad plikiem z poziomu AS niż playera.
Na ten skromny przykład - można zliczać czas ładowania i jeśli przekroczy "ileśtamsekund" - dać alternatywny swf z małą wagą..
Jutro wracam do tematu i będę grzebał dalej
Pozdrawiam
krzywy105 - Nie 05 Lut, 2012 17:19
Kod: |
var netConn:NetConnection = new NetConnection();
netConn.connect(null);
var netStream:NetStream = new NetStream(netConn);
my_video.attachVideo(netStream);
netStream.setBufferTime(5);
netStream.play("sample.flv"); |
Zainteresował mnie temat i doszedłem do tego co powyżej. Ten kod pozwala odtwarzać strumieniowo zewnętrzny .flv z zachowaniem właśnie takich parametrów jak czas buforowania itd.
Ważne:
1 my_video to obiekt widoczny w konspekcie wstawiony jako zewnętrzne media (wstaw -> zewnętrzne media) a nie "klip".
2. obiekt my_video musi mieć odznaczone "Użyj automatycznego skryptu" w właściwościach.
To tylko najprostszy przykład ale już rozbudowa nie powinna być problemem.
espe1 - Nie 05 Lut, 2012 20:58
tjindy napisał/a: |
No i dlatego lepiej mieć kontrolę nad plikiem z poziomu AS niż playera.
Na ten skromny przykład - można zliczać czas ładowania i jeśli przekroczy "ileśtamsekund" - dać alternatywny swf z małą wagą..
Jutro wracam do tematu i będę grzebał dalej
Pozdrawiam |
Nie miałbyś tylu problemów, gdybyś przekonwertował flv na swf. Mnóstwo darmowych konwerterów w sieci.
Zaraz zacznie ci się problem z powtarzaniem, bo pewnie chciałbyś loopować flv itd.
Z plikawi swf nie ma problemów: powtarzanie, preloadery, podmienianie plików itd.
|
|