[FFmpeg-trac] #4525(avformat:new): Add multi-program support in mpegts muxer
FFmpeg
trac at avcodec.org
Wed Apr 29 13:29:15 CEST 2015
#4525: Add multi-program support in mpegts muxer
-------------------------------------+-------------------------------------
Reporter: saste | Owner:
Type: | Status: new
enhancement | Component: avformat
Priority: normal | Keywords: mpegts
Version: git- | program
master | Blocking:
Blocked By: | Analyzed by developer: 0
Reproduced by developer: 0 |
-------------------------------------+-------------------------------------
Multi-programs MPEGTS input are correctly handled, and there is an API to
set the Program structure.
For example consider this output:
{{{
$ ffprobe multi-programs.ts
ffprobe version N-71578-g57865a9 Copyright (c) 2007-2015 the FFmpeg
developers
built with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
configuration: --extra-cflags=-I/home/stefano/include --extra-
ldflags=-L/home/stefano/lib --enable-libopenjpeg --enable-pic --enable-
fontconfig --enable-libass --enable-version3 --prefix=/home/stefano
--disable-shared --enable-static --enable-debug=3 --enable-pthreads
--disable-optimizations --enable-libvorbis --enable-gpl --enable-nonfree
--enable-libmp3lame --enable-libtheora --enable-gpl --enable-x11grab
--enable-frei0r --enable-libfaac --enable-libcaca --enable-libflite
--enable-libzmq --enable-libfreetype --enable-libopencv --enable-libgme
--enable-libcdio --enable-libvo-aacenc --enable-libx264 --enable-ladspa
--enable-libquvi --enable-opengl --enable-libvpx --enable-libxcb
libavutil 54. 23.100 / 54. 23.100
libavcodec 56. 35.101 / 56. 35.101
libavformat 56. 30.100 / 56. 30.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 14.100 / 5. 14.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mpegts, from 'multi-programs.ts':
Duration: 00:05:00.03, start: 0.000278, bitrate: 1216 kb/s
Program 1
Stream #0:0[0x65]: Video: h264 (Constrained Baseline) ([27][0][0][0] /
0x001B), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 10 fps, 10 tbr, 90k tbn, 20
tbc
Program 2
Stream #0:1[0x6f]: Video: h264 (Constrained Baseline) ([27][0][0][0] /
0x001B), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 30 fps, 30 tbr, 90k tbn, 60
tbc
Program 3
Stream #0:2[0x79]: Video: h264 (Constrained Baseline) ([27][0][0][0] /
0x001B), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 30 fps, 29.92 tbr, 90k tbn,
60 tbc
}}}
But programs are not handled in the mpegts muxer at the present time, so
even when using the API the corresponding program structure is not stored
in the MPEGTS output.
With {{{ffmpeg}}} we get this behavior:
{{{
$ ffmpeg -i multi-programs.ts -codec copy -map 0 multi-programs.out.ts
ffmpeg version N-71578-g57865a9 Copyright (c) 2000-2015 the FFmpeg
developers
built with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
configuration: --extra-cflags=-I/home/stefano/include --extra-
ldflags=-L/home/stefano/lib --enable-libopenjpeg --enable-pic --enable-
fontconfig --enable-libass --enable-version3 --prefix=/home/stefano
--disable-shared --enable-static --enable-debug=3 --enable-pthreads
--disable-optimizations --enable-libvorbis --enable-gpl --enable-nonfree
--enable-libmp3lame --enable-libtheora --enable-gpl --enable-x11grab
--enable-frei0r --enable-libfaac --enable-libcaca --enable-libflite
--enable-libzmq --enable-libfreetype --enable-libopencv --enable-libgme
--enable-libcdio --enable-libvo-aacenc --enable-libx264 --enable-ladspa
--enable-libquvi --enable-opengl --enable-libvpx --enable-libxcb
libavutil 54. 23.100 / 54. 23.100
libavcodec 56. 35.101 / 56. 35.101
libavformat 56. 30.100 / 56. 30.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 14.100 / 5. 14.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mpegts, from 'multi-programs.ts':
Duration: 00:05:00.03, start: 0.000278, bitrate: 1216 kb/s
Program 1
Stream #0:0[0x65]: Video: h264 (Constrained Baseline) ([27][0][0][0] /
0x001B), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 10 fps, 10 tbr, 90k tbn, 20
tbc
Program 2
Stream #0:1[0x6f]: Video: h264 (Constrained Baseline) ([27][0][0][0] /
0x001B), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 30 fps, 30 tbr, 90k tbn, 60
tbc
Program 3
Stream #0:2[0x79]: Video: h264 (Constrained Baseline) ([27][0][0][0] /
0x001B), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 30 fps, 29.92 tbr, 90k tbn,
60 tbc
Output #0, mpegts, to 'multi-programs.out.ts':
Metadata:
encoder : Lavf56.30.100
Stream #0:0: Video: h264 ([27][0][0][0] / 0x001B), yuv420p, 320x240
[SAR 4:3 DAR 16:9], q=2-31, 10 fps, 10 tbr, 90k tbn, 10 tbc
Stream #0:1: Video: h264 ([27][0][0][0] / 0x001B), yuv420p, 320x240
[SAR 4:3 DAR 16:9], q=2-31, 30 fps, 30 tbr, 90k tbn, 30 tbc
Stream #0:2: Video: h264 ([27][0][0][0] / 0x001B), yuv420p, 320x240
[SAR 1:1 DAR 4:3], q=2-31, 30 fps, 29.92 tbr, 90k tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Stream #0:2 -> #0:2 (copy)
Press [q] to stop, [?] for help
frame= 2988 fps=0.0 q=-1.0 Lq=-1.0 q=-1.0 size= 47966kB time=00:05:00.02
bitrate=1309.7kbits/s
video:42075kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 14.001903%
$ ffprobe multi-programs.out.ts
ffprobe version N-71578-g57865a9 Copyright (c) 2007-2015 the FFmpeg
developers
built with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9)
configuration: --extra-cflags=-I/home/stefano/include --extra-
ldflags=-L/home/stefano/lib --enable-libopenjpeg --enable-pic --enable-
fontconfig --enable-libass --enable-version3 --prefix=/home/stefano
--disable-shared --enable-static --enable-debug=3 --enable-pthreads
--disable-optimizations --enable-libvorbis --enable-gpl --enable-nonfree
--enable-libmp3lame --enable-libtheora --enable-gpl --enable-x11grab
--enable-frei0r --enable-libfaac --enable-libcaca --enable-libflite
--enable-libzmq --enable-libfreetype --enable-libopencv --enable-libgme
--enable-libcdio --enable-libvo-aacenc --enable-libx264 --enable-ladspa
--enable-libquvi --enable-opengl --enable-libvpx --enable-libxcb
libavutil 54. 23.100 / 54. 23.100
libavcodec 56. 35.101 / 56. 35.101
libavformat 56. 30.100 / 56. 30.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 14.100 / 5. 14.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mpegts, from 'multi-programs.out.ts':
Duration: 00:05:00.03, start: 1.400000, bitrate: 1309 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (Constrained Baseline) ([27][0][0][0]
/ 0x001B), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 10 fps, 10 tbr, 90k tbn,
20 tbc
Stream #0:1[0x101]: Video: h264 (Constrained Baseline) ([27][0][0][0]
/ 0x001B), yuv420p, 320x240 [SAR 4:3 DAR 16:9], 30 fps, 30 tbr, 90k tbn,
60 tbc
Stream #0:2[0x102]: Video: h264 (Constrained Baseline) ([27][0][0][0]
/ 0x001B), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 30 fps, 29.92 tbr, 90k tbn,
60 tbc
}}}
that is only a single program containing all the streams is written to the
output.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/4525>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list