Opened 4 years ago

Last modified 4 years ago

#3674 open defect

WMP does not accept sample aspect ratio close to 1 but != 1 in mov

Reported by: mfz Owned by:
Priority: important Component: avcodec
Version: git-master Keywords: mov libx264 regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:
I have a screen recorded video with frame rate 15, video codec H.264 (MP4) and AAC as audio. The target via FFmpeg should contain frame rate 25, height of 720 pixel and the codecs without change.

After encoding, the file is playable in VLC player, Chrome browser (HTML5 video tag) and Firefox. In Windows Media player I just get the audio played (no video to see) and in Internet Explorer 11, I get an error ("Unknown source.")

How to reproduce:

% ffmpeg -i input_file.mp4 -vf "scale='(trunc((out_h*a)/2)*2):(min(720, in_h))'" output_file.mp4
VERSION: N-63439-g96470ca
N-63439-g96470ca

Strange is: If I encode the video with a height of 718 or 722 (or any other height I tried), the video is playable anywhere - without problems.

Test video file for input (short, length of 1 second):
http://www.datafilehost.com/d/1ca920ac

Attachments (5)

ffmpeg-20140526-110709.log (12.7 KB) - added by mfz 4 years ago.
Report output for test case
h264_height_720_only_audio_in.mp4 (35.9 KB) - added by cehoyos 4 years ago.
different.mp4 (119.7 KB) - added by cehoyos 4 years ago.
equal1.mp4 (119.7 KB) - added by cehoyos 4 years ago.
equal2.mp4 (119.7 KB) - added by cehoyos 4 years ago.

Download all attachments as: .zip

Change History (10)

Changed 4 years ago by mfz

Report output for test case

Changed 4 years ago by cehoyos

comment:1 Changed 4 years ago by cehoyos

  • Keywords mov added; height audio windows media player internet explorer removed
  • Summary changed from Just audio without video in windows decoder to WMP does not accept sample aspect ratio close to 1 but != 1 in mov
  • Version changed from unspecified to git-master

The issue can be reproduced with the following command line:

$ ffmpeg -f lavfi -i testsrc=s=1280x832 -pix_fmt yuv420p -t 10 -vcodec h264 -vf scale=1106x720 out.mp4

Work-around is to specify -vf setsar=1

Since so many players have no problem with the sample aspect ratio: Did you report the problem to Micrososft?

comment:2 Changed 4 years ago by mfz

I could successfully use your specified workaround to get it working. Thanks a lot!

I have not yet reported the issue to Microsoft but will do exactly that in a minute.

comment:3 Changed 4 years ago by cehoyos

  • Keywords libx264 regression added; h264 removed
  • Priority changed from normal to important
  • Reproduced by developer set
  • Status changed from new to open

Seems to be a regression since 4557d7d0 related to ticket #570.

Changed 4 years ago by cehoyos

Changed 4 years ago by cehoyos

Changed 4 years ago by cehoyos

comment:4 Changed 4 years ago by cehoyos

I attached three addtional samples to make an analysis slightly simpler (and to show that the issue is not the different video and container sample aspect ratio):
Only equal1.mp4 can be played with WMP, both different.mp4 and equal2.mp4 fail.

The issue is not just a DAR overflow, I created a file with the following properties that plays fine:

Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x962 [SAR 1309:1307 DAR 837760:628667], 123 kb/s, SAR 7200:7189 DAR 833978:625829, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)

comment:5 Changed 4 years ago by cehoyos

$ ffmpeg -i equal1.mp4 -i equal2.mp4 -i different.mp4
ffmpeg version N-63441-g99d742a Copyright (c) 2000-2014 the FFmpeg developers
  built on May 26 2014 16:51:14 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --enable-libx264
  libavutil      52. 86.100 / 52. 86.100
  libavcodec     55. 65.100 / 55. 65.100
  libavformat    55. 41.100 / 55. 41.100
  libavdevice    55. 13.101 / 55. 13.101
  libavfilter     4.  5.100 /  4.  5.100
  libswscale      2.  6.100 /  2.  6.100
  libswresample   0. 19.100 /  0. 19.100
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'equal1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.41.100
  Duration: 00:00:10.00, start: 0.000000, bitrate: 98 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1106x720 [SAR 7200:7189 DAR 20:13], 94 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'equal2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.41.100
  Duration: 00:00:10.00, start: 0.000000, bitrate: 98 kb/s
    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1106x720 [SAR 1309:1307 DAR 723877:470520], 94 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from 'different.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.41.100
  Duration: 00:00:10.00, start: 0.000000, bitrate: 98 kb/s
    Stream #2:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1106x720 [SAR 1309:1307 DAR 723877:470520], 94 kb/s, SAR 7200:7189 DAR 20:13, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
At least one output file must be specified
Note: See TracTickets for help on using tickets.