Closed Bug 1174784 Opened 7 years ago Closed 7 years ago

YouTube video playback broken with Android version in UA string (because they are serving 3GP instead of MP4)

Categories

(Web Compatibility :: Mobile, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: miketaylr, Assigned: karlcow)

References

Details

(Keywords: verifyme, Whiteboard: [country-all][serversniff][sitewait] [uaoverride])

STR: With an Android version in the Fennec UA String (which is coming soon),

1) Visit m.youtube.com
2) Click on any video

Expected: Plays
Actual: "Video can't be played because the file is corrupt."

Looking at this, we are getting sent an mp4 video--but we don't know how to decode it. So based on the UA string Google is sending something slightly different.

For example, in the console I see:

Media resource http://r1---sn-uhvcpax0n5-q4fl.googlevideo.com/videoplayback?mv=m&pl=24&mt=1434386712&sparams=dur%2Cid%2Cip%2Cipbits%2Citag%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Csource%2Cupn%2Cexpire&ms=au&id=426496034a159787&fexp=903945%2C9407016%2C9407887%2C9408093%2C9408142%2C9408420%2C9408710%2C9409172%2C9409228%2C9413155%2C9413503%2C9414917%2C9415304%2C9415636%2C9416137%2C9416362%2C952640%2C962714&itag=36&signature=870B4EE04BAB65E78225D177A5130CF519CE1865.1E8610B1EEC27B33148C84FCBBF9A82BE7798B56&expire=1434408355&sver=3&ip=208.54.86.142&mime=video%2F3gpp&key=yt5&ipbits=0&mn=sn-uhvcpax0n5-q4fl&source=youtube&mm=31&upn=e9MojxtfZ_I&dur=816.831&cpn=MNGsJsOJE0c8PEJG could not be decoded.

However, if you spoof from Desktop, the same video plays.
We can use a UA override to fix this (which should be in place before we ship the UA version, IMO). But that depends on Bug 1163759.

In the meantime, we should reach out to Google and let them know about this upcoming change.

Karl, can you pass this along?
Depends on: 1163759
Whiteboard: [country-all][serversniff][contactready]
This is possibly related to Bug 1167647, given that it works in Desktop and not in Fennec. 

Output from ffprobe:

See Also: → 1167647
Cool, thanks Bugzilla for swallowing my emoji. Actual output:

