youtube broadcast live - massimiliano d'ambrosio

19
Streaming LIVE Massimiliano D’Ambrosio google.com/+MassimilianoDAmbrosio @iv3unm plus.hacklabudine.it (Community BBB Italia) plus.gdgudine.it

Upload: firenze-gtug

Post on 07-Nov-2014

243 views

Category:

Technology


3 download

DESCRIPTION

Youtube broadcast live - Massimiliano D'Ambrosio 05/07/2014 - outlet dell'elettronica Cecina GDG Firenze

TRANSCRIPT

Page 1: Youtube broadcast live - Massimiliano D'Ambrosio

Streaming LIVE

Massimiliano D’Ambrosiogoogle.com/[email protected] (Community BBB Italia)plus.gdgudine.it

Page 2: Youtube broadcast live - Massimiliano D'Ambrosio

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

Page 3: Youtube broadcast live - Massimiliano D'Ambrosio

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

Page 4: Youtube broadcast live - Massimiliano D'Ambrosio

● Risoluzione Videohttps://support.google.com/youtube/answer/2853702?topic=2853713&hl=it

240p 360p 480p 720p1080p* solo la nuova

piattaforma

Risoluzione 426 x 240 640 x 360 854x480 1280x720 1920x1080

Bitrate video

Massimo700 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

Page 5: Youtube broadcast live - Massimiliano D'Ambrosio

● Impostazioni del codificatorehttps://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

Page 6: Youtube broadcast live - Massimiliano D'Ambrosio

● Impostazioni avanzate consigliatehttps://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

Page 7: Youtube broadcast live - Massimiliano D'Ambrosio

● 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

Page 8: Youtube broadcast live - Massimiliano D'Ambrosio

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

Page 9: Youtube broadcast live - Massimiliano D'Ambrosio

● Captions.

○ Possiamo inserire dei sottotitoli tramite HTTP POST■ https://support.google.com/youtube/answer/3068031?

topic=2853697&ctx=topic&hl=it

sottotitoli

Page 10: Youtube broadcast live - Massimiliano D'Ambrosio

Passiamo a vedere il pannello degli eventi in diretta

https://www.youtube.com/my_live_events

Live Events

Page 11: Youtube broadcast live - Massimiliano D'Ambrosio

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.0a. 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

Page 12: Youtube broadcast live - Massimiliano D'Ambrosio

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

Page 13: Youtube broadcast live - Massimiliano D'Ambrosio

{"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"}}

Page 14: Youtube broadcast live - Massimiliano D'Ambrosio

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

Page 15: Youtube broadcast live - Massimiliano D'Ambrosio

{"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" }}}

Page 16: Youtube broadcast live - Massimiliano D'Ambrosio

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

Page 17: Youtube broadcast live - Massimiliano D'Ambrosio

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

Page 18: Youtube broadcast live - Massimiliano D'Ambrosio

Domande?

Page 19: Youtube broadcast live - Massimiliano D'Ambrosio

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!