------------------------------------------------------------------------------- LIBAV-TOOLS (AVCONV) NOTLARI ------------------------------------------------------------------------------- ffmpeg projesinden ayrılan bir grup, libav-tools adında alternatif bir ürün geliştiriyor. "ffmpeg" yerine "avconv", "ffplay" yerine "avplay", "ffserver" yerine "avserver" komutlarını kullanılacak. ffmpeg projesini de takip etmekte fayda var, olumlu gelişmeler olmakta. # Yükleme # aptitude install -t squeeze-backports libav-tools libavcodec-extra-53 \ # libavfilter-extra-2 libavformat-extra-53 libavutil-extra-51 \ # libpostproc-extra-52 libswscale-extra-2 x264 aptitude install -t squeeze-backports libav-tools x264 # İzleme avplay video.mpg avplay mmsh://85.111.3.55/ntv avplay mmst://95.0.159.138/tv1 avplay mmst://95.0.159.131/trtbelgesel # Çevirme (mpeg -> flv) avconv -i video.mpg -r 25 -qmin 1 -qmax 6 -ar 22050 -ab 32k \ -vcodec flv -f flv video.flv # Bilgi alma avconv -codecs avconv -formats avconv -protocols # avconv options -vcodec copy ile kullanılırsa input file video formati aynen aktarılır. -acodec copy ile kullanılırsa input file audio formati aynen aktarılır. -re realtime aktarma. Veriyi akma hızı ile işler. Stream ederken gerekli. -s yükselik x genişlik -ar audio frame rate -ab audio bit rate -r video frame rate -b video bit rate -sameq kaynakla yanı kalitede çıktı verir. -qmin minimum kalite kaybı. Değer düştükce kalite artar. -qmax maksimum kalite kaybı. Değer düştükçe kalite artar. # Örnek avconv -i input.mp4 -threads 0 -vprofile main -preset slow \ -vcodec libx264 -b:v 512k -maxrate 512k -bufsize 1024k -vf scale=-1:480 \ -strict experimental -c:a aac -ar 44100 -ab 48k output.mp4 # vprofile high, main, baseline # preset ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow # vcodec libx264 # vf -vf scale=-1:480 -vf 'scale=720:trunc(ow/a/vsub)*vsub' # acodec libvo_aacenc # Streaming avserver avconv -re -i video.mpg -vcodec copy -acodec copy http://localhost:8090/feed1.ffm mplayer http://localhost:8090/test1.mp # goruntu kalitesi iyi ama takiliyor. avconv -i video.mpg -s 320x240 http://localhost:8090/feed1.ffm mplayer http://localhost:8090/test.asf # ses gelmiyor. mplayer http://localhost:8090/test1.mp # goruntu kalitesi dusuk. # Ekranı kaydetmek. (Stream ederken bir sorun çıkıyor) avconv -f x11grab -s wxga -r 25 -i :0.0 \ -threads 0 -preset medium \ -c:v libx264 -b 800k -r 25 \ -an \ -f flv test.flv # Kaynaklar https://www.virag.si/2012/01/web-video-encoding-tutorial-with-ffmpeg-0-9/ http://sonnati.wordpress.com/2011/07/11/ffmpeg-the-swiss-army-knife-of-internet-streaming-part-i/ http://sonnati.wordpress.com/2011/08/08/ffmpeg-–-the-swiss-army-knife-of-internet-streaming-–-part-ii/ http://sonnati.wordpress.com/2011/08/19/ffmpeg-–-the-swiss-army-knife-of-internet-streaming-–-part-iii/ http://sonnati.wordpress.com/2011/08/30/ffmpeg-–-the-swiss-army-knife-of-internet-streaming-–-part-iv/ http://ffmpeg.org/ffserver.html http://stream0.org/2009/10/22/howto_build_ffmpeg_on_debian_s/ http://rodrigopolo.com/ffmpeg/cheats.html http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/ ------------------------------------------------------------------------------- ALSA NOTLARI ------------------------------------------------------------------------------- # Yükleme aptitude install alsa-base alsa-utils # Mixerde Audio Capture'i açmak için... alsamixer F4 (Capture) Line (Line-in'den capture yapılacaksa) Aux (Aux'dan capture yapılacaksa) Mic (Mikrofondan capture yapılacaksa) Space (seçimi onaylamak için) Capture (Capture için ses ayarı) ------------------------------------------------------------------------------- TVTIME & SCANTV NOTLARI ------------------------------------------------------------------------------- # Yükleme aptitude install tvtime scantv # Yayın yapan frekansları bulma scantv -c /dev/video0 -C /dev/vbi0 veya tvtime-scanner # Yayını izleme tvtime F1 : Ana menu ESC : Çıkış n : Norm (PAL, SECAM vs) değiştirme sol-sağ ok : ses ayarları yukari, aşağı : Kanal değiştirme f : Full screen (tam ekran) s : Screnshot (ekran görüntüsünü alma) ------------------------------------------------------------------------------- MENCODER & MPLAYER NOTLARI ------------------------------------------------------------------------------- # Yükleme aptitude install -t squeeze-backports mencoder mplayer smplayer #aptitude install -t squeeze-backports mencoder mplayer2 smplayer #aptitude install mencoder mplayer # TV yayınını izleme mplayer tv:// -tv normid=5:freq=55.25:mjpeg:decimation=1:quality=70:\ alsa:amode=1:forceaudio:immediatemode=0:volume=80 normid : 5 (PAL-BG) freq : scantv ile bulunan frekans mjpeg : TV kartın üzerindenki MJPEG sıkıştırmayı kullanmak için decimation : 1 (MJPEG sıkıştırma için boyut. 1 -> 704x576 PAL) quality : JPEG sıkıştırma oranı device : aygıt (default /dev/video0) input : 0 = composite1 1 = S-video alsa . Ses için ALSA kullan forceaudio : Ses aygıtı görünmese bile sesi capture et amode : 1 (0 = MONO, 1=STEREO) immediatemode : 0 (0 = capture Audio+Video 1 = capture video, audio line-in ile...) volume : 80 (Ses oranı) "freq" kullanmayıp "-tvscan" kullanılarak mplayer ile birlikte otomatik kanal tarama başlatılabilir. # mms yayını kaydetme mencoder -nocache mms://85.111.3.55/ntv -ovc copy -oac copy -o ntv.avi mencoder -nocache mms://95.0.159.131/trtbelgesel -ovc copy -oac copy -o belgesel.avi avconv -i ntv.avi -vcodec flv -f flv -r 25 -b 512k -acodec libmp3lame -ar 44100 -ab 40k -y ntv.flv avconv -i belgesel.avi -vcodec flv -f flv -r 25 -b 775k -acodec libmp3lame -ar 44100 -ab 48k -y belgesel.flv # TV yayını kaydetme (TV tuner karti ile...) Boyutu oldukça büyük oluyor. FLV'ye çevirip kaydetmek daha mantıklı. mencoder -nocache tv:// -tv normid=5:freq=55.25:mjpeg:decimation=2:quality=50:\ alsa:amode=1:forceaudio:immediatemode=0:volume=80 \ -ovc copy -oac copy -o tv.avi mencoder -nocache tv:// -tv normid=5:freq=55.25:mjpeg:decimation=2:quality=50:\ alsa:amode=1:forceaudio:immediatemode=0:volume=80 \ -ovc copy -oac copy -o - -really-quiet | \ avconv -i - \ -vcodec flv -f flv -r 25 -b 775k \ -acodec libmp3lame -ar 44100 -ab 48k \ tv.flv # TV yayını kaydetme (Video, video capture karti ile; Audio, ses kartı line-in ile...) Videonun alındığı bağlantı noktasına göre input değeri değişir. input : 0 -> composite1, 1 -> S-Video mencoder -nocache tv:// -tv normid=5:mjpeg:decimation=2:quality=50:\ alsa:amode=1:forceaudio:immediatemode=1:volume=80 \ device=/dev/video0:input=0 \ -ovc copy -oac copy -o - -really-quiet | \ avconv -i - \ -vcodec flv -f flv -r 25 -b 775k \ -acodec libmp3lame -ar 44100 -ab 48k \ tv.flv ------------------------------------------------------------------------------- WOWZA SUNUCU NOTLARI ------------------------------------------------------------------------------- # Amazon Panel & Wowza sunucu ekleme console.aws.amazon.com EC2 panel-> EC2 Dashboard -> Launch Instance -> Community AMIs -> EBS -> ami-1de3db69 aws-marketplace/WowzaMediaServer-ebs-lickey-3.0.5-x86_64-b2efb3c5-6645-448d-b595-8eaf905de0 Termination Protection -> Enable Collector ve Repeater için ayrı firewall Tag -> Name # Repeater Firewall ayarları TCP 21 0.0.0.0/0 TCP 22 0.0.0.0/0 TCP 80 0.0.0.0/0 TCP 443 0.0.0.0/0 TCP 554 0.0.0.0/0 TCP 1935 0.0.0.0/0 TCP 8086 0.0.0.0/0 TCP 8084-8085 0.0.0.0/0 UDP 0-65535 0.0.0.0/0 # Wowza sunucuya SSH erişimi IP adresini ve keyi öğrenmek için EC2 panel -> Menu -> Instances -> Sunucu seçilecek -> Description -> Public DNS : ec2-xxx-yyy-www-zzz.compute-1.amazonaws.com (xxx.yyy.www.zzz IP adresi olarak kullanılacak) Key Pair Name: anahtar_adi EC2 Panel -> Networks & Security -> Key Pairs (Yüklenmiş olacak) ssh-add anahtar_dosyasi ssh ec2-user@xxx.yyy.www.zzz sudo sh su -l # Yüklenecek paketler yum install tmux # ulimit ayarları Açılabilir dosya adedi arttırılacak. vim /etc/security/limits.conf * soft nofile 100000 * hard nofile 100000 ulimit -a ulimit -Hn 100000 ulimit -Sn 100000 ulimit -a # Wowza collector ayarları SSH ile bağlanılır. Örnekte "emrah" adında uygulama oluşturuluyor. Başka bir isim de verilebilir. Bu örnekteki uygulama, kendisine gönderilen yayını alıp sonra yayınlayacak, yani "collector" olacak. cd /usr/local/WowzaMediaServer/applications mkdir emrah cd /usr/local/WowzaMediaServer/conf/ mkdir emrah cp live/Application.xml emrah/ vim emrah/Application.xml live-lowlatency cupertinostreamingpacketizer,smoothstreamingpacketizer,sanjosestreamingpacketizer - default: Statik Flash, H264/AAC ve MP3 dosyaları için video on demand streaming live: Canlı video yayınlamak için (one-to-many için uygun) live-lowlatency: Canlı video yayınlamak için (one-to-one veya one-to-few için uygun) live-record: live ile aynı ama videoyu kaydetme de var. liverepeater-origin: Canlı yayın aktarma için uygun. liverepeater-edge: Canlı yayın aktarma için uygun. /etc/init.d/WowzaMediaServer restart # Wowza repeater ayarları Yayını collector'den dinleyip tekrar eden uygulamaya "repeater" deniliyor. Repeater ayarları, collector gibi yapılıyor ama Application.xml dosyası aşağıdaki gibi olacak. "OriginURL" bölümünde yerel veya Internet IP adresi kullanılabilir. cd /usr/local/WowzaMediaServer/applications mkdir emrah cd /usr/local/WowzaMediaServer/conf/ mkdir emrah cp live/Application.xml emrah/ vim emrah/Application.xml liverepeater-edge cupertinostreamingrepeater,smoothstreamingrepeater,sanjosestreamingrepeater rtmp://xxx.yyy.www.zzz:1935/emrah /etc/init.d/WowzaMediaServer restart # Wowza sunucuyu restart ettirme /etc/init.d/WowzaMediaServer status /etc/init.d/WowzaMediaServer restart Uzaktan çalıştığını görmek için: curl 107.22.29.245:1935 # Stream tipine göre linkler Flash (RTMP): [protocol-method]://[wowza-address]/[application]/[application-instance]/[stream-name] rtmp://xxx.yyy.www.zzz:1935/emrah rtmp://xxx.yyy.www.zzz:1935/emrah/mp4:video.mov Flash (HTTP - San Jose Streaming): http://[wowza-address]/[application]/[application-instance]/[stream-name]/manifest.f4m http://xxx.yyy.www.zzz:1935/emrah/manifest.f4m http://xxx.yyy.www.zzz:1935/emrah/mp4:video.mov/manifest.f4m Apple iPhone, iPad, iPod touch (HTTP - Cupertino Streaming): http://[wowza-address]/[application]/[application-instance]/[stream-name]/playlist.m3u8 http://xxx.yyy.www.zzz:1935/emrah/playlist.m3u8 http://xxx.yyy.www.zzz:1935/emrah/mp4:video.mov/playlist.m3u8 Microsoft Silverlight (Smooth Streaming): GEREKSIZ http://[wowza-address]/[application]/[application-instance]/[stream-name]/Manifest http://xxx.yyy.www.zzz:1935/emrah/Manifest http://xxx.yyy.www.zzz:1935/emrah/mp4:video.mov/Manifest # Wowza Transcoder AddOn Transcoding: H264/AAC olmayan streami alıp multi-bitrate H264/AAC streame çevirir. Transrate: H264/AAC streami alıp multi-bitrate streame çevirir. ------------------------------------------------------------------------------- WOWZA SUNUCUYA STREAM GÖNDERME ------------------------------------------------------------------------------- # Wowza sunucuya avconv ile stream gönderme avconv -i video.mpg \ -vcodec flv -f flv -b 200K -r 25 \ -acodec libmp3lame -ar 20050 -ab 32K \ rtmp://xxx.yyy.www.zzz:1935/emrah/yayin1 avconv -re -i rtmp://93.187.203.125:1935/live/planet4 \ -vcodec flv -f flv -b 200K -r 25 \ -acodec libmp3lame -ar 20050 -ab 32K \ rtmp://xxx.yyy.www.zzz:1935/emrah/yayin1 avconv -re -i rtmp://93.187.203.125:1935/live/planet4 \ -vcodec copy -f flv \ -acodec copy \ rtmp://xxx.yyy.www.zzz:1935/emrah/yayin1 # Pipe kullanımı # Pipe oluşturma mkfifo pipe.mpg # Pipe üzerinden Webcam stream avconv -r 25 -f video4linux2 -i /dev/video0 \ -vcodec mpeg4 -f mpeg -b 200K -r 25 \ -acodec libmp3lame -ar 20050 -ab 32K \ -y pipe.mpg Network & Security-> Load Balancers-> Create Load Balancer Load Balancer Name: stream (HTTP, 80, HTTP, 80) (TCP, 1935, TCP, 1935) EBS ve marketplace image gerekiyor. 3.0.5 serisi olsun. http://blog.ianbeyer.com/2012/05/10/converting-ec2-s3instance-store-image-to-ebs/ ------------------------------------------------------------------------------- AMAZON S3 İÇİN WEB ARAYÜZÜ ------------------------------------------------------------------------------- # Bucket oluşturma Kontrol panel S3 sayfasından bucket oluşturulur. # Web arayüzü - Kontrol panel CloudFront sayfasından "Create Distribution" düğmesine tıklanır. - Delivery Method, depo olarak kullanılacaksa "Download", stream sunucu olarak kullanılacaksa "Streaming" seçilir. - CNAME verilir. Ornegin download.emrah.com - DNS sunucudan gerekiyorsa CNAME tanımlaması yapılır. CNAME, "Domain Name" bölümünde yer alan adrese yönlendirilir. 2sa02fs342s390.cloudfront.net benzeri bir adres... ------------------------------------------------------------------------------- NGINX-RTMP-MODULE NOTLARI ------------------------------------------------------------------------------- # Nginx'in nginx-rtmp-module desteği ile derlenmesi mkdir nginx nginx_rtmp cd nginx_rtmp wget --no-check-certificate https://github.com/arut/nginx-rtmp-module/tarball/master tar zxf master cd ../nginx apt-get source -t squeeze-backports nginx-extras cp -arp ../nginx_rtmp/arut-nginx-rtmp-module-* \ nginx-1.2.1/debian/modules/nginx-rtmp-module vim nginx-1.2.1/debian/rules config.status.extras ... ... # satir 170 --add-module=$(MODULESDIR)/nginx-rtmp-module \ --add-module=$(MODULESDIR)/nginx-rtmp-module/hls \ su - apt-get build-dep -t squeeze-backports nginx-extras aptitude install -t squeeze-backports libavcodec-dev libavformat-dev \ libavutil-dev exit cd nginx-1.2.1/ dpkg-buildpackage -rfakeroot -uc -b cd .. su dpkg -i nginx-common_1.2.1-2~bpo60+1_all.deb dpkg -i nginx-extras_1.2.1-2~bpo60+1_i386.deb # Ayarlar /etc/nginx/nginx.conf # Yeni surumde daha fazla worker kullanilabiliyor olabilir. worker_processes 1; rtmp { server { listen 1935; application live { live on; allow publish 127.0.0.1; deny publish all; allow play all; } } } /etc/init.d/nginx configtest /etc/init.d/nginx restart # Stream gönderme mencoder -nocache mms://95.0.159.138/TRTMUZIK \ -ovc copy -oac copy -o - -really-quiet | \ avconv -re -i - \ -vcodec libx264 -vprofile baseline -preset slow \ -b:v 256k -maxrate 256k -bufsize 512k \ -threads 0 \ -strict experimental -c:a aac -ar 44100 -ab 48k \ -f flv rtmp://127.0.0.1:1935/live/yayin1 # Yayınız izleme mplayer rtmp://127.0.0.1:1935/live/yayin1 # Kaynaklar https://github.com/arut/nginx-rtmp-module http://rarut.wordpress.com/ ------------------------------------------------------------------------------- FLOWPLAYER NOTLARI ------------------------------------------------------------------------------- # Örnek player sayfası (stream) IDevice bağlanmaya çalışır. Bağlanan IDevice değilse Flash'a düşer.
Canli yayin
------------------------------------------------------------------------------- # Örnek player sayfası (static)

