Adobe AIR. NativeProcess. FFMPEG. Awesome

  • View
    2.586

  • Download
    0

  • Category

    Software

Preview:

DESCRIPTION

April 8 2014: Rocky Mountain Adobe User Group

Citation preview

Adobe AIR.

NativeProcess.

FFMPEG. Awesome.ROCKY MOUNTAIN ADOBE USER GROUP – APRIL 8 2014

Introduction

Flash Player and AIR… What’s Up?

FFMPEG: CLI Transcoder

AIR NativeProcess API

VOD Transcode

Live Streaming

Closing Remarks

Joseph Labrecque

Senior Interactive Software Engineer | Adjunct FacultyUniversity of Denver

Proprietor | OwnerFractured Vision Media, LLC

Adobe Community ProfessionalAdobe Education LeaderAdobe Certified ExpertAdobe Certified EducatorAdobe Influencer

AuthorLynda.com | Peachpit Press | Adobe Press | Packt Publishing | O’Reilly Media | video2brain

ArtistAn Early Morning Letter, Displaced | shivervein

AIR is “King”THIRTEEN

What’s new with the Runtimes?

Flash Player 12 / AIR 4

Improved Packaging Engine - iOS - BETA

Graphics: Buffer Usage flag for Stage3D

Mobile Workers (concurrency) - Android

Support for native resources access by R* mechanism in ANE - Android

Stage3D Creation of Context3D with Profile Array

Flash Player 13 / AIR 13 – RELEASED TODAY!!!

Enhanced Supplementary Character Support for TextField

Relocated Full Screen Video Warning to Top of Screen

New Stage3D Texture Wrapping Modes

Debugging and Telemetry Support for Improved Packaging Engine - iOS - BETA

2014 Runtimes Positioning

The Adobe® Flash® Platform runtimes, Flash Player and AIR®, together enable

businesses to efficiently deliver rich customer experiences across multiple

digital touch points. With Flash Player and AIR, content can easily and

consistently move between the browser, standalone applications and native

operating systems to reach users on the devices of their choice. Since the

Adobe runtimes share a common codebase, developers can reuse code to

deploy game console quality 2D and 3D games, rich media applications with

premium high definition video and scalable date driven applications though

both AIR and Flash Player.

March, 2014

Flash is Dead

March, 2014

2014 Flash Runtimes Statistics

“Flash is Dead” - false

More than 175,000 applications using AIR 3.8 or greater.

Installed over 500 million times in the second half of 2013.

Reach 11 times more people than the best-selling hardware game console!

400 million+ desktops update to the new version of Flash Player within six weeks of release.

500 million+ devices are addressable today with Flash technology

1 billion projected addressable devices by the end of 2015.

http://www.adobe.com/products/flashruntimes/statistics.html

DU VideoManager Flash Player Stats

April, 2014

FFMPEGCLI VIDEO TRANSCODE

FFMPEG

FFmpeg is a complete, cross-platform

solution to record, convert and stream audio

and video. It includes libavcodec - the

leading audio/video codec library.

Adobe AIR can tap into and control

FFMPEG.

Convert video…

Capture desktops…

Capture webcam…

Stream files, desktops, webcams…

Distributions

Linux

http://ffmpeg.gusari.org/static/

http://johnvansickle.com/ffmpeg/

Windows

Zeranoe FFmpeg builds:

http://ffmpeg.zeranoe.com/builds/

OSX

http://www.evermeet.cx/ffmpeg/

http://ffmpegmac.net/

FFMPEG Source

If you want to contribute…

Git:

git clone git://source.ffmpeg.org/ffmpeg.git

ffmpeg

Documentation

ffmpeg [global_options] {[input_file_options]

-i ‘input_file’} ... {[output_file_options]

‘output_file’} ...

Specify inputs…

An array of options for transcoding…

How to output?

NativeProcessTHE ENDLESS API

AIR 2.0!

Released in 2010

Theme was “disruption”

Supports NativeProcess

Only the extendedDesktop AIR profile

supports the NativeProcess class.

What is NativeProcess?

“The NativeProcess class provides command line integration and general launching

capabilities. The NativeProcess class lets an AIR application execute native processes

on the host operating system. The AIR application can monitor the standard input

(stdin) and standard output (stdout) stream of the process as well as the process's

