TechLife devBlog

My own YouTube

Linux Techblog 19 marca 2007 o 17:36:01 | ☍ trackback

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:

<object type="application/x-shockwave-flash" data="FlowPlayer.swf" width="924" height="690" id="FlowPlayer">
<param name=„allowScriptAccess” value=„sameDomain” />
<param name=„movie” value=„FlowPlayer.swf” />
<param name=„quality” value=„high” />
<param name=„scale” value=„noScale” />
<param name=„wmode” value=„transparent” />
<param name=„allowNetworking” value=„all” />
<param name=„flashvars” value=„config={
   autoPlay: false,
   loop: false,
   initialScale: ‘scale’,
   showLoopButton: false,
   showPlayListButtons: false,
   playList: [
      { url: ‘http://karbownicki.com/files/baner.jpg’ }, 
      { url: ‘film.flv’ },
      { url: ‘http://karbownicki.com/files/baner.jpg’ } ]
   }” />
</object>

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 do notki

ciastek
19 marca 2007 o 18:20:56

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

Michał Górny
19 marca 2007 o 20:11:51

@citi: Zastosuj EXCERPT ( ;.

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

trójkąt
19 marca 2007 o 20:24:33

EXCERPT done.

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

ViralioN
19 marca 2007 o 20:25:28

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

trójkąt
19 marca 2007 o 20:26:09

Byle nie z tym na górze ;-)

ViralioN
19 marca 2007 o 20:27:12

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 marca 2007 o 20:27:59

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

anetta
16 marca 2008 o 18:28:48

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

trójkąt
16 marca 2008 o 19:26:54

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 marca 2009 o 20:14:31

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 marca 2009 o 22:42:00

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 marca 2009 o 21:40:02

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 marca 2009 o 23:06:02

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

androjec
29 marca 2009 o 23:55: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 marca 2009 o 00:03:13

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 kwietnia 2011 o 15:51:34

Żalowy blog !!!!!!!

Skomentuj

Formatowanie: Markdown