Thursday, May 2, 2013

[Gd] Streaming to YouTube Live? Put an API on it!

| More

YouTube API Blog: Streaming to YouTube Live? Put an API on it!

If your YouTube channel can live stream, the YouTube Live Streaming API makes it easier for you to build tools and apps for live content on and off YouTube. With the YouTube Live platform, you have the ability to real-time transcode to a range of video qualities that support a broad set of devices and networks, dynamic bandwidth adjustment so viewers automatically see the highest quality stream their network supports, and DVR-like controls to allow viewers to pause, fast forward, and rewind during a live stream.

How to start developing with live streams

  • The basics
    • A broadcast represents a live event that you'll stream on YouTube. The API lets you schedule a broadcast, bind it to your live video stream, and update its status to testing, live, or complete.
    • A stream represents the actual broadcast content.
    • A cuepoint represents an ad break that can be inserted into a live broadcast. Cuepoints are only available to YouTube content partners.

  • Documentation
    • The Getting Started guide explains these concepts in more detail and explains how they interact with other YouTube Data API and YouTube Content ID API resources.
    • The Life of a Broadcast guide walks you through the typical steps for creating and managing a live broadcast on YouTube.
    • The YouTube Live Streaming Guide identifies the encoder settings, bitrates, and resolutions that the YouTube Live Streaming platform supports.

  • Sample code and tools
    • Client libraries for many different programming languages can help you implement the YouTube Live Streaming API as well as many other Google APIs.
    • Don't write code from scratch! Our Java, PHP, and Python code samples will help you get started.
    • The APIs Explorer lets you try out sample calls before writing any code.

In addition, in this video, we talk about the philosophy we followed in building the API and also see some great demos from our partners.

Awesome examples

Here are a few great examples from developers already using the API:

Capella’s Cambria Live

  • Capella’s Cambria Live encodes live broadcasts in real time and streams them to YouTube Live. Cambria Live takes uncompressed broadcast video directly from a camera via SDI or HDMI and compresses it into the H.264 format with AAC audio, ensuring optimal video and audio quality.

Elgato Game Capture HD

  • Elgato Game Capture HD enables you to stream PlayStation or Xbox gameplay to share it with your friends and fans as it happens. Elgato’s video products enable high-quality video recording and conversion for consumers and professionals alike.

  • Radioline designs and operates a cloud-based mobile internet radio. You can find or discover new radio stations according to their names, genres, areas or according to your favorite playlists.

This API is still experimental, so stay tuned here and subscribe to the YouTube for Developers channel to keep up on the latest.

-- Derek Tan, Satyajeet Salgar, and the YouTube Live Streaming API Team

[Gd] New features for the Google Drive Realtime API

| More

Google Apps Developer Blog: New features for the Google Drive Realtime API

We recently announced the launch of the Google Drive Realtime API that lets developers create collaborative apps with the same technology that powers Google Docs, Sheets, and Slides. Today we’ve added a couple of small, but very useful, features that let developers do even more with the Realtime API: undo and redo.

The new undo and redo features provide developers a way to easily undo (or redo) local changes without worrying about the complexities that can happen in a collaborative environment. The Realtime API automatically resolves potential conflicts from overlapping edits by collaborators to undo only the local changes.

The functions themselves are very simple to implement. The following code demonstrates how straightforward adding this functionality to your app can be:

