Upload
ciberglo
View
447
Download
0
Tags:
Embed Size (px)
Citation preview
Exorcizando o GStreamer
Gabriel L. OliveiraNSI
O Ministério da Saúde adverte:
Material inapropriado para menores de 18 anos!
Solta essa P****!!!
WTF O que é GStreamer?
WTF O que é GStreamer?
GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. GStreamer is released under the LGPL.
Por quê inglês?
Características
Specifically, GStreamer provides: an API for multimedia applications a plugin architecture a pipeline architecture a mechanism for media type handling/negotiation over 150 plug-ins a set of tools
GStreamer plug-ins could be classified into: protocols handling sources: for audio and video (involves protocol plugins) formats: parsers, formaters, muxers, demuxers, metadata, subtitles codecs: coders and decoders filters: converters, mixers, effects, … sinks: for audio and video (involves protocol plugins)
Seus braços direitos (a outra direita)
Seus braços direitos
$ gst-feedbackBusca no sistema por informações gerais
$ gst-inspectMostra a descrição de um plug-in
$ gst-launchConstrói e roda o pipeline
Iniciando...
Pipeline simples
$ gst-launch playbin uri=file://...musica
Vamos testar?
E agora fazer de outro jeito?
Outro jeito
$ gst-launch filesrc location=...musica ! decodebin ! alsasink
Vamos comparar?
Vamos comparar
$ gst-launch playbin uri=file://...musica
$ gst-launch filesrc location=...musica ! decodebin ! alsasink
Teoria do GStreamer
Preparando o ambiente para trabalho
$ apt-get install --reinstall libalsaplayer-dev libgio-fam libogg-dev libtheora-dev libtheora-bin libvorbis-dev libcdparanoia-dev libgnomevfs2-dev libvisual-0.4-dev libpango1.0-dev libx11-dev libx264-dev libxvidcore4-dev libxinerama-dev flac libflac-dev libfaad-dev libaudio-dev libavifile-0.7-dev libdebug0-dev libmatroska-dev libmultisync-plugin-all libsmpeg-dev libwavpack-dev libannodex-dev libgconf2-dev libjpeg-dev libosso-dev libcaca-dev libcairo2-dev libpng12-dev libdirectfb-dev libdv-dev libesd0-dev libgdk-pixbuf-dev libhal-dev libpulse-dev libshout-dev libspeex-dev libtag1-dev libschroedinger-dev libdvdcss-dev libfreeze32 libdv4-dev libid3-dev libid3tag0-dev liblivemedia-dev libmpeg2-4-dev libmpeg3-dev libmpeg3hv-dev libmpeg4ip-dev libraw1394-dev libgst-dev libgstreamer-plugins-pulse0.10-0 libvcdinfo-dev libamrwb-dev libbz2-dev libcdaudio-dev libdc1394-22-dev libdfb++-dev libdirac-dev libdts-dev libfaac-dev libfaad2-0 libfaac0 libflite1 libgmerlin0 libgmerlin-dev libgsm1-dev libgsm-tools libjack-dev libladspa-ocaml-dev libmms0 libmms-dev libmodplug0c2 libmodplug-dev libmpeg2-4 libmpeg3-1 libmpeg3hv libmpeg4ip-0 libmusicbrainz3-6 libmusicbrainz3-dev libmusicbrainz4c2a libmusicbrainz4-dev libmusicbrainz-dev libmythes-dev libofa0-dev libofa0 librsvg2-dev librsvg2-bin librsvg2-2 libneon27-dev libsdl-dev libsdl1.2-dev libsdl1.2debian-all libsfml-dev libsoundtouch1c2 libsoundtouch1-dev libsoundtouch-dev libswfdec-dev libswfdec-0.6-90 libvdpau1 libvdpau-dev libwildmidi0 libwildmidi-dev libxvidcore4 lame lame-extras liba52-0.7.4 liba52-0.7.4-dev libamrnb3 libamrnb-dev libamrwb3 gstreamer0.10-alsa gstreamer0.10-ffmpeg gstreamer0.10-fluendo-mp3 gstreamer0.10-fluendo-mpegdemux gstreamer0.10-fluendo-mpegmux gstreamer0.10-gnonlin gstreamer0.10-gnonlin-dev gstreamer0.10-lame gstreamer0.10-plugins-bad gstreamer0.10-plugins-base gstreamer0.10-plugins-farsight gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-schroedinger gstreamer0.10-tools gstreamer0.10-x gstreamer0.10-videosource gstreamer-tools
WTF!?!?
Preparando o ambiente para trabalho
$ apt-get install --reinstall libalsaplayer-dev libgio-fam libogg-dev libtheora-dev libtheora-bin libvorbis-dev libcdparanoia-dev libgnomevfs2-dev libvisual-0.4-dev libpango1.0-dev libx11-dev libx264-dev libxvidcore4-dev libxinerama-dev flac libflac-dev libfaad-dev libaudio-dev libavifile-0.7-dev libdebug0-dev libmatroska-dev libmultisync-plugin-all libsmpeg-dev libwavpack-dev libannodex-dev libgconf2-dev libjpeg-dev libosso-dev libcaca-dev libcairo2-dev libpng12-dev libdirectfb-dev libdv-dev libesd0-dev libgdk-pixbuf-dev libhal-dev libpulse-dev libshout-dev libspeex-dev libtag1-dev libschroedinger-dev libdvdcss-dev libfreeze32 libdv4-dev libid3-dev libid3tag0-dev liblivemedia-dev libmpeg2-4-dev libmpeg3-dev libmpeg3hv-dev libmpeg4ip-dev libraw1394-dev libgst-dev libgstreamer-plugins-pulse0.10-0 libvcdinfo-dev libamrwb-dev libbz2-dev libcdaudio-dev libdc1394-22-dev libdfb++-dev libdirac-dev libdts-dev libfaac-dev libfaad2-0 libfaac0 libflite1 libgmerlin0 libgmerlin-dev libgsm1-dev libgsm-tools libjack-dev libladspa-ocaml-dev libmms0 libmms-dev libmodplug0c2 libmodplug-dev libmpeg2-4 libmpeg3-1 libmpeg3hv libmpeg4ip-0 libmusicbrainz3-6 libmusicbrainz3-dev libmusicbrainz4c2a libmusicbrainz4-dev libmusicbrainz-dev libmythes-dev libofa0-dev libofa0 librsvg2-dev librsvg2-bin librsvg2-2 libneon27-dev libsdl-dev libsdl1.2-dev libsdl1.2debian-all libsfml-dev libsoundtouch1c2 libsoundtouch1-dev libsoundtouch-dev libswfdec-dev libswfdec-0.6-90 libvdpau1 libvdpau-dev libwildmidi0 libwildmidi-dev libxvidcore4 lame lame-extras liba52-0.7.4 liba52-0.7.4-dev libamrnb3 libamrnb-dev libamrwb3 gstreamer0.10-alsa gstreamer0.10-ffmpeg gstreamer0.10-fluendo-mp3 gstreamer0.10-fluendo-mpegdemux gstreamer0.10-fluendo-mpegmux gstreamer0.10-gnonlin gstreamer0.10-gnonlin-dev gstreamer0.10-lame gstreamer0.10-plugins-bad gstreamer0.10-plugins-base gstreamer0.10-plugins-farsight gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-schroedinger gstreamer0.10-tools gstreamer0.10-x gstreamer0.10-videosource gstreamer-tools
Ubuntu way
$ apt-get install gstreamer0.10-alsa gstreamer0.10-ffmpeg gstreamer0.10-gnonlin gstreamer0.10-lame gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly gstreamer0.10-tools gstreamer0.10-x
Em intenso desenvolvimento!
Data do slide: 31/05/2010
E a BD nessa história toda?
Contextualizando a BD
Conversão de vídeo para armazenamento Exibição online Corte Granularização
Vamos começar sério
$ gst-launch filesrc location=...musica ! decodebin ! alsasink
$ gst-launch filesrc location=...video ! decodebin ! xvimagesink
$ gst-launch filesrc location=...video_com_audio ! decodebin name=d d.! alsasink d.! xvimagesink
Um passo maior...
Convertendo e salvando$ gst-launch filesrc location=...musica ! decodebin! queue ! audioconvert ! vorbisenc ! oggmux ! filesink location=musica.ogg
$ gst-launch filesrc location=...video ! decodebin ! queue ! theoraenc ! oggmux ! filesink location=video.ogv
$ gst-launch filesrc location=...video_com_audio ! decodebin name=d
d.! queue ! audioconvert ! vorbisenc ! mux. d.! queue ! theoraenc ! mux. oggmux name=mux !
filesink location=video_com_audio.ogv
Exibição online com HTML5
<video><source src="video.ogv" type='video/ogg;
codecs="theora, vorbis"'></video>
Corte – Vamos refletir...
Corte de vídeo$ gst-launch gnlfilesource name=audio
location=... media-start=... media-duration=... start=...
duration=... caps="audio/x-raw-int;audio/x-raw-float"
gnlfilesource name=video location=... media-start=... media-duration=... start=...
duration=... caps="video/x-raw-rgb;video/x-raw-yuv"
audio. ! queue ! audiorate ! alsasinkvideo. ! queue ! videorate ! xvimagesink
Extras...: Mixagem
$ gst-launch filesrc location=... name=a a.! decodebin ! queue ! ffmpegcolorspace ! videoscale ! video/x-raw-yuv,width=320,height=240 ! videobox right=1 ! videorate ! mix. filesrc location=... name=b b.! decodebin name=grande grande.! queue ! ffmpegcolorspace ! videoscale ! video/x-raw-yuv,width=320,height=240 ! videorate ! alpha method=custom angle=30 target-r=127 target-g=61 target-b=49 ! videomixer name=mix ! ffmpegcolorspace ! xvimagesink grande.! queue ! audiorate ! alsasink
Extras...: Experiência
$ gst-launch filesrc location=Desktop/testes-gstreamer/shakira-hd/shakira-loba name=shakira shakira.! decodebin ! videorate ! videoscale ! video/x-raw-yuv,width=640,height=480 ! ffmpegcolorspace ! videobox right=1 ! mix. filesrc location=Desktop/video_meu.ogv name=meuvideo meuvideo.! decodebin ! videorate ! videoscale ! video/x-raw-yuv,width=640,height=480 ! alpha method=custom target-r=0 target-g=36 target-b=99 angle=40 ! videomixer name=mix ! ffmpegcolorspace ! xvimagesink
Algumas aplicações que utilizam
Totem Banshee Exaile Kaffeine AmaroK Pitivi Rhythmbox Songbird
Perguntas?
Referências
GStreamer: http://www.gstreamer.net/
Referências e Figuras
http://www.flickr.com/photos/desmondkavanagh/438838516http://www.flickr.com/photos/binaph/1469984925http://www.planetsexdf.com.br/img/calcinha.jpg
http://sites.google.com/site/indominavelsub/interrogacao.jpghttp://www.kelribeiro.com/wp-content/uploads/2008/12/ronaldo.jpghttp://www.click21.mypage.com.br/hosp_cliente/s/o/-/so-mulher.myflog.com.br/y17Gwk3VVq8Tb84qalU27416201322O9IPSIH05P_grd.jpg
http://i.ytimg.com/vi/6BqnJz0PzZs/0.jpghttp://www.oesquema.com.br/trabalhosujo/wp-content/uploads/2008/12/lula_roll.jpghttp://www.youtube.com/watch?v=JWTfwVZ1UD0&feature=related
http://translate.google.com/#en|pt|sinkhttp://creditplushealth.org/health%20picture/ronnie%20coleman%206.jpg
Referências e Figuras
http://images.icanhascheezburger.com/completestore/2009/4/12/128840642635598139.jpghttp://i.ehow.com/images/a04/g2/me/follow-dave-ramseys-baby-steps-800X800.jpghttp://images.icanhascheezburger.com/completestore/2009/4/12/128840642635598139.jpghttp://i.dailymail.co.uk/i/pix/2009/04/17/article-1171536-0472A623000005DC-386_468x329.jpghttp://farm1.static.flickr.com/4/4388726_1d417fb269.jpghttp://contigo.abril.com.br/imagem/noticia/201005/ampliada/gorete-240510-1.jpghttp://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/images/linked-elements.pnghttp://andreluceac.zip.net/images/natureza_linda1.jpghttp://potinhodexp.files.wordpress.com/2009/12/pegadinha_do_malandro.jpghttp://gstreamer.freedesktop.org/src/gst-plugins-good/
Referências e Figuras
http://bonitoisso.files.wordpress.com/2008/07/trinity-college-library-dub1.jpghttp://www.flickr.com/photos/75756973@N00/29776385http://discernimentocristao.files.wordpress.com/2009/09/o-pensador1.jpghttp://www.huffingtonpost.com/mark-c-miller/ommmmm-in-the-mood-for-me_b_368345.html
http://projects.gnome.org/totem/http://banshee-project.org/
http://www.exaile.org/http://kaffeine.kde.org/http://amarok.kde.org/http://www.pitivi.org/
Referências e Figuras
http://projects.gnome.org/rhythmbox/http://getsongbird.com/
http://www.padillabay.gov/brant/eximages/QUESTION.jpghttp://i44.tinypic.com/2q9j32u.jpg