Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#4825 closed enhancement (invalid)

implement an equivalent for mplayer -dumpstream

Reported by: cehoyos Owned by:
Priority: wish Component: ffmpeg
Version: git-master Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Users often report that remuxing network (or other) streams fails because of timestamp discontinuities or similar issues while mplayer -dumpstream works fine.
Ideally, FFmpeg would have an equivalent function.

Change History (6)

comment:1 Changed 4 years ago by Cigaes

I suspect aviocat (we should build and install useful tools by default) and ffmpeg -f data can both do the trick. Do you have a precise use case?

comment:2 follow-up: Changed 4 years ago by cehoyos

  • Resolution set to invalid
  • Status changed from new to closed

I thought that mplayer -dumpstream has additional possibilities (skip audio or video which works when using it for dvb capture but this is unrelated to the dump logic) but this either never works or only for specific streams (real-netword?), so aviocat indeed works as expected (although it cannot output to a pipe afaict), is there documentation somewhere? I couldn't find it in the doc directory...

Otoh, I wonder how to read a stream that takes an option? I will open a new ticket if I find a usecase.

I don't think -f data does anything similar, it reports data files have exactly one stream here.

comment:3 in reply to: ↑ 2 ; follow-up: Changed 4 years ago by Cigaes

Replying to cehoyos:

Otoh, I wonder how to read a stream that takes an option?

There is a syntax to include protocol options in the protocol scheme name, something like proto,opt,value,,://, I never remember exactly.

I don't think -f data does anything similar, it reports data files have exactly one stream here.

“Complete command line and console output missing.” :-Þ

comment:4 in reply to: ↑ 3 ; follow-up: Changed 4 years ago by cehoyos

Replying to Cigaes:

Replying to cehoyos:

Otoh, I wonder how to read a stream that takes an option?

There is a syntax to include protocol options in the protocol scheme name, something like proto,opt,value,,://, I never remember exactly.

Is it documented?

I don't think -f data does anything similar, it reports data files have exactly one stream here.

“Complete command line and console output missing.” :-Þ

$ ffmpeg -i rtmp://82.208.148.204:1935/live/tvriasi -map 0 -codec copy -f data out
ffmpeg version N-74842-gfb04666 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
[flv @ 0x379a420] Stream discovered after head already parsed
Input #0, flv, from 'rtmp://82.208.148.204:1935/live/tvriasi':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 720
    displayHeight   : 576
    fps             : 0
    profile         :
    level           :
  Duration: 00:00:00.00, start: 1185.173000, bitrate: N/A
    Stream #0:0: Video: h264 (Main), yuv420p(tv, smpte170m/smpte170m/bt709), 720x576 [SAR 12:11 DAR 15:11], 2048 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
    Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp
[data @ 0x37b8080] data files have exactly one stream
Output #0, data, to 'out':
  Metadata:
    Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
    displayWidth    : 720
    displayHeight   : 576
    fps             : 0
    profile         :
    level           :
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264, yuv420p, 720x576 [SAR 12:11 DAR 15:11], q=2-31, 2048 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
    Stream #0:1: Audio: aac, 48000 Hz, stereo
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

comment:5 in reply to: ↑ 4 Changed 4 years ago by Cigaes

Replying to cehoyos:

Is it documented?

I do not remember, I suspect not.

$ ffmpeg -i rtmp://82.208.148.204:1935/live/tvriasi -map 0 -codec copy -f data out

In order to bypass demuxing, data format must be selected for input too:

ffmpeg -f data -i rtmp://82.208.148.204:1935/live/tvriasi \
  -map 0 -codec copy -f data out

I tested it with this server and it works.

comment:6 Changed 4 years ago by cehoyos

Thank you, this looks very helpful!

Note: See TracTickets for help on using tickets.