standard error (stderr) stream.”

Basically, this new API allows your application to communicate with just about any

process running on the host machine. This can be an operating system core process

or software like FFMPEG.

DropFolders

Video Converter

Originally an experiment…

Uses HandBrake CLI

Fairly popular… for a demo.

DropFolders - Source

I get emails… every week.

Now open source…

Want a change? Contribute!

https://github.com/josephlabrecque/DropF

olders

NativeProcess ExampleFFMPEG AND BATCH

What to Import

flash.desktop.NativeProcess;

flash.desktop.NativeProcessStartupInfo;

flash.events.NativeProcessExitEvent;

flash.events.ProgressEvent;

flash.events.IOErrorEvent;

flash.filesystem.File;

NativeProcess Setup

Create a new File object to run

Create the NativeProcess and add listeners

Create NativeProcessStartupInfo instance

Build up your arguments as Vector

Bind everything together and start

NativeProcess Communication

Standard Input

nativeProcess.standardInput.writeUTF();

Standard Output

nativeProcess.standardOutput.readUTFBytes();

Simple Example – DEMO!!!

FFMPEG is command-line driven

Batch files are useful for CLI

1. Invoke Windows Command Prompt

2. Call a batch file

3. Instruct FFMPEG

4. Read the output

VOD TranscodeFOR FLASH AND HTML5

VideoManager

System for the University of Denver

Faculty, staff, and student uploads

Video is gathered from upload server [AIR]

Video is converted on server [AIR/FFMPEG]

Converted video is moved to AMS

Adobe Media Server streams [HDS/HLS]

VideoCast

Public face of DU VideoManager

Curated video collections

Rich in metadata

CrunchBuddy

Headless AIR app

AIR Captive Runtime

Installed as a Windows service

3 transcode servers host this service:

CRUNCHER, CRUNCHER2, CRUNCHER3

Processes up to 50 videos a day

CrunchBuddy - Process

Listens for files added to a temp directory on

the VideoManager web server.

Pulls those files over the network into a

queue.

Uses MediaInfo libraries to read bitrate,

resolution, rotation, and so forth.

Makes decisions on how to encode the file.

Performs transcode and moves the file(s) to

Adobe Media Server for streaming.

Alerts the user that their file is ready through

VideoManger communication.

Problems? Log file is written.

CrunchBuddy – DEMO!!!

Adobe AIR

File

NativeProcess

Captive Runtime

POST/GET

AMS

MediaInfo

FFMPEG

Windows Server

Adobe Media Server

Apache, PHP, Laravel, MySQL

Live StreamingAND MORE…

CameraSnatcher

Web module… no NativeProcess!

Until it hits CrunchBuddy :)

Measure bandwidth with AMS.

Bandwidth determines quality.

StreamSnatcher

Work in progress…

Create 3 streams send to RTMP

AMS streams as HDS/HLS

Related: ANEsCLOSE COUSINS.

ANEs: AIR Native Extensions

An ANE file is an archive file that contains

the necessary libraries and resources for the

native extension.

Native code plus ActionScript code.

AIR profiles extendedDesktop,

mobileDevice, and extendedMobileDevice

Declaring the extension in your application

descriptor file.

200+ multiplatform ANEs:

http://www.riaxe.com/blog/200-adobe-air-

anes/

Desktop… Mobile… whatever.

Android devices, starting with Android 2.2

iOS devices, starting with iOS 4.0

iOS Simulator, starting with AIR 3.3

Blackberry PlayBook

Windows desktop devices that support AIR

3.0

Mac OS X desktop devices that support AIR

3.0

Closing RemarksJUST A COUPLE MORE THINGS…

Why all the chains and ropes, Adobe…

http://www.infin8iphone.co.uk/?p=240

…when even you stray from the “rules”?

Adobe Photoshop Touch. Built with AIR. Not a game.

Building a Mobile App with

Feathers and Starling Downloading the frameworks and

the AIR SDK

Configuring the project

Implementing a theme

Creating the screen classes

Adding a navbar component

Building the classes

Returning saved files

Publishing a project

Installing and running the app

http://www.lynda.com/JosephLabrecque

Thanks. Questions?

CONTACT JOSEPH

@JosephLabrecque

JosephLabrecque.com

Joseph.Labrecque@du.edu

Recommended