Skip to content

Video stream quality is not of 1080p #246

@Arjit0762

Description

@Arjit0762

I am trying to stream my video at 1080p , but the stream is showing like 720p. I have tried different configuration. Its not showing of that order.

My configurations

export const Livekit = ({
  key,
  publishUrl,
  isMicOn,
  useFrontCamera,
  audioSampleRate,
  noiseCancellation,
  onConnected,
  onDisconnected,
  onError,
}: LivekitProps) => {
  useKeepAwake()
  const { baseUrl, params } = useMemo(() => extractUrlParams(publishUrl), [publishUrl])
  const [retryCount, setRetryCount] = useState(0)
  const [connectionReady, setConnectionReady] = useState(false)

  useEffect(() => {
    const start = async () => {
      await AudioSession.startAudioSession()
    }

    start()
    return () => {
      AudioSession.stopAudioSession()
    }
  }, [])

  const RoomView = useCallback(() => {
    const tracks = useTracks([Track.Source.Camera])
    const room = useRoomContext()

    useEffect(() => {
      if (room?.state === "connected") {
        room.localParticipant.setCameraEnabled(true)
      }
    }, [room?.state])

    const renderTrack: ListRenderItem<TrackReferenceOrPlaceholder> = ({ item }) => {
      console.log("publication", item.publication?.isSubscribed, isTrackReference(item))

      if (isTrackReference(item) && item.publication?.isSubscribed) {
        return (
          <VideoTrack
            trackRef={item}
            style={styles.participantView}
            key={item.publication?.trackSid || item.participant.sid}
            mirror={useFrontCamera}
            objectFit="contain"
            iosPIP={{
              enabled: true,
              startAutomatically: true,
              preferredSize: {
                width: 9,
                height: 16,
              },
            }}
          />
        )
      }
      return <View style={styles.participantView} />
    }

    if (!connectionReady || !room || room.state !== "connected") {
      return (
        <View style={styles.waitingView}>
          <Text style={styles.waitingText}>Connecting...</Text>
        </View>
      )
    }

    return (
      <View style={styles.container}>
        <FlatList
          data={tracks}
          renderItem={renderTrack}
          keyExtractor={(item, index) =>
            isTrackReference(item)
              ? item.publication?.trackSid || item.participant.sid || index.toString()
              : index.toString()
          }
          contentContainerStyle={styles.flatListContent}
        />
      </View>
    )
  }, [useFrontCamera, connectionReady, key])

  return (
    <View style={{ height: heightsize, width: widthsize }}>
      <LiveKitRoom
        serverUrl={baseUrl}
        token={params?.token ?? ""}
        connect={true}
        options={{
          adaptiveStream: false,
          publishDefaults: {
            simulcast: false,
            videoEncoding: {
              maxBitrate: 4000000,
              maxFramerate: 30,
              priority: "high",
            },
            videoCodec: "av1",
            backupCodec: true,
          },
        }}
        audio={
          isMicOn
            ? {
                autoGainControl: !noiseCancellation,
                echoCancellation: noiseCancellation,
                noiseSuppression: noiseCancellation,
                voiceIsolation: noiseCancellation,
                sampleRate: audioSampleRate,
              }
            : false
        }
        video={{
          facingMode: useFrontCamera ? "user" : "environment",
        }}
        onConnected={() => {
          setRetryCount(0)
          setConnectionReady(true)
          onConnected?.()
        }}
        onDisconnected={() => {
          if (retryCount < 3) {
            setRetryCount((prev) => prev + 1)
            setTimeout(() => setConnectionReady(true), 2000)
          } else {
            onDisconnected?.()
          }
        }}
        onError={(e) => {
          setConnectionReady(false)
          onError(e)
        }}
      >
        <RoomView />
      </LiveKitRoom>
    </View>
  )
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions