This message was deleted.
# helpdesk
s
This message was deleted.
d
can you please thread the logs? 🙏
p
time="2022-11-23T164545Z" level=info msg="Change state: From = <Unknown>, To = NotConnected(Server)" state="NotConnected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg=Connect state="NotConnected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Set win ack size: Size = 2147483647" state="NotConnected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Set peer bandwidth: Size = 786432, Limit = 0" state="NotConnected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Stream Begin: ID = 0" state="NotConnected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Connect: ResponseBody = &message.NetConnectionConnectResult{Propertiesmessage.NetConnectionConnectResultProperties{FMSVer\"GO-RTMP/0,0,0,0\", Capabilities:31, Mode:1}, Informationmessage.NetConnectionConnectResultInformation{Level\"status\", Code:\"NetConnection.Connect.Success\", Description:\"Connection succeeded.\", Data:amf0.ECMAArray{\"type\":\"go-rtmp\", \"version\":\"master\"}}}" state="NotConnected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg=Connected state="NotConnected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Change state: From = NotConnected(Server), To = Connected(Server)" state="Connected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Handle WinAckSize: Msg = &message.WinAckSize{Size:786432}" state="Connected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Stream creating...: &message.NetConnectionCreateStream{}" state="Connected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Change state: From = <Unknown>, To = Inactive(Server)" state="Inactive(Server)" stream_id=1 time="2022-11-23T164545Z" level=info msg="Stream created...: NewStreamID = 1" state="Connected(Server)" stream_id=0 time="2022-11-23T164545Z" level=info msg="Player is comming: &message.NetStreamPlay{CommandObject:interface {}(nil), StreamName:\"\", Start:-2000}" state="Inactive(Server)" stream_id=1 time="2022-11-23T164545Z" level=info msg="Player accepted" state="Inactive(Server)" stream_id=1 time="2022-11-23T164545Z" level=info msg="Change state: From = Inactive(Server), To = Play(Server)" state="Play(Server)" stream_id=1 time="2022-11-23T164549Z" level=info msg="Server closed" {"level":"info","ts":1669221949.5405855,"logger":"ingress","caller":"rtmp/server.go:286","msg":"closing ingress RTMP session","nodeID":"NE_aSPrT7djpb7R"} [4:51 PM] All ingresses created never change state from inactive: [4:51 PM] +-----------------+--------------+--------------+---------------+-------------------+-------+ | INGRESSID | NAME | STREAMKEY | URL | STATUS | ERROR | +-----------------+--------------+--------------+---------------+-------------------+-------+ | IN_4YMFeD27tWLc | ingress-name | Lh8aoyS4bABm | /Lh8aoyS4bABm | ENDPOINT_INACTIVE | | | IN_TwJ6jDpUzUSP | ingress-name | nb7kynmhXsGn | /nb7kynmhXsGn | ENDPOINT_INACTIVE | | | IN_yCQHNQv87Bzn | ingress-name | qAMUQuajHQhK | /qAMUQuajHQhK | ENDPOINT_INACTIVE | | | IN_nuondH2eKtuY | ingress-name | Ahe7L8duLbsn | /Ahe7L8duLbsn | ENDPOINT_INACTIVE | | | IN_J88jn5FPFXsD | ingress-name | Wwr2UwHcnKvh | /Wwr2UwHcnKvh | ENDPOINT_INACTIVE | | | IN_nWiYbRKzPVJE | ingress-name | jgPc3bN8McQV | /jgPc3bN8McQV | ENDPOINT_INACTIVE | | +-----------------+--------------+--------------+---------------+-------------------+-------+
a
Can you paste in the ingress request that you're sending?
p
Copy code
{
  "name": "ingress-name",
  "room_name": "test-room",
  "participant_identity": "ingress",
  "participant_name": "Ingress",
  "audio": {
    "name": "ingress-audio",
    "bitrate": 64000,
    "channels": 2
  },
  "video": {
    "name": "ingress-video"
  }
}
c
What rtmp url / stream key are you using?
Also, the logs above mention that the peer is attempting to play, not publish. What is the RTMP client? How is it being used?
p
We have tested several diferent ingresses with diferent names and respective stream keys. Currently we are using ffmpeg to stream h264/aac HD rtmp into the ingress. Is there any specifics that the pyblisher should be compliant?
c
ffmpeg works
But again, what URL are you using? This may or may not be the only issue, but you need to make sure that the URL includes an application name
The fact ffmpeg attempts to play the url instead of publishing points to a setup issue with ffmpeg
Can't tell more without the URL / command line
You may already be aware of this, but this basic instructions should work: https://ottverse.com/rtmp-streaming-using-ffmpeg-tutorial/
In this example "show" is the application name. While some rtmp libraries seem to work without one, having an application name is part of the RTMP spec and ffmpeg requires one
p
I ll make some more tests
n
c
Right, you need an application name in your URL
anything
n
and the ingest list: | IN_yyysdvniJ4MN | ingress2 | X5DBoBPXSPhj | /X5DBoBPXSPhj | ENDPOINT_INACTIVE |
p
Ok, we re missing the app name
Let us try again
c
You should set the `rtmp_base_url`to rtmp.xxxxxxxxxxxxx.com:1935/app_name in the livekit conf if you want the URL reported above to be valid
There is also no real standard about how to represent rtmp URLs. In the first release, we've been using rtmp://server/app_name/stream_key as ffmpeg expects. We have an unreleased change where the URL is rtmp://server/app_name and stream_key is an extra field, as OBS and most other services use
n
OK, Using OBS it works well, is there a way to do it with ffmpeg? so we could do: rtmp.xxxxxxxxxxxxx.com:1935/app_name/&lt;streamID>
c
It should be working with ffmpeg as well provided proper pipeline setup and providing an app_name. Have you tried a very basic pipeline as described in the website above?
n
We found the issue… it was a problem between the keyboard and the chair 🙂
a
😂
n
the ingress is re-encoding the stream, is there a way to control the quality of this encoding?
or to just make a copy of the input to the output. Using gtreamer is adding additional delay and one more encoding step, so less quality
c
The encoding parameters are port of the create/update ingress request
n
can you please share the syntax for that config?
c
The protocol definition is always the best reference: https://github.com/livekit/protocol/blob/main/livekit_ingress.proto
Actual syntax will depend on the language you are using.
Regarding disabling transcoding, that's something that we may allow in the future, but there are so many way to get these wrong in a way that would affect functionality and performance that we'd like to be sure there is a real use case first, and that the service is stable enough first
This would also prevent PLIs, so join time and recovery from packet loss would be impacted
n
does it mean that on the json file used to create the Ingress we can define the diferent output streams?
c
Are you using the cli to create the ingress?
n
yes
c
so yes, you would add it to the request json
n
can you share an example?
c
I don't have one handy right now. I'll try to put something together when I have some time. But the proto -> json translation is fairly mechanical and documented
a
p
Thanks for the help. We managed to make it work with live feeds.
👌 1