This module contains an implementation of Cast Streaming, the real-time media streaming protocol between Cast senders and Cast receivers.
Included are two applications, cast_sender and cast_receiver that demonstrate how to send and receive media using a Cast Streaming session.
To run the cast_sender and cast_receiver, you first need to install external libraries.
Putting this together with the external libraries configuration, a complete GN configuration might look like:
is_debug=true have_ffmpeg=true have_libsdl2=true have_libopus=true have_libvpx=true
This can be done on the command line as:
$ mkdir -p out/Default $ gn gen --args="is_debug=true have_ffmpeg=true have_libsdl2=true have_libopus=true have_libvpx=true" out/Default $ autoninja -C out/Default cast_sender cast_receiver
To use the sender and receiver application together, a valid Cast certificate is required. The easiest way to generate the certificate is to just run the cast_receiver with -g, and both should be written out to files:
$ ./out/Default/cast_receiver -g
[INFO:../../cast/receiver/channel/static_credentials.cc(161):T0] Generated new private key for session: ./generated_root_cast_receiver.key
[INFO:../../cast/receiver/channel/static_credentials.cc(169):T0] Generated new root certificate for session: ./generated_root_cast_receiver.crt
In addition to the certificate, to start a session you need a valid network address and path to a video for the sender to play. Note that you may need to enable permissions for the cast receiver to bind to the network socket.
$ ./out/Default/cast_receiver -d generated_root_cast_receiver.crt -p generated_root_cast_receiver.key lo0 $ ./out/Default/cast_sender -d generated_root_cast_receiver.crt -r 127.0.0.1 ~/video-1080-mp4.mp4
TODO(https://issuetracker.google.com/197659238): Fix discovery mode for cast_sender.
To determine which video codec to use, the -c or --codec flag should be passed. Currently supported values include vp8, vp9, and av1:
$ ./out/Default/cast_sender -d generated_root_cast_receiver.crt -r 127.0.0.1 -c av1 ~/video-1080-mp4.mp4
When running on Mac OS X, also pass the -x flag to cast_receiver to disable DNS-SD/mDNS, since Open Screen does not currently integrate with Bonjour.
The script standalone_e2e.py exercises the Cast Sender sender and receiver through an end-to-end test.