New issue
Advanced search Search tips

Issue 891179 link

Starred by 2 users

Issue metadata

Status: Assigned
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

Chrome can't play a valid FLAC file

Reported by paul.s...@zomepower.com, Oct 2

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3558.0 Safari/537.36

Example URL:
https://drive.google.com/file/d/1alpHNNH_Ou4cSyRkJruezGfmoZypGU2b/view?usp=sharing

Steps to reproduce the problem:
1. Download this file: https://drive.google.com/file/d/1alpHNNH_Ou4cSyRkJruezGfmoZypGU2b/view?usp=sharing
2. Try playing it in Chrome

What is the expected behavior?
The file plays correctly

What went wrong?
The FLAC file did not play at all

Did this work before? No 

Is it a problem with Flash or HTML5? HTML5

Does this work in other browsers? Yes

Chrome version: 71.0.3558.0  Channel: n/a
OS Version: OS X 10.13.6
Flash Version: 

Contents of chrome://gpu: 

This file works correctly in Safari.  It does not work in Chrome or Firefox
 
Labels: Needs-Triage-M71
I made the fie publicly available 
Components: -Internals>Media Internals>Media>FFmpeg
Owner: jrumm...@chromium.org
Status: Assigned (was: Unconfirmed)
Huh, strange. The ffmpeg build on my macbook from July 2017 loads it just fine.

=>jrummell who's working on the current ffmpeg roll.

The file doesn't even make it past OpenContext() in Chrome:
https://cs.chromium.org/chromium/src/media/filters/ffmpeg_demuxer.cc?l=976
Might be that it has a huge id3 tag which exceeds the probe size we set for content.
Doesn't look like it though, flac header starts at ~4k in.
FFmpeg doesn't like the file having metadata and ID3v2 metadata. It logs "Discarding ID3 tags because more suitable tags were found." Chrome passes in option AV_EF_EXPLODE, so this is treated as a failure [1] (and that would explain why ffmpeg directly plays it, since the flag is off by default).

Not sure why this is a fatal error. Will see if FFmpeg will accept a change that always treats it as a warning.

However, after locally commenting out the failure, FFmpeg logging reports all kinds of issues:
     Before avformat_find_stream_info() pos: 140508137888864 bytes read:206158430232 seeks:32768 nb_streams:0
     sample/frame number invalid; utf8 fscked
     invalid sample size code (-1717201088)
     header crc mismatch
21x  sample/frame number mismatch in adjacent frames
     sample/frame number invalid; utf8 fscked
     All info found
     stream -1717199760: start_time: 0.000 duration: 0.000
     format: start_time: 0.000 duration: 0.000 bitrate=140508137888880 kb/s
     After avformat_find_stream_info() pos: 140508137888864 bytes read:206158430232 seeks:98304 frames:0
     invalid channel mode: -1717200624
3x   sample/frame number mismatch in adjacent frames 
     broken stream, invalid padding
     invalid channel mode: -1717200624
3x   sample/frame number mismatch in adjacent frames
     invalid sample size code (-1717200624)
... (lots more)
But the file seems to play OK, so it should be fine.


[1] https://cs.chromium.org/chromium/src/third_party/ffmpeg/libavformat/utils.c?l=643

Sign in to add a comment