New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Errors on Chrome 64.0.3282.119 #1529
Comments
Hey, thanks for the early report :) You are using Windows or MacOS, or maybe even Linux? (That's what we ask about in Unfortunately I can't verify this right now. But can you post the errors here, like a console log or even a screenshot? :) |
Hello, I think the OS doesn't affect the results. I have tested on MacOS High 10.13.2(The latest version) and Windows 10, and both of them got the same errors. The errors I got from the HLS dev demo page are:
The errors screenshot I got from console log when the video is loaded: and ... After I clicked the play, the following errors occurred: I have already fighted on this issues for 2 days, I have already tried the player videojs + videojs-contrib-hls and flowplayer, and I also got the errors. ( I think that's because they use hls.js as their HLS library ) Please take a look on it. Thank you very much. |
indeed i am able to repro (only after updating to Chrome 64, Chrome 63 is working fine on High Sierra) |
What codec is this stream using? FFmpeg suddenly got a lot pickier about the packets it accepts: https://bugs.chromium.org/p/chromium/issues/detail?id=794782 Thus far we've only seen junk in mp3 streams trigger this. |
Hi @dalecurtis, Thanks for your comment. ffmpeg -i for this video, I got: Input #0, hls,applehttp, from 'http://demo.stockweight.com/mmm/dir/ok.m3u8': This bug looks like it was caused by junk? audio stream. Thanks. |
Thanks for the info. I'll take a look. MSE (which is much stricter than ffmpeg) should be preventing you from even appending junk packets, so I'm not sure that's the root cause here. |
FFmpeg says: [aac @ 0x7f834f8f5000] SSR is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented. I'm surprised this worked at all in previous versions since apparently this has been an issue for years: https://trac.ffmpeg.org/ticket/1693 Probably this generated a non-fatal decoder error in the past, but resulted in a/v sync and other subtle issues over the lifetime of the stream. |
ffmpeg -i confirms the failure, $ ffmpeg -i http://demo.stockweight.com/mmm/dir/ok.m3u8 out.mp4 |
Yes. I also found this error(SSR is not implemented) and some of our videos also have this error. Starting from the newest version of Chrome, it can not play anymore. :( |
This is now tracked by https://bugs.chromium.org/p/chromium/issues/detail?id=808064 -- I don't expect this situation to change anytime soon though. Past Chrome versions were incorrectly dropping these packets and thus accumulating huge a/v sync delay over long streams. Unfortunately there doesn't seem to be a profile string which can be used to test for SSR support via isTypeSupported/canPlayType, so we can't codify this in the code. I've updated https://sites.google.com/a/chromium.org/dev/audio-video to make it clear only Main, HE, and LC profiles are supported. Notably Firefox drops the audio stream entirely for this playback, so I'm not sure it counts as successful playback. If this is okay for you, you can just play out only the video stream and Chrome will play the video portion of the content without issue. |
Thanks for the update. If I want to avoid this error, is there any tools or parameters in FFmpeg I can use if the audio source has SSR. It looks like FFmpeg will not support SSR in the soon future. Since the SSR is not supported in FFmpeg and cannot be played in Chrome, is there any solution that we can use if source video contains SSR audio? Btw, Firefox can play this video if you upgrade to the newest version. The old version indeed returns the errors. Thank you. |
I've stumbled upon this as well: https://stackoverflow.com/questions/48584075/audio-playback-halts-on-chrome-64 |
@chianhsieh You should be able to re-encode the stream w/o SSR if you build/get ffmpeg with libfdk-aac support since that aac library has SSR support. See https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_aac There's otherwise no workaround but dropping the audio stream for Chrome. As noted on the Chrome bug this has never worked, in M63 your sample video loses ~1 second of a/v sync every 10 seconds; note the end time of audio @ 18 seconds vs clip length of 20 seconds. |
I have already built the libfdk_aac with ffmpeg but it does not support AAC SSR and shows the "SSR is not implemented" either. Is there other transcoding tools or library that can support to process the AAC SSR? Thank you. |
For ffmpeg you need to specify the "-acodec libfdk_aac" before the "-i" input line to control decoder selection. This still emits some errors on some unsupported AAC features but otherwise generates an output of the correct duration. I.e. ./ffmpeg -acodec libfdk_aac -i ~/Downloads/ok.m3u8?v=1 -acodec libfdk_aac -vcodec copy out.mp4 [libfdk_aac @ 0xa66940] aacDecoder_DecodeFrame() failed: 400a 400a is AAC_DEC_UNSUPPORTED_GAIN_CONTROL_DATA = 0x400A, /*!< Gain control data found but not supported. Most probably the bitstream is corrupt, or has a wrong format. */ |
We started to get decode errors on some HLS media in Chrome after it's update, without any meaningful debug info ("Failed to send audio packet for decoding: timestamp=0 duration=23219 size=9 side_data_size=0 is_key_frame=1 encrypted=0 discard_padding (ms)=(0, 0)"). It showed up that erroneous media have audio encode errors:
Simple ffmpeg run fixes this issue:
Though audio is somehow corrupt, playback in other browsers show no noticeable issues and ffmpeg could fix the stream, therefore I suppose this may be considered as Chrome regression bug. |
I've added SSR parsing support to upstream ffmpeg, you shouldn't need to use libfdk anymore if you have a version of ffmpeg from the last couple weeks. If you're still getting errors though, your file is likely just corrupt. |
I have the same just streaming audio: |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
I have the same issue. On Google Chrome (ver. 67.0.3396.99 64-bit) one of MP4 videos after 8 seconds playing return an error: |
This issue is not reproducible in Mozilla browser |
Reopening this for visibility, as it is still an issue. http://bob.jwplayer.com.s3.amazonaws.com/CBC_DRAGONS_SEASON_11_S11E09-v2-11272128-158ce85e027.28/CBC_DRAGONS_SEASON_11_S11E09-v2-11272128.m3u8 is a sample stream. |
Whenever someone encounters this, the first thing you should do is check the quality of the audio stream using ffmpeg. Do you have a specific segment which is failing? Can you include the chrome://media-internals error that you see for that stream? ffmpeg -i http://bob.jwplayer.com.s3.amazonaws.com/CBC_DRAGONS_SEASON_11_S11E09-v2-11272128-158ce85e027.28/CBC_DRAGONS_SEASON_11_S11E09-v2-11272128.m3u8 -vn -f wav -y /dev/null In this case, no errors seem to appear in the stream, so from Chrome's side I'd need to know the exact segment you're appending that's triggering a decoder error. Since there appear to be no stream errors, it could be a transmuxing or usage bug in hls.js or actual bug in Chrome. |
@dalecurtis Thanks for the insight. Reopening was premature; this is definitely an issue on our end with AAC transmuxing, as it also happens in FF. The media error is:
Would be nice to have more insight into what we're doing wrong here but fortunately our logs are pointing to the probable cause.
For my own education would you mind elaborating on this some more? It's sometimes hard to tell what things will actually cause issues. Some commands would be helpful! |
I just meant try the stream in a recent build of ffmpeg. i.e. with something like: ffmpeg -i -vn -f wav -y /dev/null In english that's: input is (-i), ignore the video stream (-vn), output to wav (-f), don't ask permission for overwrite (-y), and write to /dev/null (discard output on Linux). That should spit out a log for any decoding errors. Since Chrome uses ffmpeg under the hood if a segment fails decode there you'll see it in the log as well. You might also add something like '-v debug' to see more informational messages about what's going wrong. Usually the error is enough to go find the code and see specifically what's wrong with the stream, but probably from a user's perspective as soon as you see an error I'd recommend just re-encoding that segment with an updated / fixed version. |
@dalecurtis Very helpful, thanks a lot! |
I'm still seeing this issue today reliably with a segment ffmpeg -i ~/Downloads/QmUR6MeguuuvstqeK5q4q2EoroWQiY5d9bt1QqrzMEpQyd -vn -f wav -y /dev/null
I can't seem to find good reference on "error in spectral data." Any thoughts? |
This is where your error is coming from: You'd have to look into your encoder and peek at the bitstream where the error is occurring to diagnose further. |
Hi, I have encontered the same problem today. According to your comment, does this mean that some part of the video is invalid or broken so that it couldn't be decoded correctly? |
Yes, specifically some part of the audio stream. |
Environment
https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fdemo.stockweight.com%2Fmmm%2Fdir%2Fok.m3u8%3Fv%3D1&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined
This is a very wired bug. Before this version of Chrome, the video can play without any problem. After I upgraded the Chrome to 64.0.3282.119( This version was released on January 24, 2018), the errors were occurred.
If you try to open the URL by Safari or Firefox or IE, you can also play the video without any errors.
Please help me to check the root cause.
Thank you.
The text was updated successfully, but these errors were encountered: