Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

What should we do to perform the video streaming ?



  • We are thinking of the video streaming in AGL environment.
    The video data is written in pipe and is H.264 format.

    When we specified pipe as the source in MediaPlayer of QML, we were able to play it for about 3 seconds but we saw the problem that the screen freezed after that.

    Could you tell us how to perform the video streaming of the data in pipe on Qt ?


  • Moderators

    @WadaTomohiko
    first of all have you made sure that your data stream isn't corrupted at some point?



  • thank you for your comment.
    I confirmed that there is no problem with the data stream.

    Save the data stream just before reading with QML MediaPlayer,
    I was able to play the saved file on Windows PC.
    The played content is not freezing the screen, and confirming that the screen is moving.


  • Lifetime Qt Champion

    Hi,

    What exactly are you using to generate that stream ?



  • @WadaTomohiko said in What should we do to perform the video streaming ?:

    I was able to play the saved file on Windows PC

    Were you able to play the saved file with the same QML player that's freezing if connected to streaming source?



  • @SGaist
    thank you for your comment.
    We would like to perform the image transfer of the smartphone screen by using SmartDeviceLink.
    The data stream written in pipe is trasmitted by Android smartphone.

    Though the detailed data content is not clear, the below shows the data format is H.264.
    https://smartdevicelink.com/en/guides/core/audio-and-video-streaming-setup/
    =>Pipe Streaming

    We were able to play the image in pipe by using Ubuntu+Gstreamer on the above site.
    I would like to achieve it by using AGL+Qt.



  • @Pablo-J.-Rogina
    thank you for your comment.

    Were you able to play the saved file with the same QML player that's freezing if connected to streaming source?

    The saved file is saved as ".h264", and it was playable also with QML MediaPlayer.
    However, unlike pipe, there is a problem because the saved file size increases.



  • @WadaTomohiko said in What should we do to perform the video streaming ?:

    The saved file is saved as ".h264", and it was playable also with QML MediaPlayer.

    In that case it looks like you don't have issues with missing decoders for the format, good.

    However, unlike pipe, there is a problem because the saved file size increases.

    I didn't follow, sorry. What do you mean? that "stream" saved to disk is larger than "stream" sent via pipe?



  • @Pablo-J.-Rogina

    What do you mean? that "stream" saved to disk is larger than "stream" sent via pipe?

    There was no difference in the data of the stream.
    Since the stream written in pipe was saved using C language "fwrite ()", it was bigger in size.
    It was my misunderstanding that there was a problem.


  • Lifetime Qt Champion

    Why not use the socket option so it can be seen as a network stream ?



  • @SGaist

    Why not use the socket option so it can be seen as a network stream ?

    Receiving the data stream from pipe is not a must, and receiving it from socket is also fine.
    Since the sample below (Ubuntu+Gstreamer) using pipe worked fine, we have been testing it with pipe.

    https://smartdevicelink.com/en/guides/core/audio-and-video-streaming-setup/

    Assuming the data stream can be received from socket, do you have any recommendations for Qt class to play the video ?
    Also, in that case, can it be achieved by Qt only ? Or do we need to use any other libraries ?



  • Assuming the data stream can be received from socket, do you have any recommendations for Qt class to play the video ?
    Also, in that case, can it be achieved by Qt only ? Or do we need to use any other libraries ?

    I have achieved the image transmission by using the combination of qtwebengine and gstreamer.
    However the transmitted image is very slow and we have the problem that it does not move smoothly.

    For the slow problem, we think the cause of the problem is the encoding operation of gstreamer. It is software-encoded by using avenc_mpeg4.
    Since it depends on the environment and is very hard to resolve, we gave up using the combination of qtwebengine and gstreamer.

    Next we come up with the idea using QtWayland, not qtwebengine.
    We recently found out about QtWayland.
    We are looking at the Qt Documentation and are trying to understand how to display the data stream from pipe or socket on QtWayland. However we are not able to find out how to do it.
    Could you tell me how to pass the data stream to QtWayland ?


  • Lifetime Qt Champion

    There's one thing that's not clear. Do you want to stream your video source as in making it available to other client applications ? Or do you want to show a video stream on the device itself ?


Log in to reply