...
Note |
---|
Since an RTMP stream is sent from an encoder to Phenix via RTMP, the encoder must be set up to send its output to Phenix. This means that, while the Phenix Customer Portal can be used to obtain information such as the stream key, the Portal’s publishing tab cannot be used to publish RTMP to the Phenix platform. |
The examples shown below include optional “tags” for completeness.
Encoder Configuration for RTMP Ingest
...
When using single-bitrate output (i.e., when the multi-bitrate capability is not set), the video quality/resolution is not changed; that is, the same video quality input is the quality that is output, even if the quality or encoding-profile is set.
For example, if FHD video is provided to Phenix via SRTRTMP, and the output quality is set to SD, the output will be FHD.
...
Protocol="RTMP"
Key points for smooth playback:
Scene Change Detection="off"
Use Baseline Profile of H.264
GOP Size(keyframe interval)="1 Sec"
Repeat PPS=True #Places a PPS header on each encoded picture, even if repeated.
Slices="1"
Adaptive Quantization="Auto"
Use AAC-LC Stereo 128kbps Sample Rate "48kHz"
vMix
To ensure minimal latency, use the following recommended settings for vMix:
Video Bit Rates: 2500, Encode Size 1280x720, Audio Bit Rate 128
Video
Profile: Baseline
Level: 2/1
Preset: ultrafast
Audio
Format: AAC
Keyframe Frequency: 1 second
Network Buffer: the lowest setting allowed
Check both boxes for Strict CBR and Keyframe Aligned
...
FFMPEG
When using ffmpeg, be sure to use the zerolatency option to get real-time output. This is not set automatically. Without the zerolatency setting the encoder will introduce 0.5 seconds of end-to-end latency out of the gate. Please refer to the ffmpeg documentation for details.
...
ffmpeg -re -f lavfi -i testsrc=size=1280x720:rate=30 -f lavfi -i aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)" -pix_fmt yuv420p -vcodec libx264 -profile:v baseline -deblock 1:0 -bitrate 500k -tune zerolatency -x264opts keyint=30 -acodec aac -ar 48000 -ac 2 -b:a 128k -f flv rtmp://ingest.phenixrts.com:80/ingest/96characterStreamKey;capabilities=hd,multi-bitrate,prefer-h264,mpegts-multicastunicast-ingest;tags=my-awesome-stream-id,MyAppId
Where : 96characterStreamKey is the stream key to be used when publishing. This can be found in the Customer Portal under the Properties tab for a Channel or Room.
...
To measure latency, add a timestamp overlay:
ffmpeg -re -f lavfi -i testsrc=size=1280x720:rate=30 -f lavfi -i aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)" -pix_fmt yuv420p
-vf "drawtext=text='timestamp: %{pts \: hms}': x=20: y=20: fontsize=72:fontcolor=white@0.9: box=1: boxcolor=black@0.6" -vcodec libx264 -profile:v baseline -deblock 1:0 -bitrate 500k -tune zerolatency -x264opts keyint=30 -acodec aac -ar 48000 -ac 2 -b:a 128k -f flv rtmp://ingest.phenixrts.com:80/ingest/96characterStreamKey;capabilities=hd,multi-bitrate,prefer-h264,mpegts-multicast,mpegts-unicast-ingest;tags=my-awesome-stream-id
Note |
---|
On MacOS and Linux, you may need to add quotation marks around the second argument in order to not lose information after the semicolon: |
...
|
Where : 96characterStreamKey is the stream key to be used when publishing. This can be found in the Customer Portal under the Properties tab for a Channel or Room.
...
...
API Usage
For details on API usage, please refer to https://phenixrts.com/docs/api/?http#rtmp-ingest . To take advantage of Real-time RTMP, you must include the mpegts-multicastunicast-ingest
capability.
Example
...
rtmp://ingest.phenixrts.com:80/ingest/
96characterStreamKey;capabilities=hd,multi-bitrate,prefer-h264,mpegts-multicastunicast-ingest;tags=my-awesome-stream-id,
MyAppId
Where : 96characterStreamKey is the stream key to be used when publishing. This can be found in the Customer Portal under the Properties tab for a Channel or Room.
...