Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#2805 closed defect (invalid)

Can not demux to elementary .h264

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

Description

Summary of the bug:

Impossible to mux elementary video stream that were demuxed with ffmpeg before (h264 video stream).

How to reproduce:

% ffmpeg -i input.flv -c:v copy -c:a libvo_aacenc -ab 96k -ac 1 output_0.mp4
% ffmpeg -i output_0.mp4 -an -c:v copy output.h264
% ffmpeg -i output_0.mp4 -vn -c:a copy output.aac
% ffmpeg -i output.h264 -i output.aac -c copy result.mp4

ffmpeg version
built on Jul 23 2013 11:51:12 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.0 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libfaac --enable-libvo-aacenc --enable-libspeex
  libavutil      52. 38.100 / 52. 38.100
  libavcodec     55. 18.102 / 55. 18.102
  libavformat    55. 12.100 / 55. 12.100
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 79.101 /  3. 79.101
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100

The problem is with that log ffmpeg stderr: output.h264: Invalid data found when processing input

The logs details below:

$ ffmpeg -i input.flv -c:v copy -c:a libvo_aacenc -ab 96k -ac 1 output_0.mp4
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 23 2013 11:51:12 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.0 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libfaac --enable-libvo-aacenc --enable-libspeex
Input #0, flv, from 'input.flv':
  Metadata:
    creationdate    : Sat Jul 20 16:03:03
    duration2       : 8227
  Duration: 00:00:08.53, start: 0.000000, bitrate: 340 kb/s
    Stream #0:0: Video: h264 (Baseline), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 20 tbr, 1k tbn, 40 tbc
    Stream #0:1: Audio: speex, 16000 Hz, mono, s16
Output #0, mp4, to 'output_0.mp4':
  Metadata:
    creationdate    : Sat Jul 20 16:03:03
    duration2       : 8227
    encoder         : Lavf55.12.100
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-31, 16k tbn, 1k tbc
    Stream #0:1: Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 16000 Hz, mono, s16, 96 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (libspeex -> libvo_aacenc)
Press [q] to stop, [?] for help
[mp4 @ 0x7f96e2131000] Non-monotonous DTS in output stream 0:0; previous: 45776, current: 45776; changing to 45777. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f96e2131000] Non-monotonous DTS in output stream 0:0; previous: 91120, current: 91120; changing to 91121. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f96e2131000] Non-monotonous DTS in output stream 0:0; previous: 135888, current: 135888; changing to 135889. This may result in incorrect timestamps in the output file.
frame=  124 fps=0.0 q=-1.0 Lsize=     411kB time=00:00:08.59 bitrate= 391.9kbits/s
video:316kB audio:91kB subtitle:0 global headers:0kB muxing overhead 0.991790%


$ ffmpeg -i output_0.mp4 -an -c:v copy output.h264
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 23 2013 11:51:12 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.0 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libfaac --enable-libvo-aacenc --enable-libspeex
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output_0.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.12.100
  Duration: 00:00:08.54, start: 0.000000, bitrate: 394 kb/s
    Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 303 kb/s, 14.51 fps, 20 tbr, 16k tbn, 40 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 95 kb/s
    Metadata:
      handler_name    : SoundHandler
Output #0, h264, to 'output.h264':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.12.100
    Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-31, 303 kb/s, 14.51 fps, 90k tbn, 20 tbc
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame=  124 fps=0.0 q=-1.0 Lsize=     316kB time=00:00:08.54 bitrate= 303.4kbits/s
video:316kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.000000%


$ ffmpeg -i output_0.mp4 -vn -c:a copy output.aac
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 23 2013 11:51:12 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.0 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libfaac --enable-libvo-aacenc --enable-libspeex
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output_0.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.12.100
  Duration: 00:00:08.54, start: 0.000000, bitrate: 394 kb/s
    Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 303 kb/s, 14.51 fps, 20 tbr, 16k tbn, 40 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 95 kb/s
    Metadata:
      handler_name    : SoundHandler
Output #0, adts, to 'output.aac':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.12.100
    Stream #0:0(und): Audio: aac (mp4a / 0x6134706D), 16000 Hz, mono, 95 kb/s
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:1 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=      92kB time=00:00:08.59 bitrate=  87.3kbits/s
video:0kB audio:91kB subtitle:0 global headers:0kB muxing overhead 0.911458%


$ ffmpeg -i output.h264 -i output.aac -c copy result.mp4
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 23 2013 11:51:12 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.0 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libfaac --enable-libvo-aacenc --enable-libspeex
output.h264: Invalid data found when processing input

Attachments (1)

input.flv (266.1 KB) - added by mikhailov 6 years ago.

Download all attachments as: .zip

Change History (11)

comment:1 Changed 6 years ago by mikhailov

Last edited 6 years ago by mikhailov (previous) (diff)

