
On the Road to WebRTC 1.0, Including VP8 - OberstKrueger
https://webkit.org/blog/8672/on-the-road-to-webrtc-1-0-including-vp8/
======
bobowzki
I like WebRTC but it's a complicated mess of protocols...

I'm currently trying to implement a WebRTC peer client in pure Erlang. One of
the most difficult things I've done because WebRTC relies on several hundred
pages of RFCs.

~~~
kodablah
Yup, lots of telephony-inspired RFCs in there. If you're not already, I
suggest referencing [0] as you develop, it's a great project that is also
really easy to read what's happening underneath.

0 - [https://github.com/pions/webrtc](https://github.com/pions/webrtc)

~~~
stcredzero
Thank goodness for pions webrtc! I changed my MMO's dev version over to it a
couple months ago. This is going to be tons better than the node-electron
webrtc proxies running under tmux I was using. Between this, nanomsg, and
BadgerDB, I'm going to be removing all of my non-golang dependencies, which is
going to enable some very cool stuff.

For one thing, I now have _edge servers_ in my architecture. This means that I
can now use my ability to serialize the state of a game instance server
process, then inject it into another process without any participation from
the client. This will make hot code updates really slick.

~~~
Sean-Der
That is great to hear :)

If there is anything we can do to make it better I would love to work on
fixing anything that comes up, thanks for using Pion!

------
aclatuts
This isn't as useful if webviews in iOS don't have the same apis enabled.

It is very annoying that other browsers on iOS probably wont have access to
these features and updates.

~~~
JimDabell
If it's not enabled in web views, there's nothing stopping browsers from
polyfilling it with native code.

~~~
untog
There is _everything_ stopping you. WKWebView runs in its own process and has
very limited options for integrating native code.

~~~
JimDabell
The model I was thinking of was native code in the native app, injected
polyfill that talks to the native code over a message bus. The native code can
draw over the top of the web view and pass messages in. Is there anything in
particular stopping that?

~~~
Klathmon
I believe the problem is the "message bus" is pretty slow, and has pretty
limited throughput, especially for something like audio and video.

------
qwerty456127
> The VP8 video codec is widely used in existing WebRTC solutions. It is now
> supported as a WebRTC-only video codec in Safari 12.1 on both iOS and macOS
> betas.

For Steve's sake! Why not add VP8 and OPUS system-wide already when they
already even are built in different parts of the system?

~~~
awill
probably because Apple doesn't have hardware acceleration for vp8. They don't
want developers to use it. It'll be an inferior UX. Less battery, hotter
device.

It's a bit arrogant for them to compare battery life of h264 to vp8, as
they've chosen not to support hardware accelerated vp8. All Android devices
have had this for years.

I'm hoping this all settles out with av1. Netflix and Amazon will support av1,
so that doesn't leave Apple with much choice.

~~~
vetinari
The Intel chips that Apple uses support VP8 decoding since Broadwell and
encoding since Cherryview/Braswell. On the mobile side, it was their conscious
decision not to support it, just like they newer supported the free audio
codecs or container formats either.

------
nottorp
All I know about WebRTC is Chrome preventing sleep on my systems with "WebRTC
has active peer connections". Made me ditch Chrome before it was fashionable
to de-google.

So the only new feature i want from this WebRTC thingy is... an OFF button.

~~~
sempron64
In addition to being annoying, WebRTC is a privacy hazard and I believe it
should be off by default. I install this to make it so
[https://addons.mozilla.org/en-US/firefox/addon/happy-
bonobo-...](https://addons.mozilla.org/en-US/firefox/addon/happy-bonobo-
disable-webrtc/)

~~~
kmlx
isn’t webrtc by default off on all browsers? aren’t websites asking for
permssion before the js is allowed access? and won’t it stay off when you deny
the request?

~~~
SahAssar
Nope, the audio/video capture requires permission, but the rest should work
without a permission prompt.

~~~
kmlx
"but the rest should work without a permission prompt"

what "rest" are you referring to?

~~~
sempron64
Connections can be made to other computers without explicit permission.

~~~
kmlx
ah, i believe you are referring to the webrtc data channel. it leaks local
IPs, but the severity depends on several factors, including whether you're
running VPN and what you're using the VPN for, or just running behind a
regular local network.

