Git Product home page Git Product logo

gfto / mptsd Goto Github PK

View Code? Open in Web Editor NEW
53.0 13.0 40.0 181 KB

mptsd receives mpegts streams from udp/multicast or http and combines them into one multiple program stream that is suitable for outputing to DVB-C modulator. It is tested with Dektec DTE-3114 Quad QAM Modulator and it is used in production in couple of small DVB-C networks.

Home Page: http://georgi.unixsol.org/programs/mptsd/

License: GNU General Public License v2.0

C 96.69% Shell 2.41% Makefile 0.90%

mptsd's Introduction

mptsd
=====
mptsd receives mpegts streams from multicast (udp/rtp) or http and combines
them into one multiple program stream that is suitable for outputing to DVB-C
modulator. It is tested with Dektec DTE-3114 Quad QAM Modulator and it
is used in production in couple of small DVB-C networks.

Installation
============
mptsd do not depend on any external libraries. There are two source code
dependancies that come with mptsd - libfuncs and libtsfuncs.

Make sure your kernel has CONFIG_HIGH_RES_TIMERS enabled. Otherwise sleep
timeout probably won't be able to calibrate itself and mptsd will not work.

Documentation
=============
mptsd is controlled using command line parameters. Run mptsd to see all of
the parameters and explanation what every one of them does. Also there
are 4 configuration files. In the distribution there are example files that
you can change to suit your needs.

  mptsd.conf          - This file configures the network_id in outputed
                        NIT table and also MPEG PSI tables playout timeouts.

  mptsd_nit.conf      - Configures NIT table output.

  mptsd_channels.conf - Configure inputs, SDT provider name and transport_stream_id

  mptsd_epg.conf      - Configures EIT current/next tables. This file is auto
                        reloaded when it is changed. This allows EPG in output
                        to work.

One mptsd instance should be used for each transponder.

Output Stream
=============
mptsd can achieve perfect PCR restamping to output using "-m 3".
This is useful for hardware modulators that require correct PCR values
(most cheap modulators do, so always use "-m 3" with them).
mptsd was tested and found to be working ok with Dektec DTE-3114 & HiDes UT-100C.

To enable RTP output instead of plain UDP for network streams,
specify the SSRC identifier via the -s flag (must be != 0).

Development
===========
The development is tracked using git. The repository is hosted at github
to get it, run the following command:

   git clone git://github.com/gfto/mptsd.git
   git submodule init
   git submodule update
     OR
   git submodule update --recursive --remote  // if you like to checkout HEAD submodules.

Compiling
=========
After cloning the git repository as described in Development section
just run `make`.

Releases
========
Official releases can be downloaded from tsdecrypt home page which is:

   http://georgi.unixsol.org/programs/mptsd/

Contact
=======
For patches, bug reports, complaints and so on send e-mail to:

   Georgi Chorbadzhiyski <[email protected]>

mptsd's People

Contributors

amdmi3 avatar freddy36 avatar gfto avatar gvangool avatar lars18th avatar ningpeng avatar nrmmota 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

Watchers

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

mptsd's Issues

Reserve PID Info

Hello,

Is there any method to preserve incoming source stream's PID Info (Video PID, Audio PID, Service ID) instead of overwriting new values ?

Thx,

epg from xmltv import option

hello sir,
first thanx to you for great great software for small network.
my request to you,
can you sopport for xmltv for epg?
i have xmltv file so can i use in mptsd-lcn?
or can i put xmltv link to epg option?
thnx dear.

Issues with "-B" != 38

Hi,

When using the parameter "-B" for streaming with different bandwith than the default one (38Mbps), after some time of starting the execution I see error messages and the output stream corrupts:

Jun 15 00:39:18 host ux-mptsd: INPUT : [ch1         ] Disable input, buffer is full. fd: 4 src: udp://239.0.0.1:12345

I feel the INPUT buffer goes full because some timing in the code doesn't work for less than the stock 38Mbps. Any idea about how to fix it?

Thank you!

SID 550 results in invalid stream

HI.
Setting SIDs of 550, 551 and 552 for a stream with 3 programs made the stream broken/invalid ("invalid headers" reported by VLC, no image on QAM). I lowered it to 500, 501 and 502 and it was ok.
I assume there is a problem with SIDs higher than 511?

[improvement] Receive unicast UDP streams

When trying to receive a stream from a unicast udp source, I get the following error:
Jun 14 11:44:52 host ux-mptsd: ERR : udp://192.168.222.6:1234 is not multicast address
with this config:
[Channel1]
service_id = 1
id = test
name = "Test"
source = udp://192.168.222.6:1234

Maybe this should be considered as an improvement for the future, it's not always desirable to flood a switch with multicast traffic.

LCN branch to master

Hi,

I see that the "lcn" branch has useable code for supporting LCN descriptors. Plus some other code of an UDP server.

I suggest the idea of extracting the LCN code and merge it with the "main" branch.
You agree?

How to use

Hi ,

how i can use this for DVB-C as in config file you shown for the transponder in NIT.config

Feature Request

Could the option be added to mux private PES stream such as Teletext? Yes I know, Its a dead format however, I'd like to use teletext as a way of showing DVDB-T Transmitter status. What would be involved in the code? Time $$?

Update submodules

Hi,