Changed 6 years ago by mikhailov

comment:2 Changed 6 years ago by cehoyos

  • Keywords mux demux h.264 removed
  • Resolution set to invalid
  • Status changed from new to closed

$ ffmpeg -i input.flv -vcodec copy -vbsf h264_mp4toannexb out1.h264
$ ffmpeg -i output_0.mp4 -vcodec copy -vbsf h264_mp4toannexb out2.h264

For future tickets: Please always test current git head before reporting a problem and please understand that this is a bug tracker, use the mailing lists for support questions: https://ffmpeg.org/contact.html

Unrelated: The native aac encoder -acodec aac -strict -2 is said to be superior over -acodec libvo_aacenc in many cases.

comment:3 Changed 6 years ago by mikhailov

  • Resolution invalid deleted
  • Status changed from closed to reopened

The bug can be reproduced even on git head, built by using brew install ffmpeg --HEAD...

ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 23 2013 12:59:47 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libfaac --enable-libvo-aacenc --enable-libspeex
  libavutil      52. 40.100 / 52. 40.100
  libavcodec     55. 19.100 / 55. 19.100
  libavformat    55. 12.102 / 55. 12.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 81.102 /  3. 81.102
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  4.100 /  2.  4.100
  libswresample   0. 17.103 /  0. 17.103
  libpostproc    52.  3.100 / 52.  3.100

It is HEAD and bases on those recent commits:

7dc7761 [4 hours ago] (Michael Niedermayer) Merge remote-tracking branch 'qatar/master'
abc8110 [6 days ago] (Michael Niedermayer) avcodec: add avcodec_chroma_pos_to_enum()
69e6702 [27 hours ago] (Martin Storsjö) arm: Mangle external symbols properly in new vfp assembly files
Last edited 6 years ago by mikhailov (previous) (diff)

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

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

comment:5 in reply to: ↑ 4 ; follow-up: Changed 6 years ago by mikhailov

Replying to cehoyos:
Why is this ticket invalid?

comment:6 in reply to: ↑ 5 ; follow-up: Changed 6 years ago by cehoyos

Replying to mikhailov:

Replying to cehoyos:
Why is this ticket invalid?

It contains a user question - "How do I extract raw H264 (Annex B) streams from valid mp4 (and flv) files?" - and this is not the right place for user questions. Please note that I tried very hard to answer the question in comment:2, I additionally repeated the need for always testing current git head - as explained on http://ffmpeg.org/bugreports.html - but this has of course no relevance for this ticket but only for future ones. Finally, I made a comment about encoding aac. I still consider this a very complete answer and honestly cannot understand why you reopened the ticket - especially without even commenting on my answer to your original question or indicating that you tested the example commands.

Last edited 6 years ago by cehoyos (previous) (diff)

comment:7 in reply to: ↑ 6 ; follow-up: Changed 6 years ago by mikhailov

Replying to cehoyos:

Replying to mikhailov:

Replying to cehoyos:
Why is this ticket invalid?

It contains a user question - "How do I extract raw H264 (Annex B) streams from valid mp4 (and flv) files?" - and this is not the right place for user questions. Please note that I tried very hard to answer the question in comment:2, I additionally repeated the need for always testing current git head - as explained on http://ffmpeg.org/bugreports.html - but this has of course no relevance for this ticket but only for future ones. Finally, I made a comment about encoding aac. I still consider this a very complete answer and honestly cannot understand why you reopened the ticket - especially without even commenting on my answer to your original question or indicating that you tested the example commands.

This ticket does contain only two questions why demux doesn't work as described in documentation. The problem may relate to the another ticket such #2085 that still unresolved. Yes, thanks for the advice to use git HEAD, I did it, result was the same. AAC codec doesn't affect to this problem as you said about it as "Unrelated".

Version 0, edited 6 years ago by mikhailov (next)

comment:8 Changed 6 years ago by cehoyos

Please read comment:2 again, concentrate only on the first two lines, ignore the remark about git head until you decide to report the next problem, this is what I meant with "For future tickets".
And please consider asking usage questions on the user mailing lists.

comment:9 in reply to: ↑ 7 Changed 6 years ago by mikhailov

Replying to mikhailov:

Replying to cehoyos:

Replying to mikhailov:

Replying to cehoyos:
Why is this ticket invalid?

It contains a user question - "How do I extract raw H264 (Annex B) streams from valid mp4 (and flv) files?" - and this is not the right place for user questions. Please note that I tried very hard to answer the question in comment:2, I additionally repeated the need for always testing current git head - as explained on http://ffmpeg.org/bugreports.html - but this has of course no relevance for this ticket but only for future ones. Finally, I made a comment about encoding aac. I still consider this a very complete answer and honestly cannot understand why you reopened the ticket - especially without even commenting on my answer to your original question or indicating that you tested the example commands.

