Pitahaya
home | info | video
Live streaming video
Pitahaya version 0.2.0 began including support for live streaming h.264 video. The browser bookmarklet is also capable of decoding a video stream in real time (more bookmarklet info). Video content encoded with Pitahaya is encoded in 'real time' and must adhere to a very specific format detailed below.
Encoding
Requires: ffmpeg and node.js. |
If running windows, install cygwin to run the commands on this page. |
The following command will live stream the input file input.avi to YouTube. Be sure to replace the string abcd-efgh-ijkl-mnop-qrst with your youtube live streaming key found on your live dashboard page.
ffmpeg -nostats -loglevel 0 -re -i input.avi -vf \
"scale=196:110:force_original_aspect_ratio=decrease,pad=196:110:(ow-iw)/2:(oh-ih)/2" \
-ar 44100 -ac 2 -c:v huffyuv -acodec pcm_s16le -r 30 -y -f avi - \
| ffmpeg -nostats -loglevel 0 -i - -g 51 -c:a aac \
-b:a 112k -ar 44100 -ac 2 -c:v libx264 -profile:v main -level 3.2 \
-pix_fmt yuv420p -preset medium -b 64k -minrate 34k -maxrate 64k -bufsize 128k \
-tune zerolatency -flags +cgop+low_delay -f mp4 -movflags \
empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof - \
| pitahaya --tx avc \
| ffmpeg -nostats -loglevel 0 -f lavfi \
-i anullsrc=channel_layout=stereo:sample_rate=44100 -framerate 4 \
-f rawvideo -pixel_format rgba -video_size 640x360 -i - -vcodec rawvideo -pix_fmt rgba \
-r 30 -f rawvideo - | ffmpeg -f lavfi \
-i anullsrc=channel_layout=stereo:sample_rate=11025 -framerate 30 \
-f rawvideo -pixel_format rgba -video_size 640x360 -i - -shortest \
-c:v libx264 -pix_fmt yuv420p -crf 27 \
-preset slow -r 30 -g 60 -f flv \
"rtmp://a.rtmp.youtube.com/live2/abcd-efgh-ijkl-mnop-qrst"
Note that you can stream to different servers, e.g. Twitch, by replacing the rtmp url on the last line, e.g. "rtmp://hou.contribute.live-video.net/app/TWITCHSTREAMKEY"
Decoding in the browser
Pitahaya encoded video can be decoded and played back in the browser using the bookmarklet.
Decoding via command line
Decode a video with the following command: (replace abcdefghijk with a valid youtube url path)
streamlink --quiet \
https://youtu.be/abcdefghij 360p -o - \
| ffmpeg -nostats -loglevel 0 \
-i - -vcodec rawvideo \
-pix_fmt rgba \
-r 16 -f rawvideo - \
| pitahaya --rx 360p \
| ffplay -nostats -loglevel 0 -
Encryption
If you want to password protect the video transmission, add a passphrase via pitahaya --tx avc somepassphrase when encoding or pitahaya --rx 360p somepassphrase when decoding. You can also type the passphrase in the bookmarklet's input field if you want to decrypt the video in the browser.