if (model.canUndo) {

You could connect this code directly to an undo button in your app’s UI to undo the last change a local user made. No extra hard work required!

Undo and redo also come with an associated event emitted by the model class that lets you know when the features are available. You just need to attach an event listener to the model and wire up the appropriate UI changes to enable/disable undo/redo buttons. For example, you could add two buttons inside the <body> tag of your HTML document:

<button id="undoButton" disabled>Undo</button>
<button id="redoButton" disabled>Redo</button>

Then, add the following code inside the onFileLoaded callback inside your script to connect the logic to the buttons:

var model = doc.getModel();
var undoButton = document.getElementById('undoButton');
var redoButton = document.getElementById('redoButton');

undoButton.onclick = function(e) {
redoButton.onclick = function(e) {

Then add an event handler to enable and disable the buttons when local changes are available:

var onUndoRedoStateChanged = function(e) {
undoButton.disabled = !e.canUndo;
redoButton.disabled = !e.canRedo;
model.addEventListener(, onUndoRedoStateChanged);

For a complete example of this implementation, see the Realtime Quickstart.

The Realtime API makes implementing undo/redo features very straightforward for most applications. For more information, see the Realtime API documentation.

Greg Knoke Google+

Greg Knoke is a technical writer in the Google Drive Developer Relations Team. Prior to joining Google, he worked as a scientist developing image and signal processing algorithms. His current interests include new technologies, content management, information architecture, cooking, music, and photography.


[Gd] Google API infrastructure outage yesterday

| More

Google Developers Blog: Google API infrastructure outage yesterday

Author PhotoBy Louis Ryan, Software Engineer

We know that developers around the world depend on our APIs for their apps, sites and businesses every day. Unfortunately, we experienced an outage of the Google API serving infrastructure yesterday, April 30. This outage impacted most Google APIs, resulting in requests failing with a 500 error code. Additionally, users may have experienced missing features or capabilities from some Google services that rely on these APIs.

At 6:26 pm Pacific Time, we pushed a config change that inadvertently caused a widespread outage of our API infrastructure.  Our normal rollback procedure failed, delaying the rollback until 7:22 pm, at which time APIs started to recover. The outage was completely resolved by 8:00 pm.

We are making several changes to help ensure this issue won’t happen again. We’ve identified some key improvements to our release and rollback process that we are implementing immediately. Reliability is a top priority at Google, and we are continuously making improvements to our systems. We apologize to everyone who was affected.

Louis Ryan is an engineer on the API platforms team in Mountain View. Louis is passionate about making APIs faster, more consistent, and reliable.

Posted by Scott Knaster, Editor

[Gd] Download Google fonts to your desktop

| More

Google Developers Blog: Download Google fonts to your desktop

Author PhotoBy Raziel Alvarez, Google Fonts Team

The goal of Google Fonts has always been to bring beautiful, open-source fonts to the web, fast and free of cost. Starting today, you can download these fonts for offline access on your desktop. We’ve made all of the fonts from the Google Fonts directory available in SkyFonts, a tool from Monotype that allows you to install and sync fonts from the web onto your Windows or Mac OS X devices.

SkyFonts automatically updates the fonts installed on your system whenever they are updated on Google Fonts – for example, when new characters are added – ensuring you always have the latest fonts to work with. And with the fonts installed locally, browsing websites that use web fonts will be faster, since your browser won’t have to spend time fetching font data. If you’d rather download the source files to edit the font data directly, you can always do so from the project at Google Code.

So whether you’re a designer looking to incorporate popular web fonts into your typography, or you just want to improve your browsing speed by by keeping local, synced copies of fonts, you can take advantage of SkyFonts.

Raziel Alvarez is a software engineer interested in making computing more useful, and usable, through engaging applications and more natural user interfaces. He is part of the Google Fonts Team, responsible for unleashing text by bringing typographical diversity to the Web.

Posted by Scott Knaster, Editor

[Gd] Chrome Beta for Android Update

| More

Chrome Releases: Chrome Beta for Android Update

Chrome Beta for Android has been updated to 27.0.1453.74. This release contains new fixes including:
  • 225243: Links opened from other applications that do redirects do not load
  • 232878: Video play icon not aligned properly on
  • 235755: Fullscreen tab cropped in tab switcher
  • Crash fixes
Known Issues:
  • Embedded videos may be jittery on ICS devices
  • Typed character gets deleted sometimes on password fields
A partial list of changes in this build is available in the SVN revision log. If you find a new issue, please let us know by filing a bug. More information about Chrome for Android is available on the Chrome site.

Jason Kersey
Google Chrome

[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 27.0.1453.73 for Windows, Mac, Linux, and Chrome Frame. Full details about what changes are in this build are available in the SVN revision log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug.

Karen Grunberg
Google Chrome

[Gd] Admin Console Update

| More

Chrome Releases: Admin Console Update

The Admin Console has been updated. This update includes Managed Public Sessions, a new feature for managed devices that allow policy management without user login.

Known issues are available here. Enterprise customers can report an issue by contacting support.

Lawrence Lui
Google Chrome


[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 28.0.1490.2 for Linux, Mac, Windows, and Chrome Frame

This build addresses some known regressions and stability issues. Full details about what changes are in this build are available in the SVN revision log. Interested in switching release channels? Find out how.

If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome

Wednesday, May 1, 2013

[Gd] Preview the new Chrome packaged apps

| More

Chromium Blog: Preview the new Chrome packaged apps

A few months ago, we announced the developer preview of Chrome packaged apps and the Chrome App Launcher. That preview enabled you to to upload your Chrome packaged apps to the Chrome Web Store and test the app install flow. However, a Chrome packaged app was discoverable only if you had a direct link to it, not via searching and browsing the store.

Starting today Chrome packaged apps will be available in the Chrome Web Store for anyone on Chrome's developer channel on Windows and Chrome OS. You will notice that the “App” category now contains only the new Chrome packaged apps. A new category, called “Websites”, contains all existing hosted apps and legacy packaged apps.


Many of these apps are works in progress, which is why we’re only making them easily available on Chrome’s dev channel. If you’ve written a packaged app, or are working on one, now is a great time to get some early feedback and polish your app before Chrome packaged apps become more broadly available.

A number of developers have taken advantage of the early preview to publish apps that demonstrate the new powerful capabilities of the packaged apps platform. If you're looking for inspiration, we've highlighted a few of them for you to try out in the Web Store’s Apps category. If you’re not sure whether a Chrome packaged app is right for you, you can learn more at our developer site: As always, we welcome your feedback on our G+ Developers page or our developer forum.

Posted by Amanda Bishop, Product manager and (web) store keeper

Tuesday, April 30, 2013

[Gd] How Apps Script Makes Classroom Observation Quicker and Easier

| More

Google Apps Developer Blog: How Apps Script Makes Classroom Observation Quicker and Easier

Editor’s Note: Guest author Martin Hawksey is an advisor at the Jisc Centre for Educational Technology and Interoperability Standards. — Dan Lazin

When I started looking at Google Apps Script in 2010, one of the things that attracted me was the ease with which a non-developer like me could start customising Google Apps with only a few lines of code. Since then, the rich community of users and examples has continued to grow, and I’ve built event booking systems, entire student feedback solutions, and even integrated with Mozilla Open Badges.

Recently, Justin Marckel, the assistant principal at Cornatzer Elementary School in North Carolina, asked for help in modifying one of my existing Apps Script examples. Justin was recording teachers’ classroom activities using a Google Form, then manually copying and pasting data into separate spreadsheets for each teacher to review. Justin wanted to know whether there was a way for a Google Form to store the results in a master spreadsheet, then filter results to each teacher’s spreadsheet.

The basic pseudocode would be:

on form submit
if teacher’s spreadsheet doesn’t exist, then
create spreadsheet
add teacher as viewer
store id
get id
open teacher’s spreadsheet
copy values to teacher’s spreadsheet

Here’s a closer look at each of the steps.

Handling a form submission event

Apps Script offers three triggers specific to Google Sheets: “on open,” “on edit,” and “on form submit.” Looking at the Understanding Events documentation, we can see that a form submit trigger gives us a few options for how to pull the submitted values out of the event parameter (usually called e). We can get the data as an array via e.values, a Range object via e.range, or a JavaScript object that pairs the form questions with the respondent’s answers via e.namedValues. In this project, the e.values array is most convenient, and it will look something like this:

['2010/03/12 15:00', '', 'Bob', '27', 'Susan', '25']

First, though, we have to add the form-submission trigger. The user could add it manually from the script editor’s Resources menu, but in this case, let’s manage triggers programmatically:

function setup(){
if (ScriptApp.getScriptTriggers().length === 0) {

Creating and managing permissions on a spreadsheet

One of the big advantages Apps Script is that you’re automatically working in a Google-authenticated environment. The result is that you can programmatically create a new spreadsheet with one line of code, then add a teacher as a viewer in just one more line:

var newSS = SpreadsheetApp.create('Spreadsheet Name');

Writing data to a spreadsheet

Writing data to a sheet requires more than a one-liner just because we need to specify which cells to write to. The Range.setValues() method expects a 2D array; because we’ve already retrieved the response to the form as an array, it’s easy to throw those values into a row of cells:

var destSS = SpreadsheetApp.openById(id); // open teacher spreadsheet
var destSheet = destSS.getSheets()[0]; // grab first sheet
var insertRow = destSheet.getLastRow() + 1; // next row to enter data
destSheet.getRange(insertRow, 1, 1, e.values.length)

Simple, effective and efficient

The completed project is here. The bulk of the form-submission handling (including error logging) happens in around 50 lines of code, and I was able to complete the project within an hour. Now Justin no longer needs to copy, paste, and set up separate spreadsheets, potentially saving him hours of work. Justin recently contacted me to say:

“We have successfully used our program over the past couple of months to provide teachers with meaningful and efficient feedback. It has been successful at several other schools as well, and I got word today that our school district is looking at adopting it as a district-wide tool.”

This is just one of a growing number of examples of how Google Apps Script is directly benefitting educators by allowing custom solutions with the security, convenience, and power of Google Apps.

Martin Hawksey   profile | twitter | blog

Martin is an advisor at the Jisc Centre for Educational Technology and Interoperability Standards (CETIS), a national advisory and innovation centre that works on on educational technology and standards for the UK Higher Education and Post-16 Education sectors. Martin is an active contributor to the Apps Script community and regularly shares projects on his blog, MASHe.