Ładowanie zewnętrznego pliku FLV |
Autor |
Wiadomość |
tjindy
Praktyk
Wiek: 46 Dołączył: 12 Wrz 2010 Posty: 23 Skąd: Konin
|
Wysłany: Sob 04 Lut, 2012 09:33 Ł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
Pomógł: 216 razy Dołączył: 11 Maj 2005 Posty: 1854 Skąd: Stolyca od urodzenia
|
Wysłany: 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ć? |
_________________ Niestety używam nieoficjalnych wersji Swish, które można zassać z forums.swishzone.com - jest na szczycie listy w BugsForum.
|
|
|
|
|
tjindy
Praktyk
Wiek: 46 Dołączył: 12 Wrz 2010 Posty: 23 Skąd: Konin
|
Wysłany: 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
Pomógł: 216 razy Dołączył: 11 Maj 2005 Posty: 1854 Skąd: Stolyca od urodzenia
|
Wysłany: 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 |
_________________ Niestety używam nieoficjalnych wersji Swish, które można zassać z forums.swishzone.com - jest na szczycie listy w BugsForum.
|
|
|
|
|
tjindy
Praktyk
Wiek: 46 Dołączył: 12 Wrz 2010 Posty: 23 Skąd: Konin
|
Wysłany: 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
Doradca
Pomógł: 1 raz Dołączył: 09 Kwi 2011 Posty: 68 Skąd: Małopolska
|
Wysłany: 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
Praktyk
Wiek: 46 Dołączył: 12 Wrz 2010 Posty: 23 Skąd: Konin
|
Wysłany: 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
Doradca
Pomógł: 1 raz Dołączył: 09 Kwi 2011 Posty: 68 Skąd: Małopolska
|
Wysłany: 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
Praktyk
Wiek: 46 Dołączył: 12 Wrz 2010 Posty: 23 Skąd: Konin
|
Wysłany: 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
Doradca
Pomógł: 1 raz Dołączył: 09 Kwi 2011 Posty: 68 Skąd: Małopolska
|
Wysłany: 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
Praktyk
Wiek: 46 Dołączył: 12 Wrz 2010 Posty: 23 Skąd: Konin
|
Wysłany: 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
Profesjonalista
Pomógł: 16 razy Dołączył: 02 Lis 2011 Posty: 175 Skąd: łódzkie
|
Wysłany: 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
Praktyk
Wiek: 46 Dołączył: 12 Wrz 2010 Posty: 23 Skąd: Konin
|
Wysłany: 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
Doradca
Pomógł: 1 raz Dołączył: 09 Kwi 2011 Posty: 68 Skąd: Małopolska
|
Wysłany: 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
Profesjonalista
Pomógł: 16 razy Dołączył: 02 Lis 2011 Posty: 175 Skąd: łódzkie
|
Wysłany: 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. |
|
|
|
|
|