TechLife devBlog

My own YouTube

Internet 19th Mar 2007

Jako, że wczoraj zotałem napadnięty i zarzucono mi nie bycie dość pr0 więc dzisiaj nadrabiam straty ;)

Kilka razy już chciałem nagrać jakiś filmik z ekranu i wrzucić go na Google Video, ale za każdym razem wynik był marny – za duża kompresja i za mała rozdzielczość. Dotyczy to również klasycznych nagrań z kamery, które chcilibyśmy pokazać w nieco większej rozdzielczości.

Do tego celu potrzebne będą nam 3 rzeczy:

  • coś do nagrywania ekranu, ja używam xvidcap
  • ffmpeg – narzędzie do czarowania plików video
  • darmowy flash video player – ja użyję FlowPlayer

Krok 1.

Nagrywany filmik. Produktem wyjściowym jest film.avi.

Krok 2.

Przy pomocy magicznego zaklęcia konwertujemy film do postaci flashowej.

ffmpeg -i film.avi film.flv

Jeżeli chcemy skompresować do danego wymiaru to:

ffmpeg -i film.avi -s 320x240 -ar 44100 -r 12 film.flv

Krok 3.

Podpinamy plik film.flv pod nasz flashowy odtwarzacz:











FlowPlayer obsługuję playlisty, więc możemy przed i po właściwym filmiku wstawić jakiś obrazek czy inny filmik. W ten sposób można np. założyć własną telewizję internetową i utrzymywać się z reklam wstawianych przed właściwymi filmikami ;)

Gotowe. Zobacz przykład

Komentarze z jogger.pl

ciastek 19.03.2007 / 18:20

pięknie! już chyba nikt nie powie, że wpis się nie nadaje na techbloga ;]

ViralioN 19.03.2007 / 19:55

To co? Kto robi konkurencję dla YouTube'a, Google'a i tym podobnych? :)

sparrow 19.03.2007 / 20:01

Teraz to się nadaje :) Tylko mam uwagę:

XML Parsing Error: not well-formed
Location: http://karbownicki.com/2007/03/19/my-own-youtube/
Line Number 285, Column 45: (ciach)

Michał Górny 19.03.2007 / 20:11

@citi: Zastosuj EXCERPT ( ;.

@sparrow: Jogger nie powinien czasem jakoś pilnować trochę inputu? q ;

trójkąt 19.03.2007 / 20:24

EXCERPT done.

Viralion mi nabroił jakieś ruskie znaczki w komentarzu i się posypało ;-)

ViralioN 19.03.2007 / 20:25

To juz nie mozna ‘e’ (z ogonkiem) napisac? :)

trójkąt 19.03.2007 / 20:26

Byle nie z tym na górze ;-)

ViralioN 19.03.2007 / 20:27

a) albo mi sie zdawalo albo dalem z tym na dole
b) albo mi sie alty (czy jak to tam sie wpisuje) pomylily

Michał Górny 19.03.2007 / 20:27

@ViralioN: Jakimś cudem żeś \19 dał…

anetta 16.03.2008 / 18:28

Zrobiłam tak jak piszesz, ale wyskakuje komunikat: incorrect frame rate. Co zrobic?

trójkąt 16.03.2008 / 19:26

Frame rate to liczba klatek na sekundę czyli w opisanym przypadku opcja -r 12. Spróbuj zmienić ją na mniejszą lub większą.

androjec 28.03.2009 / 20:14

heloo
Z tego co się orientuję to aders url do odtwarzanego pliku jest wpisywany do kodu javascript… i teraz pytanie czy jest możliwość podpięcia flowplayer-a do bazy MySQL ? O ile jest w ogóle sens trzymania w bazie dużych plików wideo… Biorąc pod uwagę fakt że max wielkość pliku wyniosła by np. 10 MB to podłączenie do bazy MySQL mogło by być dobrym rozwiązaniem można by np odtworzyć losowy wybrany plik z bazy, pogrupować pliki przypisać do kategorii, wyświetlić jako domyślny najczęściej klikany itp. Czy jest opcja żeby coś takiego zrobić ?
Pozdr

trójkąt 28.03.2009 / 22:42

Najlepiej w bazie trzymać jedynie informacje o plikach, np. tytuł, opis, kategoria, ścieżka do pliku itp. Wtedy wypluwając te informacje i wsadzając w JavaScript można zrobić to wszystko o czym napisałeś.

androjec 29.03.2009 / 21:40

No ok o ile z założeniem bazy i umieszczeniem w niej info nie będę miał problemu to żeby to skleić z javascript-em problem będzie :/
Standardowo ścieżkę do pliku podaje się w pliku „player.js”
var config = {
clip: {
url: ‘snow.mpg.flv’,
autoPlay: false,
autoBuffering: true,
},
Gdzie „snow.mpg.flv” to snow.mpg przemielony ffmpeg-em na flv i przekopiowany to katalogu w którym jest reszta plików łącznie z player.js.

<?php
require ‘baza.php’;
$sql = mysql_query(‘SELECT danepliku FROM skladplikow WHERE id = „64”’);
while ($data = mysql_fetch_row($sql)) echo $data0.’<br/>’;
?>

Powyższe zapytanie wyświetla filmik w postaci długiegoooo ciągu znaków.
Po podstawienie tego zapytania do url w player.js nie ma żadnego efektu player nawet sie nie pojawia. Ręczne wstawianie ścieżek do pliku mija się z celem.
Jakieś rady ?
Pozdr

trójkąt 29.03.2009 / 23:06

To co pokazałeś wyciąga jedynie dane z bazy. Teraz te dane trzeba wstawić w odpowiednie miejsca (patrz krok 3 – playList).

androjec 29.03.2009 / 23:55

No tak tylko że zapytania sql nie wstawie do playlisty tak jak ścieżki do pliku jpg albo flv. (jak w kroku 3) Chce mieć na jednej stronie np. 3 okienka playera w jednym ma sie domyślnie wyświetlić losowo wybrany plik z bazy, w drugim najczęściej oglądany, w trzecim ostatnio dodany. Jedyny pomysł jaki mi przychodzi do głowy to: wykonanie zapytania sql przy każdym odświeżeniu strony i zapis jego wyniku do pliku ? (w postaci ciągu znaków… ?!) A w playlist podanie ścieżki do tego pliku.
Tak mi wyobraźnia podpowiada :) Jak to powinno wyglądać od strony programistycznej niewiem. Jakieś sugestie ?

trójkąt 30.03.2009 / 00:03

No tak tylko że zapytania sql nie wstawie do playlisty tak jak ścieżki do pliku jpg albo flv.

Widzę, że brakuje Ci podstawowej wiedzy z zakresu pobierania danych z bazy. Zapoznaj się np. z tym artykułem lub googluj za PHP MySQL. W zasadzie jest to bardzo proste do zrobienia, trzeba tylko zrozumieć zasadę działania.

Jądro 03.04.2011 / 15:51

Żalowy blog !!!!!!!



Komentarze