Hardware needed
Portsdown 2019
Jetson Nano (with 5v 2.5mm jack, not a micro USB PSU)
Router and Leads
Laptop/PC
Software needed
Cmake sudo apt-get install cmake
Nginx https://harry.web.id/2018/11/18/ubuntu- ... p-vod-hls/ (Only follow instructions up to add rtmp server to nginx.conf)
Ffmpeg for the Jetson Nano https://github.com/jocover/jetson-ffmpeg
OBS https://obsproject.com/download
Start with setting up a network between the computer, Jetson nano and the portsdown. If your router allows set each device up with a fixed IP as this will help with keeping the scripts happy later on.
Now install cmake, Nginx and ffmpeg on the jetson nano, your’ll need to remember where you install these as the addresses are need later on. Also install OBS on to your computer as well.
OBS Setup
Create a profile and call it something like Nano, then go to settings, stream and select service as custom. Next to server enter rtmp://Jetson nano ip address/live, so it will look something like rtmp://192.168.1.105/live. Now next to stream key type nano or whatever else you chose to call the stream. Whilst still in settings go to the video tab and set output resolution to some this sensible for the SR/FEC combo you are going to use. For FPS I find 250Ks and above 20FPS works well, whilst 15FPS is best for 125Ks and below. Next go to the output tab, output mode and select advanced. Now set up the values in the image below.
Please note these values work for me but may need tweaking for your setup. Whilst still in “output” select the audio tab and set track 1 audio bitrate to 96. You may also want to set the audio to mono in the audio tab depending on your needs.
Jetson Setup
Install cmake first then both Nginx and ffmpeg, then create a script call it SR_FEC.sh so the example below would be 333_34.sh e.g 333Ks and 3/4 FEC.
Code: Select all
#!/bin/bash
./ffmpeg/ffmpeg -i rtmp://192.168.1.105/live/nano -c:v hevc_nvmpi -preset fast -b:v 445k -maxrate 445k -bufsize 250k -muxrate 525k -c:a copy -f mpegts -mpegts_original_network_id 1 -mpegts_transport_stream_id 1 -mpegts_service_id 1 -mpegts_pmt_start_pid 4096 -streamid 0:256 -streamid 1:257 -metadata service_provider="QO-100" -metadata service_name="YOURCALL" -flush_packets 0 -f mpegts "udp://192.168.1.103:10000?pkt_size=1316"
First set the path to ffmpeg in my case its ./ffmpeg/ffmpeg. Then change the muxrate and the video bitrates (in the example above 445K). YOURCALL easy enough it’s your callsign and lastly the ip address is the ip and port address of the portsdown. To make the script executable use the command chmod +x 333_34.sh then to run type ./333_34.sh from a terminal window. On 125Ks and below it also helps to reduce the audio bitrate and this is done by replacing -c:a copy with -c:a aac -b:a 32k.
Portsdown Setup
Easy just select IPTS in on the Encoder tab and the correct frequency, SR and FEC for the script you are using on the Jetson.
Running it !
Start OBS up but don’t start streaming yet, on the Jetson open up a terminal window and start the RTMP server. On my setup that’s done with sudo /usr/local/nginx/sbin/nginx, if all goes well you should be back at a prompt. Now start your script of choice ie ./333_34.sh, then start the streaming on OBS all going well you should see the ffmpeg start processing the stream from OBS. Now just follow you normal Tx process.
Whilst this has worked on my system with the above info you may need to tweak all or some of the above to get it to work for you. Also I’m no expert on any of this and I’m sure someone can improve upon what I’ve done and any improvements will be gratefully received. Lastly have fun and keep playing.
All best John G7JTT