Giter Site home page Giter Site logo

damziobro / gstreamercheatsheet Goto Github PK

View Code? Open in Web Editor NEW
193.0 10.0 33.0 2.7 MB

GStreamer pipelines and CLI commands for different GStreamer based features (process MPEG2-TS files, get video from DVB, deinterlace video, capture RTSP stream etc.)

License: MIT License

gstreamer pipelines gst rtsp hls mpegts dvb cheatsheet gstreamer-pipeline youtube

gstreamercheatsheet's Introduction

GStreamer Pipelines

Capture RTSP stream to file

pipelinePublic1

gst-launch-1.0 rtspsrc location=rtsp://10.82.131.240:8554/h264ESVideoTest ! rtph264depay ! h264parse ! mp4mux ! filesink location=file.mp4

Capture RTSP stream to files splitted to 10 seconds chunks:

pipelinePublic2

gst-launch-1.0 rtspsrc location=rtsp://10.82.131.240:8554/h264ESVideoTest ! rtph264depay ! h264parse ! splitmuxsink location=file%02d.mp4 max-size-time=10000000000 

splitmuxsink test (overwritting max 2 files)

pipelinePublic3

gst-launch-1.0 videotestsrc ! x264enc ! h264parse ! splitmuxsink location=file%02d.mp4 max-size-time=3000000000 max-files=2

Get TV Channel from DVB and save it in as series of 10sec long MPEG2-TS files

pipelinePublic4

gst-launch-1.0 dvbbasebin modulation="QAM 64" trans-mode=8k bandwidth=8 frequency=682000000 code-rate-lp=AUTO code-rate-hp=2/3 guard=4  hierarchy=0 program-numbers=4170 name=src .src ! queue ! tsdemux program-number=4170 name=d  splitmuxsink location=file_%llu.ts max-size-time=1000000000 muxer=mpegtsmux name=mux   d. ! queue ! mpegvideoparse ! queue ! mux.   d. ! queue ! mpegaudioparse ! queue ! mux.audio_%u

Create one MPEG2-TS file from series of small chunk MPEG2-TS files

pipelinePublic5

gst-launch-1.0 splitmuxsrc location=file*.ts ! filesink location=output.ts

Deinterlacing video using transcoding method

pipelinePublic6

gst-launch-1.0 filesrc location=interlaced.ts ! decodebin ! videoconvert ! deinterlace ! videoconvert ! videorate ! "video/x-raw,framerate=25/1" ! avenc_mpeg2video interlaced=false gop-size=25 bitrate=100000000 ! "video/mpeg,profile=main,level=main,parsed=true" ! mpegtsmux ! filesink location=deinterlaced.ts

Test multiplexing audio and video to .ogg file

pipeline7

gst-launch-1.0 videotestsrc ! queue ! videoconvert ! theoraenc ! queue ! oggmux name=mux autoaudiosrc ! queue ! audioconvert ! vorbisenc ! queue ! mux. mux. !  queue ! filesink location=test.ogg

Get video from camera (v4l2src) and audio from default audio source (alsasrc) and multiples them into test.ogg file

pipeline8

gst-launch-1.0 v4l2src ! queue ! videoconvert ! theoraenc ! queue ! oggmux name=mux alsasrc ! queue ! audioconvert ! vorbisenc ! queue ! mux. mux. !  queue ! filesink location=test.ogg

Decode .h264 file and play video using default gstreamer player window

pipeline9

gst-launch-1.0 filesrc location=sample.264 ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

Decode .mp4 file and play video using default gstreamer player

pipeline10

gst-launch-1.0 filesrc location=sample.mp4 ! qtdemux name=demux demux.audio_00 ! queue ! avdec_aac ! audioconvert ! alsasink demux.video_00 ! queue ! avdec_h264 ! videoconvert ! autovideosink

Play video only from .mp4 file

pipeline11

gst-launch-1.0 filesrc location=sample.mp4 ! qtdemux name=demux ! queue ! avdec_h264 ! videoconvert ! autovideosink

RTP/UDP Streaming of H.264 content - Server

pipeline12

gst-launch-1.0 -v videotestsrc ! x264enc ! rtph264pay pt=96 ! udpsink host=192.168.0.10 port=5000

