Upload
joseph-labrecque
View
2.586
Download
0
Embed Size (px)
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