Opened 4 years ago

Closed 4 years ago

#2651 closed defect (invalid)

Input RTMP Stream, Output JPEG Stream

Reported by: Animaleante Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: rtmp h264
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by cehoyos)

I am trying to receive as input a RTMP stream from Flash Media Server, encoded with h.264(BASELINE, Level 3.1) and save a sequence of JPEG images in realtime.
If I try this kind of conversion when streaming without h.264 (With Sorenson codec), the command works just fine.

Command:

ffmpeg -y -re -loglevel verbose -i "(RTMP STREAM) app=myapp conn=S:ffmpeg playpath=mp4:stream54.f4v live=1" -an -r 15 -f image2 ./imgs/image%04d.jpg

ffmpeg version N-53811-gc8faa47 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jun  3 2013 13:01:58 with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-54)
  configuration: --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-librtmp --enable-gpl --enable-postproc --enable-nonfree
  libavutil      52. 34.100 / 52. 34.100
  libavcodec     55. 15.100 / 55. 15.100
  libavformat    55.  8.102 / 55.  8.102
  libavdevice    55.  2.100 / 55.  2.100
  libavfilter     3. 74.101 /  3. 74.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100

This is the log I am getting:
Parsing...
Parsed protocol: 0
Parsed host    : localhost
Parsed app     :
RTMP_Connect1, ... connected, handshaking
HandShake: Type Answer   : 03
HandShake: Server Uptime : 18848860
HandShake: FMS Version   : 4.5.1.1
HandShake: Handshaking finished....
RTMP_Connect1, handshaked
Invoking connect
HandleServerBW: server BW = 2500000
HandleClientBW: client BW = 2500000 2
HandleChangeChunkSize, received: chunk size change to 4096
RTMP_ClientPacket, received: invoke 242 bytes
(object begin)
Property: <Name:           no-name., STRING:    _result>
Property: <Name:           no-name., NUMBER:    1.00>
Property: <Name:           no-name., OBJECT>
(object begin)
Property: <Name:             fmsVer, STRING:    FMS/4,5,1,8003>
Property: <Name:       capabilities, NUMBER:    255.00>
Property: <Name:               mode, NUMBER:    1.00>
(object end)
Property: <Name:           no-name., OBJECT>
(object begin)
Property: <Name:              level, STRING:    status>
Property: <Name:               code, STRING:    NetConnection.Connect.Success>
Property: <Name:        description, STRING:    Connection succeeded.>
Property: <Name:     objectEncoding, NUMBER:    0.00>
Property: <Name:               data, OBJECT>
(object begin)
Property: <Name:            version, STRING:    4,5,1,8003>
(object end)
(object end)
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <connect>
sending ctrl. type: 0x0003
Invoking createStream
FCSubscribe: mp4:stream54.f4v
Invoking FCSubscribe
RTMP_ClientPacket, received: invoke 29 bytes
(object begin)
Property: <Name:           no-name., STRING:    _result>
Property: <Name:           no-name., NUMBER:    2.00>
Property: NULL
Property: <Name:           no-name., NUMBER:    1.00>
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <createStream>
SendPlay, seekTime=0, stopTime=0, sending play: mp4:stream54.f4v
Invoking play
sending ctrl. type: 0x0003
RTMP_ClientPacket, received: invoke 21 bytes
(object begin)
Property: <Name:           no-name., STRING:    _result>
Property: <Name:           no-name., NUMBER:    3.00>
Property: NULL
Property: NULL
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <FCSubscribe>
HandleChangeChunkSize, received: chunk size change to 4096
HandleCtrl, received ctrl. type: 0, len: 6
HandleCtrl, Stream Begin 1
RTMP_ClientPacket, received: invoke 166 bytes
(object begin)
Property: <Name:           no-name., STRING:    onStatus>
Property: <Name:           no-name., NUMBER:    0.00>
Property: NULL
Property: <Name:           no-name., OBJECT>
(object begin)
Property: <Name:              level, STRING:    status>
Property: <Name:               code, STRING:    NetStream.Play.Reset>
Property: <Name:        description, STRING:    Playing and resetting stream54.f4v.>
Property: <Name:            details, STRING:    stream54.f4v>
Property: <Name:           clientid, STRING:    oAAIAAAA>
(object end)
(object end)
HandleInvoke, server invoking <onStatus>
HandleInvoke, onStatus: NetStream.Play.Reset
RTMP_ClientPacket, received: invoke 160 bytes
(object begin)
Property: <Name:           no-name., STRING:    onStatus>
Property: <Name:           no-name., NUMBER:    0.00>
Property: NULL
Property: <Name:           no-name., OBJECT>
(object begin)
Property: <Name:              level, STRING:    status>
Property: <Name:               code, STRING:    NetStream.Play.Start>
Property: <Name:        description, STRING:    Started playing stream54.f4v.>
Property: <Name:            details, STRING:    stream54.f4v>
Property: <Name:           clientid, STRING:    oAAIAAAA>
(object end)
(object end)
HandleInvoke, server invoking <onStatus>
HandleInvoke, onStatus: NetStream.Play.Start
RTMP_ClientPacket, received: notify 24 bytes
(object begin)
Property: <Name:           no-name., STRING:    |RtmpSampleAccess>
Property: <Name:           no-name., BOOLEAN:   FALSE>
Property: <Name:           no-name., BOOLEAN:   TRUE>
(object end)
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
ignoring too small video packet: size: 2
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
ignoring too small video packet: size: 2
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
ignoring too small audio packet: size: 0
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
HandleCtrl, received ctrl. type: 31, len: 6
HandleCtrl, Stream BufferEmpty 1
HandleCtrl, received ctrl. type: 32, len: 6
HandleCtrl, Stream BufferReady 1
ignoring too small video packet: size: 5
ignoring too small audio packet: size: 0
RTMP_ClientPacket, received: invoke 149 bytes
(object begin)
Property: <Name:           no-name., STRING:    onStatus>
Property: <Name:           no-name., NUMBER:    0.00>
Property: NULL
Property: <Name:           no-name., OBJECT>
(object begin)
Property: <Name:              level, STRING:    status>
Property: <Name:               code, STRING:    NetStream.Play.UnpublishNotify>
Property: <Name:        description, STRING:    stream54.f4v is now unpublished.>
Property: <Name:           clientid, STRING:    oAAIAAAA>
(object end)
(object end)
HandleInvoke, server invoking <onStatus>
HandleInvoke, onStatus: NetStream.Play.UnpublishNotify
Invoking deleteStream
Got Play. Complete or Play. Stop from server. Assuming stream is complete
[flv @ 0x296ee00] Stream discovered after head already parsed
[h263 @ 0x2ac80c0] Bad marker
[h263 @ 0x2ac80c0] header damaged
[flv @ 0x296ee00] decoding for stream 1 failed
[flv @ 0x296ee00] Could not find codec parameters for stream 1 (Video: h263, yuv420p): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, flv, from '(RTMP STREAM) app=myapp conn=S:ffmpeg playpath=mp4:stream54.f4v live=1':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: h264 (Baseline), yuv420p, 320x240 [SAR 1:1 DAR 4:3], 15 tbr, 1k tbn, 30 tbc
    Stream #0:1: Video: h263, yuv420p, 1k tbr, 1k tbn
[graph 0 input from stream 0:0 @ 0x295fce0] w:320 h:240 pixfmt:yuv420p tb:1/1000 fr:15/1 sar:1/1 sws_param:flags=2
[auto-inserted scaler 0 @ 0x2aa43e0] w:iw h:ih flags:'0x4' interl:0
[format @ 0x2a15ee0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'Parsed_null_0' and the filter 'format'
[auto-inserted scaler 0 @ 0x2aa43e0] w:320 h:240 fmt:yuv420p sar:1/1 -> w:320 h:240 fmt:yuvj420p sar:1/1 flags:0x4
Output #0, image2, to './imgs/image%04d.jpg':
  Metadata:
    encoder         : Lavf55.8.102
    Stream #0:0: Video: mjpeg, yuvj420p, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 90k tbn, 15 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mjpeg)
Press [q] to stop, [?] for help
*** drop!
    Last message repeated 28 times
[h264 @ 0x2bb0860] Cannot use next picture in error concealment
[h264 @ 0x2bb0860] concealing 53 DC, 53 AC, 53 MV errors in P frame
*** drop!
    Last message repeated 3 times
No more output streams to write to, finishing.
[image2 @ 0x2a5b980] Could not open file : ./imgs/image0001.jpg
av_interleaved_write_frame(): Input/output error

Change History (4)

comment:1 Changed 4 years ago by cehoyos

  • Keywords flash media server removed

Does it work if you compile without librtmp? If not, does it fail differently?

comment:2 Changed 4 years ago by cehoyos

  • Description modified (diff)

comment:3 Changed 4 years ago by Animaleante

I had to completely remove FFMPEG, and the I compiled it with only libx264. Now it works! Thanks

Version 0, edited 4 years ago by Animaleante (next)

comment:4 Changed 4 years ago by cehoyos

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

Thank you for testing again!

Note: See TracTickets for help on using tickets.