Youtube broadcast live - Massimiliano D'Ambrosio

1,446 views

Published on

Youtube broadcast live - Massimiliano D'Ambrosio

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,446
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Youtube broadcast live - Massimiliano D'Ambrosio

  1. 1. Streaming LIVE Massimiliano D’Ambrosio google.com/+MassimilianoDAmbrosio @iv3unm plus.hacklabudine.it (Community BBB Italia) plus.gdgudine.it
  2. 2. 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
  3. 3. 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
  4. 4. ● 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
  5. 5. ● 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
  6. 6. ● 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
  7. 7. ● 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
  8. 8. 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
  9. 9. ● Captions. ○ Possiamo inserire dei sottotitoli tramite HTTP POST ■ https://support.google.com/youtube/answer/3068031? topic=2853697&ctx=topic&hl=it sottotitoli
  10. 10. Passiamo a vedere il pannello degli eventi in diretta https://www.youtube.com/my_live_events Live Events
  11. 11. 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
  12. 12. 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
  13. 13. { "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" } }
  14. 14. 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
  15. 15. { "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" } } }
  16. 16. 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
  17. 17. 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
  18. 18. Domande ?
  19. 19. 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!

×