Can't simply stream MPEG-TS (DVB Capture) without remuxing
Posted: 15 Jun 2016 21:05
I work in a cable lab and we often need to loop content that is not easy to acquire directly via satellite at any given time for testing services. Currently, all of our streaming is done off a Sencore platform, which, to keep it brief, I'd like to replace with an open-source linux platform that I will build myself.
As a basis for my platform, I want to prove that I can use VLC, from command line, without any remuxing, to take DVB captures (MPEG2/TS) that I already have and stream them over UDP multicast (RTP is out of the question as we have a many different modulators in our test-headend that simulate the actual setups of our customers and UDP is the only format that they universally accept).
Here is the basic command I am working with running VLC 2.2.2 on CentOS7:
cvlc /video/WOBI.ts --sout '#standard{access=udp,dst=233.8.8.8:888}'
And it kind of works, but there are some peculiarities that seem to be associated with the remuxing process. Chief among them is the fact that we seem to be losing something in the PMT/PAT (pardon amy vagueness as it's a result of my own ignorance). Here's my StreamXpert report on the VLC output when I analyze that same multicast stream:
Now here's what I'm using as a baseline. This is Sencore's output of that exact same file:
Things to Note
I want to just push the raw TS back out in the same form I captured it. Apparently, once upon a time, VLC had a --ts-out "Fast udp streaming" option that did exactly what I wanted, but it was removed for some reason in more recent versions. I've already looked into DVBlaster (doesn't take plain files as input) and multicat (doesn't output to raw UDP and also doesn't seem to take TS files that it didn't generate itself because of the whole .aux files thing) and I'm at a loss as to how I should be going about this. Am I missing some critical option when I set up my stream? Is there a more suitable open-source solution aside from VLC?
And I'd rather not dig up old versions of VLC to get the --ts-out option. I did a whole lot of searching and wasn't even able to find out WHY that was deprecated, but I want to ultimately work the with python interface of VLC and I don't want to struggle with documentation because I'm using an unsupported 5+ year-old version of the binaries.
Any help with this issue would be vastly appreciated! I know this is a lot of detials to ask what should otherwise be a simple question, but I wanted to make as much available as possible to anyone who might be able to help me. Thanks!
Mediainfo:
As a basis for my platform, I want to prove that I can use VLC, from command line, without any remuxing, to take DVB captures (MPEG2/TS) that I already have and stream them over UDP multicast (RTP is out of the question as we have a many different modulators in our test-headend that simulate the actual setups of our customers and UDP is the only format that they universally accept).
Here is the basic command I am working with running VLC 2.2.2 on CentOS7:
cvlc /video/WOBI.ts --sout '#standard{access=udp,dst=233.8.8.8:888}'
And it kind of works, but there are some peculiarities that seem to be associated with the remuxing process. Chief among them is the fact that we seem to be losing something in the PMT/PAT (pardon amy vagueness as it's a result of my own ignorance). Here's my StreamXpert report on the VLC output when I analyze that same multicast stream:
Now here's what I'm using as a baseline. This is Sencore's output of that exact same file:
Things to Note
- There are more streams than just the Audio and Video.
- This capture definitely contains 2x MPEG2-Audio Streams and 1x AC3 Audio stream, so why does the VLC mux'd version show the MPEG2 audios streams as MPEG-1 Audio streams?
- The program/service number gets set to 1 i the VLC steam, even thought it's definitely 200 in the original capture.
I want to just push the raw TS back out in the same form I captured it. Apparently, once upon a time, VLC had a --ts-out "Fast udp streaming" option that did exactly what I wanted, but it was removed for some reason in more recent versions. I've already looked into DVBlaster (doesn't take plain files as input) and multicat (doesn't output to raw UDP and also doesn't seem to take TS files that it didn't generate itself because of the whole .aux files thing) and I'm at a loss as to how I should be going about this. Am I missing some critical option when I set up my stream? Is there a more suitable open-source solution aside from VLC?
And I'd rather not dig up old versions of VLC to get the --ts-out option. I did a whole lot of searching and wasn't even able to find out WHY that was deprecated, but I want to ultimately work the with python interface of VLC and I don't want to struggle with documentation because I'm using an unsupported 5+ year-old version of the binaries.
Any help with this issue would be vastly appreciated! I know this is a lot of detials to ask what should otherwise be a simple question, but I wanted to make as much available as possible to anyone who might be able to help me. Thanks!
Mediainfo:
Code: Select all
$ mediainfo /video/WOBI.ts
General
ID : 1 (0x1)
Complete name : /video/WOBI.ts
Format : MPEG-TS
File size : 100 MiB
Duration : 3mn 0s
Start time : UTC 2016-04-28 21:15:00
End time : UTC 2016-04-28 21:17:50
Overall bit rate mode : Constant
Overall bit rate : 4 654 Kbps
Network name : SERSAT
Original network name : Astra Satellite Network 19,2'E
Frequency : 3682000000
OrbitalPosition : 40.5W
Video
ID : 2160 (0x870)
Menu ID : 200 (0xC8)
Format : MPEG Video
Format version : Version 2
Format profile : Main@Main
Format settings, BVOP : Yes
Format settings, Matrix : Custom
Format settings, GOP : Variable
Format settings, picture structure : Frame
Codec ID : 2
Duration : 3mn 0s
Bit rate : 4 101 Kbps
Maximum bit rate : 3 500 Kbps
Width : 704 pixels
Height : 480 pixels
Display aspect ratio : 4:3
Frame rate : 29.970 (30000/1001) fps
Standard : NTSC
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Interlaced
Scan order : Top Field First
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.405
Time code of first frame : 13:18:20:15
Time code source : Group of pictures header
GOP, Open/Closed : Open
Stream size : 88.3 MiB (88%)
Audio #1
ID : 2120 (0x848)
Menu ID : 200 (0xC8)
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 2
Mode : Joint stereo
Codec ID : 4
Duration : 3mn 0s
Bit rate mode : Constant
Bit rate : 128 Kbps
Channel(s) : 2 channels
Sampling rate : 48.0 KHz
Compression mode : Lossy
Delay relative to video : -200ms
Stream size : 2.76 MiB (3%)
Audio #2
ID : 2122 (0x84A)
Menu ID : 200 (0xC8)
Format : MPEG Audio
Format version : Version 1
Format profile : Layer 2
Mode : Dual mono
Codec ID : 4
Duration : 3mn 0s
Bit rate mode : Constant
Bit rate : 64.0 Kbps
Channel(s) : 2 channels
Sampling rate : 48.0 KHz
Compression mode : Lossy
Delay relative to video : -8ms
Stream size : 1.38 MiB (1%)
Audio #3
ID : 2124 (0x84C)
Menu ID : 200 (0xC8)
Format : AC-3
Format/Info : Audio Coding 3
Mode extension : CM (complete main)
Format settings, Endianness : Big
Codec ID : 129
Duration : 3mn 0s
Bit rate mode : Constant
Bit rate : 128 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 KHz
Frame rate : 31.250 fps (1536 spf)
Compression mode : Lossy
Delay relative to video : -112ms
Stream size : 2.76 MiB (3%)
Menu
ID : 5200 (0x1450)
Menu ID : 200 (0xC8)
Duration : 3mn 0s
List : 2160 (0x870) (MPEG Video) / 2120 (0x848) (MPEG Audio) / 2122 (0x84A) (MPEG Audio) / 2124 (0x84C) (AC-3)
Service name : WOBI 200
Service type : digital television