Skip to content

Instantly share code, notes, and snippets.

@max-mapper
Last active May 21, 2022 11:02
Show Gist options
  • Save max-mapper/69e4ae18a32d7efd00d9 to your computer and use it in GitHub Desktop.
Save max-mapper/69e4ae18a32d7efd00d9 to your computer and use it in GitHub Desktop.
ffmpeg youtube live event rtmp stream from raspberry pi with raspi camera (raspivid)
  1. compile ffmpeg for arm https://github.com/fiorix/ffmpeg-arm
  2. create youtube 'live event'. get rtmp url + session id
  3. run this:
raspivid -o - -t 0 -vf -hf -fps 30 -b 6000000 | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i - -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/<SESSION>

you can tweak -b and -fps to your liking. the settings above work well for 1080p. by not specifying width or height we get the full 1920x1080 resolution from the raspi camera

note: it might work with libav-tools instead of ffmpeg (ffmpeg isnt on apt-get in raspbian) but I haven't tested it

example video created using above method: https://www.youtube.com/watch?v=Xn4yNavjdR4&t=28m0s

@thebestapp
Copy link

Hi, take a look at this one, live streaming for youtube - https://yatko.com/goLive

@neilzheng
Copy link

Hi, lib-avtools from raspbian jessie official repo not working, from my test.
Rtmp video plays in VLC, but only the first frame(s), picture stays still.
FFmpeg works fine.

@hblanken
Copy link

Thank you so much @maxogden and @neilzheng. I have tried many days to get avconv to work with youtube. It streams fine from Pi3, but youtube never displays any video. It also streams well to facebook. I almost gave up. Then I read this thread, and compiled ffmpeg. Now it works flawlessly. Thanks!
ffmpeg gives me this warning - I am not sure what to do about it. Any suggestions?

[flv @ 0x1cb1370] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[h264 @ 0x1b77510] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)

@o2bnmaine
Copy link

I was able to get ffmpeg set up using http://www.jeffreythompson.org/blog/2014/11/13/installing-ffmpeg-for-raspberry-pi/. It worked pretty well, and as he points out it goes a lot faster if you use make -j4 (to use 4 cpus). Now to figure out why YouTube doesn't seem to stream very smoothly. I have -b 100000 to reduce quality and it still buffers for a very long time. I can see I'm not using 100% of my upload bandwidth, so I'm not sure what's up.

Still, this is progress!! Thanks for the help with this. I'll keep plugging away at it to see if I can get the buffering to go away.

o2bnMaine

@zomerfeld
Copy link

@o2bnmaine - I'm having the same issue. Did you find a solution?

@wassimmeziou
Copy link

it has a late streaming for 20-30 secconds any idea !

@gsthina
Copy link

gsthina commented Jun 15, 2017

It's all working good. Is there any way to define a custom URL to stream? Or at least, can we get the URL of the video by code?

@ikenti
Copy link

ikenti commented Mar 13, 2018

Hi, it works for me but how do you had a sound recorded from a mic to the video? Thanks.

@ethaniel
Copy link

Did you manage to get live true 1080p using this method?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment