Tee and pad programming

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Tee and pad programming

Akmal
Hello GStreamer Team!

I referred to this webpage https://www.jetsonhacks.com/2014/10/28/gstreamer-network-video-stream-save-file/ on how to get preview, how to do recording and how to send stream to network by TCP.

As I'm on Jetson TX2, I tried the pipeline with 'nvcamerasrc' as the video source element and it works! I also modified the pipeline for video recording and for sending stream over network by TCP only without the preview queue. So, it goes like this :

gst-launch-1.0 avimux name=mux
! filesink location=/media/nvidia/SSDJetson/test.mp4 nvcamerasrc fpsRange="30.0 30.0"
! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! omxh264enc bitrate=14000000 control-rate=variable ! tee name=tsplit
! queue ! h264parse ! mux.video_0 tsplit.
! queue ! h264parse ! queue ! matroskamux
! queue leaky=2 ! tcpserversink host=192.x.x.x port=7001

Thanks to this guide, I managed to launch this on command line. I'm used to transform gstreamer pipeline into C/C++ programming code but I'm still a beginner. However, this is my first time I saw this form of pipeline where it starts with the muxer and then the "filesink" and "nvcamerasrc" elements are bordered in the same "! ...!" like this "! filesink location=/media/nvidia/SSDJetson/test.mp4 nvcamerasrc fpsRange="30.0 30.0" !". I'm not familiar at all with this form of pipeline but I wanted to transform this into code.

I have two problems, I don't know how to create the "filesink" and "nvcamerasrc" elements in the same 'gst_element_factory_make'.
Plus, I don't know how to transform "mux.video_0 tsplit." to code.

Do you have any examples on this? So far, I haven't managed to find any code examples related to this on internet.

Thanks in advance!


Akmal

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Tee and pad programming

Ian Davidson

Hi Akmal,

That pipeline indicates that there is no link between filesink and nvcamerasrc.  So, filesink is the end of a line and nvcamerasrc is the start of a new line.

The same thing happens after  h264parse ! mux.video_0

Ian


On 06/06/18 13:10, Akmal Hisyam wrote:
Hello GStreamer Team!

I referred to this webpage https://www.jetsonhacks.com/2014/10/28/gstreamer-network-video-stream-save-file/ on how to get preview, how to do recording and how to send stream to network by TCP.

As I'm on Jetson TX2, I tried the pipeline with 'nvcamerasrc' as the video source element and it works! I also modified the pipeline for video recording and for sending stream over network by TCP only without the preview queue. So, it goes like this :

gst-launch-1.0 avimux name=mux
! filesink location=/media/nvidia/SSDJetson/test.mp4 nvcamerasrc fpsRange="30.0 30.0"
! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! omxh264enc bitrate=14000000 control-rate=variable ! tee name=tsplit
! queue ! h264parse ! mux.video_0 tsplit.
! queue ! h264parse ! queue ! matroskamux
! queue leaky=2 ! tcpserversink host=192.x.x.x port=7001

Thanks to this guide, I managed to launch this on command line. I'm used to transform gstreamer pipeline into C/C++ programming code but I'm still a beginner. However, this is my first time I saw this form of pipeline where it starts with the muxer and then the "filesink" and "nvcamerasrc" elements are bordered in the same "! ...!" like this "! filesink location=/media/nvidia/SSDJetson/test.mp4 nvcamerasrc fpsRange="30.0 30.0" !". I'm not familiar at all with this form of pipeline but I wanted to transform this into code.

I have two problems, I don't know how to create the "filesink" and "nvcamerasrc" elements in the same 'gst_element_factory_make'.
Plus, I don't know how to transform "mux.video_0 tsplit." to code.

Do you have any examples on this? So far, I haven't managed to find any code examples related to this on internet.

Thanks in advance!


Akmal


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Tee and pad programming

Michael Gruner
Hi Akmal

Another easy approach is to use gst_parse_launch:


You can build the pipeline using the same description as the one you would use with gst-launch. 

Michael

On Jun 6, 2018, at 10:46, Ian Davidson <[hidden email]> wrote:

Hi Akmal,

That pipeline indicates that there is no link between filesink and nvcamerasrc.  So, filesink is the end of a line and nvcamerasrc is the start of a new line.

The same thing happens after  h264parse ! mux.video_0

Ian


On 06/06/18 13:10, Akmal Hisyam wrote:
Hello GStreamer Team!

I referred to this webpage https://www.jetsonhacks.com/2014/10/28/gstreamer-network-video-stream-save-file/ on how to get preview, how to do recording and how to send stream to network by TCP.

As I'm on Jetson TX2, I tried the pipeline with 'nvcamerasrc' as the video source element and it works! I also modified the pipeline for video recording and for sending stream over network by TCP only without the preview queue. So, it goes like this :

gst-launch-1.0 avimux name=mux
! filesink location=/media/nvidia/SSDJetson/test.mp4 nvcamerasrc fpsRange="30.0 30.0"
! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1' ! omxh264enc bitrate=14000000 control-rate=variable ! tee name=tsplit
! queue ! h264parse ! mux.video_0 tsplit.
! queue ! h264parse ! queue ! matroskamux
! queue leaky=2 ! tcpserversink host=192.x.x.x port=7001

Thanks to this guide, I managed to launch this on command line. I'm used to transform gstreamer pipeline into C/C++ programming code but I'm still a beginner. However, this is my first time I saw this form of pipeline where it starts with the muxer and then the "filesink" and "nvcamerasrc" elements are bordered in the same "! ...!" like this "! filesink location=/media/nvidia/SSDJetson/test.mp4 nvcamerasrc fpsRange="30.0 30.0" !". I'm not familiar at all with this form of pipeline but I wanted to transform this into code.

I have two problems, I don't know how to create the "filesink" and "nvcamerasrc" elements in the same 'gst_element_factory_make'.
Plus, I don't know how to transform "mux.video_0 tsplit." to code.

Do you have any examples on this? So far, I haven't managed to find any code examples related to this on internet.

Thanks in advance!


Akmal


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel