Youtube broadcast live - Massimiliano D'Ambrosio
Upcoming SlideShare
Loading in...5
×
 

Youtube broadcast live - Massimiliano D'Ambrosio

on

  • 156 views

Youtube broadcast live - Massimiliano D'Ambrosio

Youtube broadcast live - Massimiliano D'Ambrosio

05/07/2014 - outlet dell'elettronica Cecina
GDG Firenze

Statistics

Views

Total Views
156
Views on SlideShare
152
Embed Views
4

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 4

http://www.slideee.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Youtube broadcast live - Massimiliano D'Ambrosio Youtube broadcast live - Massimiliano D'Ambrosio Presentation Transcript

  • Streaming LIVE Massimiliano D’Ambrosio google.com/+MassimilianoDAmbrosio @iv3unm plus.hacklabudine.it (Community BBB Italia) plus.gdgudine.it
  • da Google+ Hangouts con la possibilità di avere il link diretto al nostro canale ma abbiamo anche la possibilità per un uso professionale di broadcasting Streaming degli eventi in diretta su
  • Premesso che dai primi di gennaio 2014 è stato esteso, in modo graduale, la possibilità di fare streaming a tutti gli utenti che hanno un canale su YouTube Cosa serve per fare streaming su YouTube per uso professionale fino a 6 sorgenti video? ● account Google ● un canale YouTube ● verificare sotto Impostazioni canale > funzioni che si attiva la voce eventi dal vivo - https://www.youtube.com/features ○ solo se il tuo canale ha una buona reputazione - https://support.google. com/youtube/answer/2474026?hl=it ● passate poi sotto Gestione Video > eventi dal vivo ○ https://www.youtube.com/my_live_events ○ da qui è possibile creare e gestire i propri eventi dal vivo ○ è possibile fare questo anche tramite le API... ■ https://developers.google.com/youtube/v3/live/ ● usare un software di acquisizione audio/video e che trasmetta il flusso video ad un server Real Time Messaging Protocol (RTMP) ○ http://it.wikipedia.org/wiki/Real_Time_Messaging_Protocol ● rispettare alcuni requisiti tecnici
  • ● Risoluzione Video https://support.google.com/youtube/answer/2853702?topic=2853713&hl=it 240p 360p 480p 720p 1080p* solo la nuova piattaforma Risoluzione 426 x 240 640 x 360 854x480 1280x720 1920x1080 Bitrate video Massimo 700 Kbps 1000 Kbps 2000 Kbps 4000 Kbps 6000 Kbps Raccomandato 400 Kbps 750 Kbps 1000 Kbps 2500 Kbps 4500 Kbps Minimo 300 Kbps 400 Kbps 500 Kbps 1500 Kbps 3000 Kbps ● per il bitrate va tenuto presente che: ○ ci sono due stream, il principale e quello di backup (facoltativo). Se si utilizza anche il secondo i valori si raddoppiano ○ vanno moltiplicati per ogni sorgente video (telecamera). Abbiamo uno stream principale + eventuale backup per sorgente. ○ la larghezza di banda necessaria deve tenere presente di questo ● con la nuova piattaforma tutti i formati inferiori vengono creati automaticamebte da YouTube Requisiti tecnici
  • ● Impostazioni del codificatore https://support.google.com/youtube/answer/2853702?topic=2853713&hl=it Requisiti tecnici Protocollo: RTMP Flash Streaming Codec video: H.264, Main 4.1 Frequenza dei fotogrammi: 30 fps Frequenza dei fotogrammi chiave: (Keyframe frequency) =< 2 secondi Codec audio: AAC-LC (Audio richiesto) Frequenza di campionamento audio 44.1 kHz Bitrate audio: Stereo a 128 Kbps
  • ● Impostazioni avanzate consigliate https://support.google.com/youtube/answer/2853702?topic=2853713&hl=it Requisiti tecnici Pixel aspect ratio: Square Frame types: Progressive Scan, 2 B-Frames, 1 Reference Frame Entropy coding: CABAC
  • ● Software per lo stream via RTMP. ○ Wirecast for Youtube ■ disponibile per Mac e MS-Windows ■ disponibile in tre versioni: ● Free ● Studio (a pagamento) ● Pro (a pagamento) ■ http://www.telestream.net/wirecastforyoutube/cb-landing.htm ○ Flash Media Live Encoder ■ disponibile per Mac e MS-Windows ■ gratuito ■ http://www.adobe.com/it/products/flash-media-encoder.html ○ entrambi sono predefiniti dalla configurazione dal mio panello sotto I My Live Event ● la terza opzione del pannello riguarda la possibilità di configurare altri encoder con supporto RTMP ○ come FFMpeg/LibAV disponibili anche per GNU/Linux ○ app per Android Requisiti tecnici
  • Software per lo stream via RTMP opensource ● FFMpeg ○ http://ffmpeg.org/ ● LibAV Folk di FFMeg ○ https://libav.org/ ● forniscono tools e librerie per manipolare diversi formati multimediali. Permetto anche di gestire diversi protocolli ● sono multi piatatforma ● ci sono anche dei front-end per chi non vuole usarli da riga di comando ● Esempio del comando: :~$ avconv -f video4linux2 -i /dev/video0 -vcodec libx264 -crf 25 -preset veryfast -s 640x360 -acodec libmp3lame -ar 44100 -b 650k -pix_fmt yuv420p -s 426x240 -b 400k -r 30 -g 50 -f flv "rtmp://a.rtmp.youtube.com/live2/NOME_STREAM" Requisiti tecnici
  • ● Captions. ○ Possiamo inserire dei sottotitoli tramite HTTP POST ■ https://support.google.com/youtube/answer/3068031? topic=2853697&ctx=topic&hl=it sottotitoli
  • Passiamo a vedere il pannello degli eventi in diretta https://www.youtube.com/my_live_events Live Events
  • Possibile fare questo anche tramite le API Live di YouTube... https://developers.google.com/youtube/v3/live/ Ci sono tre passaggi fondamentali da fare: 1. autenticasi ed ottenere le credenziali tramite le oAuth2.0 a. https://developers.google.com/accounts/docs/OAuth2 2. creare la nostra trasmissione broadcast tramite API youtube. liveBroadcasts 3. creare i stream video, quindi le nostre sorgenti video. Questo si fa usando le API youtube.liveStreams 4. Unire (bind) gli stream con la nostra trasmissione broadcast creata al punto 1. Anche qui si usano le API youtube.liveBroadcasts 5. Inviare il nostro video al server rtmp API
  • youtube.liveBroadcasts.insert //creamo una nuova trasmissione broadcast part="snippet, status", { "snippet": { "scheduledEndTime": "2014-07-06T11:00:00+0200", "scheduledStartTime": "2014-07-06T10:30:00+0200", "title": "Talk Youtube API Live", "description": "Talk sulle Youtube API a Cecina" }, "status": { "privacyStatus": "private" } } https://developers.google.com/apis-explorer/#p/youtube/v3/ API
  • { "kind": "youtube#liveBroadcast", "etag": ""3enKTWw-I-yugKAPnlrhH5U04vQ/nv7cwmGKicZYNqDPwlPAWGHTQ6Y"", "id": "W12_UDrZj_s", "snippet": { "publishedAt": "2014-06-30T05:11:46.000Z", "channelId": "ID_del_vostro_canale_YouTube", "title": "Talk Youtube API Live", "description": "Talk sulle Youtube API a Cecina", "thumbnails": { "default": { "url": “url_immagine_copertina-profilo” "width": 120, "height": 90 }, "medium": { "url": “url_immagine_copertina-profilo” "width": 320, "height": 180 }, "high": { "url": “url_immagine_copertina-profilo” "width": 480, "height": 360 } }, "scheduledStartTime": "2014-07-06T08:30:00.000Z", "scheduledEndTime": "2014-07-06T09:00:00.000Z" }, "status": { "lifeCycleStatus": "created", "privacyStatus": "private", "recordingStatus": "notRecording" } }
  • youtube.liveStreams.insert //creamo una nuovo stream audio/video part="snippet,cdn", { "cdn": { "format": "360p", "ingestionType": "rtmp" }, "snippet": { "title": "stream01" } } https://developers.google.com/apis-explorer/#p/youtube/v3/ API
  • { "kind": "youtube#liveStream", "etag": ""3enKTWw-I- yugKAPnlrhH5U04vQ/L1x7N336PRWvDXPgh4DjFYkQ0B0"", "id": "UUNs5ES6Y9iKcz4_cvfmOg1404106567969533", "snippet": { "publishedAt": "2014-06-30T05:36:08.000Z", "channelId": "ID_del_vostro_canale_YouTube", "title": "stream01", "description": "" }, "cdn": { "format": "360p", "ingestionType": "rtmp", "ingestionInfo": { "streamName": "iv3unm.7a36-rp8e-z3r1-35rj", "ingestionAddress": "rtmp://a.rtmp.youtube.com/live2", "backupIngestionAddress": "rtmp://b.rtmp.youtube.com/live2? backup=1" } } }
  • youtube.liveBroadcasts.bind //uniamo lo stream al broadcast part="id,contentDetails", Parametri da inviare // ID del broadcast creato prima "id_broadcast": "W12_UDrZj_s" // ID del stream "id_stream": "UUNs5ES6Y9iKcz4_cvfmOg1404106567969533", API
  • Ora non ci resta che mandare lo stream audio/video su: "cdn": { "format": "360p", "ingestionType": "rtmp", "ingestionInfo": { "streamName": "iv3unm.7a36-rp8e-z3r1-35rj", "ingestionAddress": "rtmp://a.rtmp.youtube.com/live2", "backupIngestionAddress": "rtmp://b.rtmp.youtube.com/live2? backup=1" } } // parte della risposta JSON ricevuta quando abbiamo creato lo stream Streaming
  • Domande ?
  • massimiliano@beaglebone:~$ cat contact.json { "Name":"Massimiliano D'Ambrosio", "G+":"google.com/+MassimilianoDAmbrosio", "Twitter":"@iv3unm", "HackLab Udine": { "Site":"www.hacklabudine.it", "G+":"plus.hacklabudine.it", "Twitter":"@hacklabudine", "memo":"unOfficial Community BeagleBone Italia" }, "Google Developer Group Udine": { "Site":"www.gdgudine.it", "G+":"plus.gdgudine.it", "Twitter":"@gdgudine" } } massimiliano@beaglebone:~$ sudo shutdown now [sudo] password for massimiliano: Broadcast message from root@beaglebone (pts/0) (Sat May 10 20:33:39 2014): The system is going down to maintenance mode NOW!