{"id":823,"date":"2008-08-20T09:02:02","date_gmt":"2008-08-20T07:02:02","guid":{"rendered":"http:\/\/my.stargazer.at\/?p=823"},"modified":"2011-03-18T13:25:57","modified_gmt":"2011-03-18T12:25:57","slug":"youtube-selfmade-part-1","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2008\/08\/20\/youtube-selfmade-part-1\/","title":{"rendered":"YouTube selbst gebaut &#8211; Teil 1"},"content":{"rendered":"<p>Wie sind eigentlich Seiten wie <a href=\"http:\/\/www.youtube.com\">YouTube<\/a> aufgebaut? Warum kann man da mit einfachen Tools die Videos runterziehen? Wie baut man sowas? Fragen \u00fcber Fragen. Habt ihr Lust auf ein paar Antworten? Ich schon.<\/p>\n<p>Beginnen wir unseren Ausflug mit dem Webbrowser auf ein Video Portal und sehen wir uns ein solches Video einmal an. Als Beispiel w\u00fcrde ich dieses hier vorschlagen:<\/p>\n<p><!--more-->Gehen wir einmal davon aus, dass alles was wir uns im Web ansehen irgendwie heruntergeladen werden muss, um es darstellen zu k\u00f6nnen. In unserem Fall, die Website um den Videoclip und den Clip selbst. Wie ich darauf komme ist einfach: Wenn ich die Seite neu lade, ist das Video schon komplett geladen und es l\u00e4sst sich gleich anzeigen.<\/p>\n<p>Als Test f\u00fcr meine Behauptung l\u00f6sche ich also alle Objekte in meinem Browser-Cache und lade die Seite neu um diesen dann zu inspizieren. Et voil\u00e0: wir haben ein SWF Objekt im Cache, welches ich einem entsprechenden Player f\u00fcttere. Doch irgendwie will das Ganze noch nicht so ganz abspielen. Ist da noch mehr?<\/p>\n<p>In der Tat &#8211; eine komisch anmutende Datei vom Typ FLV gurkt hier noch herum &#8211; offensichtlich eine Eigenheit von Macromedia. Ein kleiner Ausflug durch Google best\u00e4tigt meine Vermutung. Ich sehe mir noch ein paar andere Videos an und nun kommt der Knaller: Die SWF Datei bleibt davon relativ unbeeindruckt &#8211; Es sammeln sich nur einige FLV Dateien an.<\/p>\n<p>Ich nehme also an, dass sich dort die Videos verstecken und schaue mir die Datei genauer an. Vielleicht kann ich ja meinen Verdacht beweisen. Ich benenne also unser flv File um und lasse den Allesspieler &#8218;mplayer&#8216; einmal drauf los. Der Versuch an sich ist eventuell etwas plump, aber sollte er klappen, habe ich einen Anhaltspunkt, mit dem es sich sicher weiterarbeiten l\u00e4sst:<\/p>\n<blockquote>\n<pre>~ $ mplayer PenguinsLinuxAd.flv\r\nMPlayer dev-SVN-r27120-4.3.1 (C) 2000-2008 MPlayer Team\r\nCPU: Genuine Intel(R) CPU           T2500  @ 2.00GHz (Family: 6, Model: 14, Stepping: 8)\r\nCPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1\r\nCompiled with runtime CPU detection.\r\n\r\nPlaying PenguinsLinuxAd.flv.\r\nlibavformat file format detected.\r\n[lavf] Video stream found, -vid 0\r\n[lavf] Audio stream found, -aid 1\r\nVIDEO:  [FLV1]  480x360  0bpp  28.083 fps    0.0 kbps ( 0.0 kbyte\/s)\r\n==========================================================================\r\nOpening video decoder: [ffmpeg] FFmpeg's libavcodec codec family\r\nSelected video codec: [ffflv] vfm: ffmpeg (FFmpeg Flash video)\r\n==========================================================================\r\n==========================================================================\r\nOpening audio decoder: [mp3lib] MPEG layer-2, layer-3\r\nAUDIO: 44100 Hz, 2 ch, s16le, 64.0 kbit\/4.54% (ratio: 8000->176400)\r\nSelected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)\r\n==========================================================================\r\nAO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)\r\nStarting playback...\r\nVDec: vo config request - 480 x 360 (preferred colorspace: Planar YV12)\r\nVDec: using Planar YV12 as output csp (no 0)\r\nMovie-Aspect is undefined - no prescaling applied.\r\nVO: [xv] 480x360 => 480x360 Planar YV12\r\nA:   7.4 V:   7.4 A-V: -0.000 ct:  0.000   0\/  0  5%  0%  2.5% 2 0<\/pre>\n<\/blockquote>\n<p>Ob ihr es glaubt oder nicht ich kann das Video ansehen. FLA muss demnach also ein Video-Format sein. Ich mache einfach mal den Test und jage die Datei durch ffmpg:<\/p>\n<blockquote>\n<pre>~ $ ffmpeg -i PenguinsLinuxAd.flv PenguinsLinuxAd.mp4\r\nFFmpeg version UNKNOWN, Copyright (c) 2000-2008 Fabrice Bellard, et al.\r\n  configuration: --prefix=\/usr --libdir=\/usr\/lib --shlibdir=\/usr\/lib\r\n --mandir=\/usr\/share\/man --enable-static --enable-shared --cc=i686-pc-linux-gnu-gcc \r\n--disable-altivec --disable-debug --disable-ffplay --disable-network --disable-optimizations \r\n--enable-libfaac --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-liba52 \r\n--enable-libdc1394 --enable-pthreads --enable-x11grab --enable-libfaad --enable-libamr-nb \r\n--enable-libamr-wb --enable-nonfree --enable-gpl --enable-postproc --enable-avfilter \r\n--enable-avfilter-lavf --enable-swscale --disable-stripping\r\n  libavutil version: 49.6.0\r\n  libavcodec version: 51.53.0\r\n  libavformat version: 52.12.0\r\n  libavdevice version: 52.0.0\r\n  libavfilter version: 0.0.0\r\n  built on Jul  2 2008 16:52:29, gcc: 4.3.1\r\n\r\nSeems stream 0 codec frame rate differs from container frame rate: 1000.00 (1000\/1) -> 28.08 (337\/12)\r\nInput #0, flv, from 'PenguinsLinuxAd.flv':\r\n  Duration: 00:00:51.1, start: 0.000000, bitrate: 64 kb\/s\r\n    Stream #0.0: Video: flv, yuv420p, 480x360, 28.08 tb(r)\r\n    Stream #0.1: Audio: mp3, 44100 Hz, stereo, 64 kb\/s\r\nOutput #0, mp4, to 'PenguinsLinuxAd.mp4':\r\n    Stream #0.0: Video: mpeg4, yuv420p, 480x360, q=2-31, 200 kb\/s, 28.08 tb(c)\r\n    Stream #0.1: Audio: libfaac, 44100 Hz, stereo, 64 kb\/s\r\nStream mapping:\r\n  Stream #0.0 -> #0.0\r\n  Stream #0.1 -> #0.1\r\nPress [q] to stop encoding\r\nframe= 1420 fps= 46 q=31.0 Lsize=    2047kB time=50.6 bitrate= 331.6kbits\/s\r\nvideo:1629kB audio:388kB global headers:0kB muxing overhead 1.477593%<\/pre>\n<\/blockquote>\n<p>Und nun haben wir ein MP4-File, welches sich als solches abspielen l\u00e4sst. Ich w\u00fcrde sagen, dass so das Herunterladen von Videos erkl\u00e4rt ist. Der sog. Grabber holt sich die FLV Datei und konvertiert sie in das gew\u00fcnschte Format &#8211; so wie wir es eben manuell gemacht haben.<\/p>\n<p>Gehen wir einmal davon aus, dass Videos auch in FLV Dateien konvertiert werden k\u00f6nnen und Flash eben diese einbinden kann, selbst w\u00e4hrend diese noch geladen werden. Eben wie ein Stream, nur ohne Streamingserver. Wie wir das Ganze hier gewonnene Wissen dann einsetzen und selbst so einen Player bauen, sehen wir uns aber im n\u00e4chsten Teil an&#8230;<\/p>","protected":false},"excerpt":{"rendered":"<p>Wie sind eigentlich Seiten wie YouTube aufgebaut? Warum kann man da mit einfachen Tools die Videos runterziehen? Wie baut man sowas? Fragen \u00fcber Fragen. Habt ihr Lust auf ein paar Antworten? Ich schon. Beginnen wir unseren Ausflug mit dem Webbrowser auf ein Video Portal und sehen wir uns ein solches Video einmal an. Als Beispiel w\u00fcrde ich dieses [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[503,496,530],"class_list":["post-823","post","type-post","status-publish","format-standard","hentry","category-it-related-stuff","tag-howto","tag-video","tag-youtube"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/comments?post=823"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/823\/revisions"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}