ffprobe -loglevel error -show_streams youtube.mp4 
[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=Constrained Baseline
codec_type=video
codec_time_base=1/48
codec_tag_string=avc1
codec_tag=0x31637661
width=358
height=272
has_b_frames=0
sample_aspect_ratio=1:1
display_aspect_ratio=179:136
pix_fmt=yuv420p
level=13
color_range=N/A
color_space=unknown
timecode=N/A
id=N/A
r_frame_rate=24/1
avg_frame_rate=24/1
time_base=1/24
start_pts=0
start_time=0.000000
duration_ts=53613
duration=2233.875000
bit_rate=253721
max_bit_rate=N/A
nb_frames=53613
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
TAG:creation_time=1970-01-01 00:00:00
TAG:language=und
TAG:handler_name=VideoHandler
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
profile=unknown
codec_type=audio
codec_time_base=1/44100
codec_tag_string=mp4a
codec_tag=0x6134706d
sample_fmt=fltp
sample_rate=44100
channels=2
channel_layout=stereo
bits_per_sample=0
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/44100
start_pts=0
start_time=0.000000
duration_ts=98513920
duration=2233.875737
bit_rate=95999
max_bit_rate=N/A
nb_frames=96205
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
TAG:creation_time=2015-03-26 11:27:09
TAG:language=und
TAG:handler_name=IsoMedia File Produced by Google, 5-11-2011
[/STREAM]
Blocks: 1169772
Mike: Does it change depending the version number which is being sent?

Contacted Google about it.
Flags: needinfo?(kdubost) → needinfo?(miket)
YouTube has been contacted.

> FYI, I've filed a bug with the YouTube mobile web team on this. Thanks for the report.

Also they asked about the UA.
I replied:


=================
Here the version of Firefox is not relevant, aka 36.0

Previously and still out there (do not deprecate this)
Mozilla/5.0 (Android; Mobile; rv:36.0) Gecko/36.0 Firefox/36.0'

The modifications:
Mozilla/5.0 (Android Version_number; Mobile; rv:36.0) Gecko/36.0 Firefox/36.0'


The version_number will probably not be < 4.4
To note that this is mainly to pass some JS on the Web which are blocking for some version numbers and/or the lack of it. So it's not necessary representative of the video features supported by the device.
=================
Assignee: nobody → kdubost
Status: NEW → ASSIGNED
Whiteboard: [country-all][serversniff][contactready] → [country-all][serversniff][sitewait]
(In reply to Karl Dubost :karlcow from comment #4)
> Mike: Does it change depending the version number which is being sent?

I didn't test different versions, just 4.4.

> Contacted Google about it.

Thanks!
Blocks: 1175305
No longer blocks: 1175305
Blocks: 1175301
Whiteboard: [country-all][serversniff][sitewait] → [country-all][serversniff][sitewait] [uaoverride]
Karl, can we ping Youtube/Google again? Bug 1178760 may be fallout from this (still investigating why the override isn't working?).
Interesting results:

On 41 + 42 Tablet UA (includes Android version) (Nexus 7): inline HTML5 video works (cool!)
On 40 Tablet UA (does not include Android version): we're sent off to Youtube app

On 41 + 42 Mobile UA (includes Android version) (Nexus 7): https://cloudup.com/cbi3ICZf9_E "Video format or MIME type is not supported"
On 40 Mobile UA (does not include Android version): we're sent off to Youtube app

Bug 1179300 will override the UA string for Aurora and Nightly so we can at least get back to the app behavior for mobile. Unfortunately that will mean that tablet (at least on Nexus 7?) will go back to app behavior.

The best scenario here is to have inline HTML5 video in mobile *and* tablet.
I wonder if there are cases where the  inline HTML5 video is not working on tablets because of certain expectations. Also I remember a previous email from Google about YouTube API (from August 2014).

> MSE is used by default for playback of most videos 
> in FF Nightly (v34). Some popular music content may 
> not work with the HTML5 player yet.
> 
> VP9 is used by default in the HTML5 player for 
> popular videos (e.g. [1]) where transcodes are 
> available. You can pick any unpopular video (e.g. 
> [2]) if you want H.264.
> 
> [1]: https://www.youtube.com/watch?v=ovqM72em1dA
> [2]: https://www.youtube.com/watch?v=pwg7BUxWFEs
Flags: needinfo?(kdubost)
It was related to Bug 980833
See Also: → 1179532
Blocks: b2g-youtube
Duplicate of this bug: 1190991
@Karl - Did we ever re-ping the contacts at YouTube/Google on this issue?
Flags: needinfo?(kdubost)
Mike is still the same since YouTube released their new player last week?
Flags: needinfo?(kdubost) → needinfo?(miket)
Nope, with the override removed we still get the "Video format or MEME type is not supported."
Flags: needinfo?(miket)
Sent a reminder to Google today.
Anthony says YouTube is serving us 3GP instead of MP4.
Summary: Youtube video playback broken with Android version in UA string → YouTube video playback broken with Android version in UA string (because they are serving 3GP instead of MP4)
None of these problems are present if the video is embedded, for example the following link offers a fully working YouTube player in Firefox for Android: https://www.youtube.com/embed/GrJczjVT0Xk

However it is not optimized for mobile. The interface has no difficulties with identifying the type of files the browser can play, but for some reason they are not using the same method for their mobile player version resulting in being unable to play videos in the browser (opens in their app only) or when it tries to play it throws a mimetype error because it is trying to play a format that the browser does not handle (the before mentioned 3gp).

It would be best for now if YouTube would use in the mobile player the same behavior as the desktop player to identify and load the correct files.
YouTube says this issue is known and assigned, but a fix will be a few more days away.
Duplicate of this bug: 1179532
Mike, is YouTube still serving 3GP to Fennec when "Android" is in the UA string?
Flags: needinfo?(miket)
YouTube change to stop serving 3GP to Fennec is out of the experiment phase and is partially launched.  Launch should be 100% later this week.
Thanks Richard.

Chris, in my tests we're getting video/mp4 (\o/), but video playback is busted in Nightly (see 1211443) so I can't confirm that it works yet. Hopefully the fix for that will land soon.
Depends on: 1211443
Flags: needinfo?(miket)
Today's Nightly has the video playback problems fixed, and navigating to the URL in comment 16 gives me DASH MP4. Works well.
Just confirmed in-browser h264 video playing for me (though snorp doesn't see it yet, so still being rolled out). Awesome!

Let's wait until the roll-out is complete to close.

https://cloudup.com/cnkKl0J8sIM
woot!
Blocks: 1217055
OK, it seems like this is working everywhere now (for me, and some others I've asked to test).
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Keywords: verifyme
Resolution: --- → FIXED
Product: Tech Evangelism → Web Compatibility
You need to log in before you can comment on or make changes to this bug.