This ticket does contain only one question: why demux doesn't work as described in documentation. The problem may relate to the another ticket such #2085 that still unresolved. Yes, thanks for the advice to use git HEAD, I did it, result was the same. AAC codec doesn't affect to this problem as you said about it as "Unrelated".

Sorry, I just reread it again. Thank you so much, those line looks interesting:

$ ffmpeg -i input.flv -vcodec copy -vbsf h264_mp4toannexb out1.h264
$ ffmpeg -i output_0.mp4 -vcodec copy -vbsf h264_mp4toannexb out2.h264

Are these resulted files (out1.h264, out2.h264) elementary raw streams or still wrap into container? The 2 command produces the same file size, but with different errors:

ffmpeg -i input.flv -vcodec copy -vbsf h264_mp4toannexb out1.h264
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 23 2013 13:12:04 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libfaac --enable-libvo-aacenc --enable-libspeex
  libavutil      52. 40.100 / 52. 40.100
  libavcodec     55. 19.100 / 55. 19.100
  libavformat    55. 12.102 / 55. 12.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 81.102 /  3. 81.102
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  4.100 /  2.  4.100
  libswresample   0. 17.103 /  0. 17.103
  libpostproc    52.  3.100 / 52.  3.100
Input #0, flv, from 'input.flv':
  Metadata:
    creationdate    : Mon Oct 22 21:17:12
    duration2       : 7497
  Duration: 00:00:07.78, start: 0.000000, bitrate: 280 kb/s
    Stream #0:0: Video: h264 (Baseline), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 20 tbr, 1k tbn, 40 tbc
    Stream #0:1: Audio: speex, 16000 Hz, mono, s16
Output #0, h264, to 'out1.h264':
  Metadata:
    creationdate    : Mon Oct 22 21:17:12
    duration2       : 7497
    encoder         : Lavf55.12.102
    Stream #0:0: Video: h264, yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-31, 90k tbn, 20 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec copy: Invalid argument
[h264 @ 0x7fe71a830200] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 186390 >= 186390
[h264 @ 0x7fe71a830200] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 289890 >= 289890
Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec copy: Invalid argument
[h264 @ 0x7fe71a830200] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 368370 >= 368370
[h264 @ 0x7fe71a830200] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 373860 >= 373860
[h264 @ 0x7fe71a830200] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 419670 >= 419670
    Last message repeated 1 times
[h264 @ 0x7fe71a830200] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 445500 >= 445500
Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec copy: Invalid argument
[h264 @ 0x7fe71a830200] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 548280 >= 548280
frame=  155 fps=0.0 q=-1.0 Lsize=     236kB time=00:00:07.75 bitrate= 249.6kbits/s
video:237kB audio:0kB subtitle:0 global headers:0kB muxing overhead -0.113938%


ffmpeg -i output_0.mp4 -vcodec copy -vbsf h264_mp4toannexb out2.h264
ffmpeg version 2.0 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 23 2013 13:12:04 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libfaac --enable-libvo-aacenc --enable-libspeex
  libavutil      52. 40.100 / 52. 40.100
  libavcodec     55. 19.100 / 55. 19.100
  libavformat    55. 12.102 / 55. 12.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 81.102 /  3. 81.102
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  4.100 /  2.  4.100
  libswresample   0. 17.103 /  0. 17.103
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output_0.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.12.102
  Duration: 00:00:07.93, start: 0.100000, bitrate: 345 kb/s
    Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 251 kb/s, 20.12 fps, 20 tbr, 16k tbn, 40 tbc
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 16000 Hz, mono, fltp, 96 kb/s
    Metadata:
      handler_name    : SoundHandler
Output #0, h264, to 'out2.h264':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.12.102
    Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=2-31, 251 kb/s, 20.12 fps, 90k tbn, 20 tbc
    Metadata:
      handler_name    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec copy: Invalid argument
Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec copy: Invalid argument
Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec copy: Invalid argument
frame=  155 fps=0.0 q=-1.0 Lsize=     236kB time=00:00:07.85 bitrate= 246.5kbits/s
video:237kB audio:0kB subtitle:0 global headers:0kB muxing overhead -0.113938%

comment:10 Changed 6 years ago by mikhailov

Great, it works:

ffmpeg -i input.flv -an -c:v copy -vbsf h264_mp4toannexb output.h264
ffmpeg -i input.flv -vn -c:a libvo_aacenc -ab 96k -ac 1 output.aac
ffmpeg -i output.h264 -i output.aac -c copy -bsf:a aac_adtstoasc output.mp4

But it produces few out-of-sync issues. Ticket #2085 provides out-of-sync as well.

Last edited 6 years ago by mikhailov (previous) (diff)
Note: See TracTickets for help on using tickets.