if you're running behind a regular local network then I wouldn't consider the
local IP leakage as a "privacy hazard". local IPs are compromised already.
everywhere. they are easy to guess. they are easy to obtain in native apps.
etc.

there are issues when it comes to places where VPN access is crucial/vital.
thankfully, very few VPN providers leak your IP nowadays, and with drafts such
as what the poster above mentioned ([https://datatracker.ietf.org/doc/draft-
ietf-rtcweb-mdns-ice-...](https://datatracker.ietf.org/doc/draft-ietf-rtcweb-
mdns-ice-candidates/)) this problem will be history soon enough.

------
citrusui
I know it'll probably never happen, but I hope this somehow leads to Apple
supporting .webm in Safari.

~~~
ihuman
VP8 can only be contained in MKVs and WebMs files, so I do see this happening.
Apple is also part of the consortium working on AV1, the successor to VP8 and
VP9; it also uses the MKV and WEBM containers.

~~~
morganw
"uses the MKV and WEBM containers"

Maybe, but not exclusively

VP9:
[https://www.webmproject.org/vp9/mp4/](https://www.webmproject.org/vp9/mp4/)
(uses 'vp09' & 'vpcC' in the stsd)

AV1: [https://aomedia.org/wp-content/uploads/2018/09/AV1-ISO-
Base-...](https://aomedia.org/wp-content/uploads/2018/09/AV1-ISO-Base-Media-
File-Format-Binding-Specification.pdf) (uses 'av01' & 'av1C' in the stsd)

YouTube's AV1 playlist
[https://www.youtube.com/watch?v=2nXYbGmF3_Q&list=PLyqf6gJt7K...](https://www.youtube.com/watch?v=2nXYbGmF3_Q&list=PLyqf6gJt7KuHBmeVzZteZUlNUQAVLwrZS)

uses mp4 as the container for the av1 (av01.0.05M.08), webm for the VP9 (vp9)

    
    
      ./youtube-dl --list-formats https://www.youtube.com/watch?v=2nXYbGmF3_Q
        [youtube] 2nXYbGmF3_Q: Downloading webpage
        [youtube] 2nXYbGmF3_Q: Downloading video info webpage
        [info] Available formats for 2nXYbGmF3_Q:
        format code  extension  resolution note
        249          webm       audio only DASH audio   55k , opus @ 50k, 1.43MiB
        250          webm       audio only DASH audio   70k , opus @ 70k, 1.81MiB
        171          webm       audio only DASH audio  118k , vorbis@128k, 2.99MiB
        140          m4a        audio only DASH audio  128k , m4a_dash container, mp4a.40.2@128k, 3.65MiB
        251          webm       audio only DASH audio  133k , opus @160k, 3.38MiB
        278          webm       256x144    144p  101k , webm container, vp9, 30fps, video only, 2.57MiB
        160          mp4        256x144    144p  109k , avc1.4d400c, 30fps, video only, 1.02MiB
        242          webm       426x240    240p  205k , vp9, 30fps, video only, 2.81MiB
        133          mp4        426x240    240p  241k , avc1.4d4015, 30fps, video only, 2.27MiB
        243          webm       640x360    360p  377k , vp9, 30fps, video only, 5.08MiB
        395          mp4        426x240    240p  426k , av01.0.05M.08, 30fps, video only, 3.33MiB
        134          mp4        640x360    360p  514k , avc1.4d401e, 30fps, video only, 4.66MiB
        244          webm       854x480    480p  696k , vp9, 30fps, video only, 8.29MiB
        396          mp4        640x360    360p  751k , av01.0.05M.08, 30fps, video only, 6.04MiB
        135          mp4        854x480    480p  989k , avc1.4d401f, 30fps, video only, 8.54MiB
        397          mp4        854x480    480p 1175k , av01.0.05M.08, 30fps, video only, 9.86MiB
        247          webm       1280x720   720p 1282k , vp9, 30fps, video only, 12.27MiB
        136          mp4        1280x720   720p 1675k , avc1.4d401f, 30fps, video only, 14.43MiB
        398          mp4        1280x720   720p 2075k , av01.0.05M.08, 30fps, video only, 18.99MiB
        248          webm       1920x1080  1080p 2349k , vp9, 30fps, video only, 20.93MiB
        137          mp4        1920x1080  1080p 2768k , avc1.640028, 30fps, video only, 23.33MiB
        399          mp4        1920x1080  1080p 3759k , av01.0.05M.08, 30fps, video only, 39.32MiB
        18           mp4        640x360    medium , avc1.42001E, mp4a.40.2@ 96k, 11.11MiB
        43           webm       640x360    medium , vp8.0, vorbis@128k, 16.66MiB
        22           mp4        1280x720   hd720 , avc1.64001F, mp4a.40.2@192k (best)

~~~
ihuman
AVC1 is just H264[0]. FFmpeg says stream 0 is "Video: h264"

The page you linked about AV1 in mp4 says it uses MPEG-4 Part 31, which is
under development and not final [1]. Until now I was not aware they were
extending the MPEG-4 container standard to include more formats.

[0]
[https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Naming](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Naming)

[1]
[https://www.iso.org/standard/66062.html](https://www.iso.org/standard/66062.html)

~~~
TD-Linux
The GP shows both avc1 and av01, the latter of which is AV1.

~~~
ihuman
Yes. The post also said avc1 and av01 are both av1, when just av01 is av1.

~~~
brigade
I think you misread av1C (av1's equivalent of avcC) as avc1

------
kodablah
> Safari also comes with additional improvements, including better support of
> capture device selection, experimental support of the screen capture API,
> and deprecation of the WebRTC legacy API.

Looking very much forward to this. Currently my plugin-free in-browser screen-
sharing tool [0] only works in FF and Chrome. The real question is will mobile
browsers offer it. In general though, I am impressed with how well screen
capturing over WebRTC works and so far haven't seen that many people needing a
TURN server.

0 -
[https://github.com/cretz/myscreen.live](https://github.com/cretz/myscreen.live)

------
derf_
As someone who harassed you about VP8 support in the past [0], this is really
great news. Thank you for all of your hard work. I am also really happy to see
the transition to Unified Plan.

[0]
[https://news.ycombinator.com/item?id=14510045](https://news.ycombinator.com/item?id=14510045)

------
ksec
Under what situation is H.264 not available in WebRTC and require the use of
VP8?

~~~
rhn_mk1
Free software. The Cisco H.264 codec supplied with Firefox cannot be
distributed with other software, despite being "open". From
[https://www.openh264.org/](https://www.openh264.org/) , there seem to be
licensing costs involved with the usage of this code, which have been waived
for some uses, implying they were not waived for others:

> We will not pass on our MPEG-LA licensing costs for this module, and based
> on the current licensing environment, this will effectively make H.264 free
> for use on supported platforms.

EDIT: To clarify, such licensing requirements on H.264 may make codecs fall
outside of the guidelines of software distributions allowing only free
software, making them supply their browser without one.

~~~
detaro
If I remember correctly, only decoding for online video streaming doesn't
require licensing fees. Cisco hits the fee cap with the products they sell
already, so letting everyone use their binaries doesn't cost them anything.

~~~
TingPing
Right the core problem is you have to use their binaries so Mozilla can't
build it and ship their own.

------
therealmarv
VP8 and VP9 hardware decoder acceleration is common on new products nowadays?!
Or is this only the case on non Apple Smartphones?

btw: Looking forward to AV1 HW decoder accelerated CPUs.

------
kmlx
excellent news. the webkit team are really improving their webrtc offering.

i feel the next great leap for webrtc is wasm + webrtc:

[https://www.google.co.uk/amp/s/bloggeek.me/webassembly-in-
we...](https://www.google.co.uk/amp/s/bloggeek.me/webassembly-in-webrtc/amp/)

~~~
Sean-Der
This is super exciting, so many cool things happening here.

I haven't had a chance to grok it fully yet but someone added WASM support to
pion recently [0] you will able to just write your code once in Go and
_should_ work in both places!

[https://github.com/pions/webrtc/blob/master/examples/README....](https://github.com/pions/webrtc/blob/master/examples/README.md#webassembly)

~~~
kmlx
wow, that's brilliant.

------
EGreg
Is there a way to do WebRTC without revealing your IP to some signaling
server?

~~~
kabes
If you know the ip adress of the peer and you can adress him directly. You
dont need a signaling server in that case.

------
shmerl
When will Safari support Opus audio codec in Ogg container?

