Opened 12 years ago
Closed 12 years ago
#3443 closed defect (fixed)
h264_mp4toannexb filter causes artefacts
| Reported by: | eelco | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | avcodec |
| Version: | git-master | Keywords: | h264 |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
When copying a h.264 stream to a TS file, the result does not play cleanly but contains several artefacts. This only happens for certain input.
How to reproduce:
$ ffmpeg -i input.m4v -c:a copy -c:v copy -bsf h264_mp4toannexb copied.ts
ffmpeg version N-61143-g64e4bd7 Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 7 2014 10:57:23 with Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
configuration: --prefix=/Users/eelco/Projects/Beamer/FFmpeg/build/ --disable-ffserver --disable-doc --extra-cflags='-DMACOSX_DEPLOYMENT_TARGET=10.9 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.9 -I/Users/eelco/Projects/Beamer/FFmpeg/build//include' --extra-ldflags='-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -mmacosx-version-min=10.9 -L/Users/eelco/Projects/Beamer/FFmpeg/build//lib'
libavutil 52. 66.101 / 52. 66.101
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.101 / 55. 33.101
libavdevice 55. 11.100 / 55. 11.100
libavfilter 4. 3.100 / 4. 3.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 18.100 / 0. 18.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.m4v':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isomavc1
creation_time : 2014-03-04 16:07:22
title : American Hustle t03 - iFlix
encoder : iFlicks 2.0.2.2166
hd_video : 1
media_type : 9
gapless_playback: 0
Duration: 00:03:26.34, start: 0.000021, bitrate: 17699 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 17535 kb/s, 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2014-03-04 16:07:22
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 156 kb/s (default)
Metadata:
creation_time : 2014-03-04 16:07:22
File 'copied.ts' already exists. Overwrite ? [y/N] y
Output #0, mpegts, to 'copied.ts':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42isomavc1
gapless_playback: 0
title : American Hustle t03 - iFlix
media_type : 9
hd_video : 1
encoder : Lavf55.33.101
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 17535 kb/s, 23.98 fps, 90k tbn, 23.98 tbc (default)
Metadata:
creation_time : 2014-03-04 16:07:22
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, 156 kb/s (default)
Metadata:
creation_time : 2014-03-04 16:07:22
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[adts @ 0x7fdb12809800] Encoder did not produce proper pts, making some up.
frame= 4947 fps=573 q=-1.0 Lsize= 481239kB time=00:03:26.33 bitrate=19106.3kbits/s
video:441654kB audio:3940kB subtitle:0 data:0 global headers:0kB muxing overhead 7.999454%
Note that the input file is already problematic for some players.
| player | input | copied |
|---|---|---|
| ffplay | incorrect framerate | artefacts and incorrect framerate |
| QuickTime Player | no problems | artefacts |
| MplayerX | garbled | artefacts |
Attachments (5)
Change History (11)
by , 12 years ago
| Attachment: | mplayerx-input.png added |
|---|
by , 12 years ago
| Attachment: | ffplay-copied.png added |
|---|
by , 12 years ago
| Attachment: | mplayerx-copied.jpg added |
|---|
by , 12 years ago
| Attachment: | quicktime-player-copied.jpg added |
|---|
comment:1 by , 12 years ago
comment:2 by , 12 years ago
I cannot find the (necessary) input file, could you upload it again?
Output files are typically unneeded.
comment:4 by , 12 years ago
| Component: | undetermined → avcodec |
|---|---|
| Keywords: | h264 added |
| Reproduced by developer: | set |
| Status: | new → open |
Replying to eelco:
player input ffplay incorrect framerate
Unrelated to your ticket (that is reproducible):
The file 3443-input.m4v that you uploaded plays in-sync here with ffplay and the frame-rate looks expected. What do I miss?
The problem that remuxing the h264 stream of the mp4 sample with the h264_mp4toannexb bitstream filter leads to massive artefacts is reproducible, not a regression afaict. I have remuxed the beginning of the sample to mp4 and the resulting file allows to reproduce the issue here:
$ ffmpeg -i 3443-input_remux.m4v -vcodec copy -vbsf h264_mp4toannexb out.h264
ffmpeg version N-61143-g64e4bd7 Copyright (c) 2000-2014 the FFmpeg developers
built on Mar 7 2014 10:48:59 with gcc 4.7 (SUSE Linux)
configuration: --enable-gpl --enable-libvorbis --enable-libvpx
libavutil 52. 66.101 / 52. 66.101
libavcodec 55. 52.102 / 55. 52.102
libavformat 55. 33.101 / 55. 33.101
libavdevice 55. 11.100 / 55. 11.100
libavfilter 4. 3.100 / 4. 3.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 18.100 / 0. 18.100
libpostproc 52. 3.100 / 52. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '3443-input_remux.m4v':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
title : American Hustle t03 - iFlix
encoder : Lavf55.33.101
media_type : 9
hd_video : 1
gapless_playback: 0
Duration: 00:00:02.00, start: 0.000000, bitrate: 9642 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 9635 kb/s, 23.99 fps, 23.98 tbr, 16k tbn, 47.95 tbc (default)
Metadata:
handler_name : VideoHandler
Output #0, h264, to 'out.h264':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
title : American Hustle t03 - iFlix
gapless_playback: 0
media_type : 9
hd_video : 1
encoder : Lavf55.33.101
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 9635 kb/s, 23.99 fps, 90k tbn, 23.98 tbc (default)
Metadata:
handler_name : VideoHandler
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 48 fps=0.0 q=-1.0 Lsize= 2354kB time=00:00:01.91 bitrate=10055.2kbits/s
video:2354kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead 0.006970%
out.h264 shows massive artefacts on playback.
by , 12 years ago
| Attachment: | 3443-input_remux.m4v added |
|---|
comment:5 by , 12 years ago
Sorry, I used an older version of ffplay (not from the same build), so that’s probably my fault.
comment:6 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |
Seems to be fixed in 289b149cec, thanks!



Input and output files are uploaded to upload.ffmpeg.org as
3443-input.m4vand3443-copied.tsrespectively.To be clear, I’m suspecting h264_mp4toannexb to be the cause of this because transcoding the video (e.g.,
ffmpeg -i input.m4v -c:a copy -c:v libx264 transcoded.mp4) works as expected.