The current "master" Branch uses quite old versions of submodules (three years ago!).
You can see the used versions:

libfuncs @ 0dc8d87
libtsfuncs @ 45e7e99

And the command git submodule update doesn't update the code of the submodules.
Check it at https://gist.github.com/gitaarik/8735255.

So, I suggest to update the submodules to a recent commit.
And futhermore, add to the README how to update the submodules to last versions with the command git submodule update --recursive --remote

Regards.

New release

Would be nice to do a new official release of mptsd with the recent changes and newer dependencies (at least libtsfuncts) to simplify packaging.

feature request, some options

It would be nice if:

  1. I can feed EPG from another external application
    (via UDP unicast/multicast, transparent EPG/EIT)

  2. Same for NIT table.

  3. Map PIDS also SDT PMT not only via an algorithm but also via a re-mapping table

  4. Make from a tv service a radio service by extracting just 1 audio pid.

1-2. At least to have an option to mute NIT and/or EPG/EIT.

  1. At least to have the option to leave its parameters (PIDS) as-is. (transparent muxing)

  2. (Any other suggestion welcomed, )

1-2. For example both features can be a single option by specifying transparent muxing on PID
(0x0010 and 0x0012) and then adding stream source for each of them.

Thanks.

[feature] - v option to print mptsd version (for automated bash script)

Hello @gfto and @lars18th,

Is it advantageous we add an option -v to print mptsd version? I added it to config.c however my addition in my build simply prints version 1.0.0.1. Currently when mptsd starts it prints some longish system info and build date?

I'd suggest a version.h and update it every build.

Version 1.1.0.1234 ?

release.major.minor.build

It'll be able to be managed moving forward to "track" later versions?

I added it to my build for the purpose of making my install script check mptsd is on the system looks at the version and if there is a later release? asks to upgrade to the later release.

Great work, I have it running on Ubuntu 23.10 no issues so far until I see what it can do..

epg pass through

hello sir,
first thnx for your great software.
can u make epg pass through?
means i get epg from stream then i use mpts its cant pass-through.
thnx.

BUG: Input PMT length > 1

Hi,

I detected this bug:

  • When the input PMT table has a size of 2 or more packets, then the input is continously reconnected.

Let me to print some logs after some internal changes in the input.c for printing PREVIOUS (s->last_pmt) and CURRENT (s->pmt) tables after the checking of:

mptsd/input.c

Line 187 in 7f84ca2

if (!ts_pat_is_same(s->pat, s->last_pat)) {

Jun 18 15:33:39 host ux-mptsd: INPUT : [input1      ] ========================PMT changed.======================== fd: 4 src: http://...
Jun 18 15:33:39 host ux-mptsd: INPUT : [input1      ] *** Last PMT *** fd: 4 src: http://...
Jun 18 15:33:39 host ux-mptsd: PMT table
Jun 18 15:33:39 host ux-mptsd: *** tei:0 pusi:1 prio:0 pid:0406 (1030) scramble:0 adapt:0 payload:1 adapt_len:0 adapt_flags:0 | pofs:4 plen:184
Jun 18 15:33:39 host ux-mptsd: *** tei:0 pusi:0 prio:0 pid:0406 (1030) scramble:0 adapt:0 payload:1 adapt_len:0 adapt_flags:0 | pofs:4 plen:184
Jun 18 15:33:39 host ux-mptsd:   * Section header
Jun 18 15:33:39 host ux-mptsd:     - Table id           : 002 (2) program_map_section
Jun 18 15:33:39 host ux-mptsd:     - Section length     : 10c (268) [num_packets:2]
...
Jun 18 15:33:39 host ux-mptsd: INPUT : [input1      ] *** Current PMT *** fd: 4 src: http://...
Jun 18 15:33:39 host ux-mptsd: PMT table
Jun 18 15:33:39 host ux-mptsd: *** tei:0 pusi:1 prio:0 pid:0406 (1030) scramble:0 adapt:0 payload:1 adapt_len:0 adapt_flags:0 | pofs:4 plen:184
Jun 18 15:33:39 host ux-mptsd:   * Section header
Jun 18 15:33:39 host ux-mptsd:     - Table id           : 002 (2) program_map_section
Jun 18 15:33:39 host ux-mptsd:     - Section length     : 10c (268) [num_packets:1]
...
Jun 18 15:33:39 host ux-mptsd: INPUT : [input1      ] Reconnect fd: 4 src: http://...

As you can see, the input is reconnected because the equal check fails. The reason for the fail is because the lenght of the s->last_pmt is correct (268 bytes, num_packets:2), but the lenght of s->pmt is inconsistent (269 bytes, but num_packets:1).

So, the code needs to be fixed!

sdt decripter show scramble sign $

hello sir,
i am using mumudvb with sasc-ng.
then i put its stream to your mptsd software then i check stream with ts reader its show scamble sign in sdt.
channels work fine but its show $ sign so can u make it fta it?
thnx.

Output PIPE | File

Hi @gfto ,

In order to support PIPE output (instead of only Network UDP output), I suggest to merge the changes from @gvangool : https://github.com/gvangool/mptsd/commits/master

His work includes support for file support when disabling network output. Using in this way, it's possible to pipe the output to other tools, as for example: mptsd -N -W - | ffmpeg

You found it interesting?

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.