SlideShare a Scribd company logo
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 Faculty
University of Denver
 Proprietor | Owner
Fractured Vision Media, LLC
 Adobe Community Professional
Adobe Education Leader
Adobe Certified Expert
Adobe Certified Educator
Adobe Influencer
 Author
Lynda.com | Peachpit Press | Adobe Press | Packt Publishing |
O’Reilly Media | video2brain
 Artist
An 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
FFMPEG
CLI 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?
NativeProcess
THE 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 Example
FFMPEG 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 Transcode
FOR 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 Streaming
AND 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: ANEs
CLOSE 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 Remarks
JUST 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

More Related Content

Adobe AIR. NativeProcess. FFMPEG. Awesome.

  • 1. Adobe AIR. NativeProcess. FFMPEG. Awesome. ROCKY MOUNTAIN ADOBE USER GROUP – APRIL 8 2014
  • 2. Introduction  Flash Player and AIR… What’s Up?  FFMPEG: CLI Transcoder  AIR NativeProcess API  VOD Transcode  Live Streaming  Closing Remarks
  • 3. Joseph Labrecque  Senior Interactive Software Engineer | Adjunct Faculty University of Denver  Proprietor | Owner Fractured Vision Media, LLC  Adobe Community Professional Adobe Education Leader Adobe Certified Expert Adobe Certified Educator Adobe Influencer  Author Lynda.com | Peachpit Press | Adobe Press | Packt Publishing | O’Reilly Media | video2brain  Artist An Early Morning Letter, Displaced | shivervein
  • 5. 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
  • 6. 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
  • 8. 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
  • 9. DU VideoManager Flash Player Stats April, 2014
  • 11. 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…
  • 12. 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/
  • 13. FFMPEG Source  If you want to contribute…  Git: git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
  • 14. 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?
  • 16. AIR 2.0!  Released in 2010  Theme was “disruption”  Supports NativeProcess  Only the extendedDesktop AIR profile supports the NativeProcess class.
  • 17. 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.
  • 18. DropFolders  Video Converter  Originally an experiment…  Uses HandBrake CLI  Fairly popular… for a demo.
  • 19. DropFolders - Source  I get emails… every week.  Now open source…  Want a change? Contribute!  https://github.com/josephlabrecque/DropF olders
  • 21. What to Import  flash.desktop.NativeProcess;  flash.desktop.NativeProcessStartupInfo;  flash.events.NativeProcessExitEvent;  flash.events.ProgressEvent;  flash.events.IOErrorEvent;  flash.filesystem.File;
  • 22. 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
  • 23. NativeProcess Communication  Standard Input  nativeProcess.standardInput.writeUTF();  Standard Output  nativeProcess.standardOutput.readUTFBytes();
  • 24. 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
  • 26. 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]
  • 27. VideoCast  Public face of DU VideoManager  Curated video collections  Rich in metadata
  • 28. 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
  • 29. 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.
  • 30. CrunchBuddy – DEMO!!!  Adobe AIR  File  NativeProcess  Captive Runtime  POST/GET  AMS  MediaInfo  FFMPEG  Windows Server  Adobe Media Server  Apache, PHP, Laravel, MySQL
  • 32. CameraSnatcher  Web module… no NativeProcess!  Until it hits CrunchBuddy :)  Measure bandwidth with AMS.  Bandwidth determines quality.
  • 33. StreamSnatcher  Work in progress…  Create 3 streams send to RTMP  AMS streams as HDS/HLS
  • 35. 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/
  • 36. 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
  • 37. Closing Remarks JUST A COUPLE MORE THINGS…
  • 38. Why all the chains and ropes, Adobe… http://www.infin8iphone.co.uk/?p=240
  • 39. …when even you stray from the “rules”? Adobe Photoshop Touch. Built with AIR. Not a game.
  • 40. 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
  • 41. Thanks. Questions? CONTACT JOSEPH  @JosephLabrecque  JosephLabrecque.com  Joseph.Labrecque@du.edu