video oynat

# Kaynaklar http://flowplayer.org/ http://flowplayer.org/plugins/javascript/ipad.html http://flowplayer.org/plugins/streaming/rtmp.html ------------------------------------------------------------------------------- JWPLAYER NOTLARI ------------------------------------------------------------------------------- # Örnek player sayfası JW Player 5 Test
# Kaynaklar http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/15995/jw-embedder-reference-guide http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/12538/supported-player-embed-methods http://www.wowza.com/forums/content.php?48-Using-JW-Player-5.x-with-Wowza-Server ------------------------------------------------------------------------------- STREAM ADRESLERİ ------------------------------------------------------------------------------- mms://85.111.3.55/ntv mms://85.111.3.55/cnbce mms://95.0.159.138/TV1 mms://95.0.159.138/TV2 mms://95.0.159.138/TRTBELGESEL mms://95.0.159.138/TRTMUZIK mms://yayin.tv-fm.com/sinema mms://yayin.tv-fm.com/belgeseltv mms://stream.hdtv1.cz/Film1cz-live rtmp://93.187.203.125:1935/live/planet4 ------------------------------------------------------------------------------- VIDEO DOSYASINA SUBTITLE GÖMME ------------------------------------------------------------------------------- subtitle.srt dosyası UTF-8 olsun. mencoder video_inp.avi -utf8 -sub subtitle.srt -o video_out.avi \ -oac pcm -ovc lavc -lavcopts vbitrate=1200