RTP/UDP Streaming of H.264 content - Client

pipeline13

gst-launch-1.0 -v udpsrc port=5000 caps=application/x-rtp ! rtph264depay ! avdec_h264 ! autovideosink

Play HLS (Http Live Streaming) URL using GStreamer pipeline

pipeline14

gst-launch-1.0 souphttpsrc is-live=true location=http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 ! hlsdemux ! decodebin ! videorate ! videoconvert ! ximagesink

Play Youtube Live stream as HLS video using GStreamer

pipeline14

gst-launch-1.0 souphttpsrc is-live=true location="$(youtube-dl -f 94 -g 'https://www.youtube.com/watch?v=y60wDzZt8yg')" ! hlsdemux ! tsdemux name=mux mux. ! "video/x-h264,framerate=25/1" ! queue ! h264parse ! avdec_h264 ! videorate ! videoconvert ! ximagesink

Capture your desktop and save into avi file

pipeline15

gst-launch-1.0 ximagesrc use-damage=0 ! video/x-raw,framerate=30/1 ! videoconvert ! x264enc ! avimux ! filesink location=out.avi

Create live stream and stream it into Facebook Live streaming service

gst-launch-1.0 flvmux name=mux streamable=true ! rtmpsink location="<rtmp_url_for_fblive>" videotestsrc is-live=true ! "video/x-raw,width=1280,height=720,framerate=30/1" ! identity sync=true ! x264enc bitrate=2500 key-int-max=60  ! video/x-h264,profile=high ! h264parse ! queue ! mux. audiotestsrc is-live=true ! audio/x-raw,rate=44100,channels=2 ! identity sync=true ! voaacenc bitrate=128000 ! queue ! mux.

gstreamercheatsheet's People

Contributors

damziobro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gstreamercheatsheet's Issues

[Feature Request] Looking for a gstreamer pipeline for encoding multiple video stream variants for an mpegts feed

Hello there,

Take this ffmpeg example which can encode an ingest (udp) to an mpegts feed with all audio & video variants muxed in:

/root/bin/ffmpeg -loglevel debug -threads 4 -filter_complex_threads 4 -fflags +genpts+nobuffer -i '$channel_udp_stream?fifo_size=9000000' -filter_complex \
"['$video_stream_id']split=3[s0][s1][s2]; \
 [s0]yadif[v0]; \
 [s1]yadif[v1]; \
 [s2]scale=w=1280:h=720:force_original_aspect_ratio=decrease:flags=lanczos,yadif[v2]" \
-bsf:a aac_adtstoasc \
-b:v:0 1500k -c:v h264_nvenc -a53cc 1 -preset slow -rc:v vbr_hq -pix_fmt yuv420p -profile:v main -level 4.0 -gpu 1 \
-b:v:1 1000k -c:v h264_nvenc -a53cc 1 -preset slow -rc:v vbr_hq -pix_fmt yuv420p -profile:v main -level 4.0 -gpu 2 \
-b:v:2 625k -c:v h264_nvenc -a53cc 1 -preset slow -rc:v vbr_hq -pix_fmt yuv420p -profile:v main -level 4.0 -gpu 3 \
-b:a:0 256k -b:a:1 192k -b:a:2 128k -c:a aac -ar 48000 \
-f mpegts \
"udp://$ip-address:$port"

The snippet above takes one ingest, uses a complex filter to create three variants that are encoded by the h264_nvenc encoder for video and three separate audio streams (already present in the input mpegts feed), and then muxes the result into an mpegts stream over udp.

How can I do something similar with gstreamer, using x264enc and faac elements, using the appropriate muxer?

[Feature Request] Looking for v4l2 source over mpegts to chunked html

This is neat. I'm hoping I can get some help, I'm looking for the gstreamer equivalent of

ffmpeg -f v4l2 -framerate 20 -video_size 320x240 -i /dev/video0 -f mpegts -codec:v mpeg1video -s 320x240  "http://example.com:8888/stream?id=s93dd21a"

The http server will be rebroadcasting this to the client's side playing on jsmpeg player https://github.com/phoboslab

Or if you have any ideas on how to use a MJPEG based pipeline.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.