SQUEEZE SERVER Operation Version 2.5

CONTENTS

Introduction to Squeeze Server...... 2 Features ...... 2 Squeeze Server Components...... 4 How Squeeze Server Works ...... 5 Running Squeeze Server ...... 6 Supported File Formats ...... 6 Supported Source Formats ...... 7 Supported Output Formats ...... 8 Additional Formats Provided with QuickTime ...... 9 Priority Job Queues...... 9 Examples Using Priority Job Queues ...... 9 The Default Queue...... 10 Output File Naming Methods...... 11 Global Application Settings...... 11 File Name ...... 11 File Names and Paths ...... 12 File Extension ...... 12 Overriding File Names in Job Destinations ...... 12 Wildcard Token Options ...... 12 Thumbnail Pattern ...... 13 Overriding Output File Extension in Job Destination ...... 13 Watch Folders...... 14 Watch Folders within a LAN Cluster...... 14 Watch Folders within a Cloud Cluster ...... 15 Watch Folders within a Hybrid Cluster ...... 15 File Source and Destination Plug-ins ...... 16 Specifying Source and Destination URI’s ...... 16 azureblob://...... 16 file:// ...... 16 http:// (or https://)...... 16

Sorenson Media, Inc. 1 www.sorensonmedia.com

ftp:// ...... 17 sftp://...... 17 s3://...... 17 sorenson360:// ...... 17 ://...... 17 Video Image Watermarking ...... 18 Squeeze Desktop Integration ...... 19 Connecting to Squeeze Server from within Squeeze Desktop...... 19 Sending Jobs to Server from within Squeeze Desktop ...... 20 Defining User Permissions...... 20

Introduction to Squeeze Server Squeeze Server allows you to offload your desktop compression and work onto one or many servers hosted locally or in the “cloud” (such as on Amazon EC2). Where you choose to install and use Squeeze Server is up to you. We recommend running Squeeze Server as close to your source content as possible. If your source are in the cloud (such as on Amazon S3), you can run Squeeze Server in the cloud as well. Squeeze Server is intended to be easily integrated into your existing workflow with a set of REST web services for configuration and operation, and a web-based administration tool.

Features Multiple Database Support: Squeeze Server uses a database for storing jobs, system settings, and archived job data. Squeeze Server supports SQL Server 2008 or MySQL 5.5 or later so you can integrate Squeeze Server into your existing enterprise. Parallel Encoding: Squeeze Server or transcodes as many source files simultaneously as CPU and memory will allow. Squeeze Server is designed to take jobs from its job queues until it reaches a maximum load while still being responsive. If Squeeze Server determines that there are yet available CPU resources it will take additional jobs. Robust Priority Job Queues: Squeeze Server uses priority job queues to take on encoding and transcoding jobs. You can create as many or as few queues as you need and assign queues to your Squeeze Servers. Squeeze Servers take jobs from the queues in priority order. Higher priority queues must be emptied before Squeeze Server will take jobs from lower priority queues. Credential Management: Squeeze Server can store frequently used credential sets encrypted in the database. This allows you to save your Amazon S3 or EC2 credentials or FTP site credentials so Squeeze Server can access these resources when needed without having to supply credentials with each job. Squeeze Server makes it easy to maintain your list of frequently used credentials so if an FTP site password changes and you have jobs in your queue, you can update the saved credentials and all the jobs will use the new password. There is no need to re-submit jobs just because a password changed. Smart Safe Watch Folders: Squeeze Server supports watch folders that are smart in that if you leave files in a watch folder they are not unnecessarily reprocessed and safe because files you place in watch folders are

Sorenson Media, Inc. 2 www.sorensonmedia.com

not moved, deleted, or altered in any way. When Squeeze Server processes a watch folder, it creates jobs for the desired queue, allowing any Squeeze Server monitoring that queue to contribute to processing the Watch Folder’s jobs efficiently. Multiple Publications per Job: Squeeze Server will publish output files to multiple locations. In Squeeze Server, these are referred to as Destinations. A job can have any number of destinations of different types, including Amazon Simple Storage Service (S3), FTP, Sorenson 360, YouTube, or to your network file system. There is no need to submit multiple jobs only to publish to multiple destinations1. Advanced Output File Naming: Do you need your output files named a very specific way? Do you want your output files to always have a unique name? Do you want to use an alternate file extension? Do you want to supply your own output file name? With Squeeze Server, you have complete flexibility on how your output files are named including a list of tokens to construct output file names dynamically with the data you need. Common Presets: Squeeze Server uses the same presets as Desktop. You can use your old favorites, make new presets with Squeeze, or use the Sorenson Media Preset Exchange. Preset Library: Squeeze Server has its own preset library where you can store your favorite presets so they are always available. Multiple Outputs per Job: A single job can have one or more presets to produce more than one type of output. In today’s multi-format world, you can produce all the formats you need from a single job, or use multiple jobs to spread the load across multiple servers. The choice is yours. This is only available when using the REST API, and is not surfaced in the web UI. Presets from Anywhere: Squeeze Server supports presets from a variety of locations to maximize your workflow flexibility. Presets can be referenced from a local or network file system, from an HTTP source URL or FTP, uploaded with a job, or from the built-in preset library. Source Files from Anywhere: Squeeze Server can reference your source files from a variety of locations including HTTP, FTP, local or network file storage, or Amazon S3. There is no need for you to move your files to any special location with Squeeze Server as long as Squeeze Server has access. Simple Job Complete Notification: Squeeze Server can call your own web service each time a job finishes, with the job ID and job status, so you can take additional action your workflow requires. Many Input and Output Formats: Squeeze Server supports a long list of today’s source and output formats and yesterday’s formats as well. With Squeeze Server, you can reprocess and rejuvenate your legacy catalog for a whole new audience. With optional third-party add-ons, the list of source formats grows even more. Simple REST Web Service API: Squeeze Server integrates into your workflow with a large set of REST web services. The services support both XML and JSON to make integration into your existing tool-chain or building a new tool-chain as simple as possible. Built-in API Examples and Schemas: Squeeze Server’s REST web services generate example requests and responses and provide an XML schema to help guide you through integration. Each REST endpoint has its own help service. Point your browser at your server’s API to get started. For example, from a browser running on Squeeze Server, visit http://localhost/api/ or for a particular endpoint, add help to the URL, for example http://localhost/api/jobs/help Optional Authentication: In most cases, you will be running Squeeze Server in a trusted environment and can leave authentication disabled. If on the other hand you would prefer to require authentication and authorization when using the administrator web client or when invoking any of the REST web services, you can enable authentication. Squeeze Server comes standard with both MySQL and SQL Server 2008

1 Multiple Destinations per Job is only available via the API

Sorenson Media, Inc. 3 www.sorensonmedia.com

authentication database scripts and providers. You may substitute your own providers for services such as Active Directory if you wish. Administrator Web Client: Squeeze Server includes a simple yet powerful web application to monitor servers and job queues, and to perform some configuration tasks such as creating job queues, assigning queues, and storing frequently used credentials. When running Squeeze Server on Amazon Elastic Compute Cloud (EC2) instances, you can with a single click start additional Squeeze Server instances.2 Seamless Desktop Integration: Squeeze Server integrates seamlessly with our award-winning Squeeze Desktop encoding . Our desktop software can automatically detect Squeeze Server hosts on a local network or remotely connect to Squeeze Server instances hosted off-site or in the cloud. Once authenticated, Squeeze Desktop enables users to easily to synchronize and modify presets on Squeeze Server.

Squeeze Server Components Squeeze Server consists of five major components: • Squeeze Compression Server Service: The windows service that continuously monitors the system configuration and job queues for jobs it can take, downloads source files and presets, initiates and controls compression jobs, and uploads finished output files to their appropriate destination. • Squeeze Compression Engine: Leverages industry-leading Squeeze compression technology to or transcode video files using presets supplied with compression jobs. • Squeeze Server Web API: A set of REST web services for configuring and controlling Squeeze Server, and submitting and managing compression jobs. • Squeeze Server Web Client: A web client that uses the Squeeze API to provide a front end for managing squeeze servers. • Squeeze Server Database: Three databases are set up for Squeeze Server. Each database can be installed separately or in one database as the schemas are compatible. Separate databases offer the best flexibility and performance, but by unifying the databases, in a service such as Microsoft Azure, you can reduce costs. o Squeeze: Main Squeeze Server database for storing configuration, default system-wide presets, and current jobs. This database can undergo many inserts and updates. o SqueezeArchive: Database for storing archived/finished jobs. This is a separate database to enable other clients to easily retrieve reporting information. You may deploy the SqueezeArchive schema in the Squeeze database, but we do not recommend this if you plan on using reporting or query tools. This database is only inserted when jobs finish, making it ideal for query operations. o SqueezeAuth: Optional database when using authentication with the Squeeze Server Web Service API. If you leave authentication disabled or have your own authentication repository that you wish to use instead, you can skip installing this database.

2 Be sure to check your Squeeze Server License. You must have a valid license for each Squeeze Server you run whether on physical hardware, virtual machines, or on cloud services such as Amazon EC2

Sorenson Media, Inc. 4 www.sorensonmedia.com

How Squeeze Server Works Squeeze Server continuously monitors its database for transcoding jobs. A job consists of one or more compression presets, a reference to a source file, and destinations to which Squeeze Server will publish the output files. A job must have one or more presets and one or more destinations, although very complex jobs are not recommended. Best Practice: Keep jobs small. Avoid many presets in a single job and many destinations in a single job. For example, if your source must be compressed to three different data rates and published to two different locations, a job would have a preset for each data rate and a destination for each destination for the output files. Squeeze Server will download the source file and preset files and then transcode the source for each preset. When each transcode completes, Squeeze Server will upload each output to each of the destinations, then archive the job. A server will continue to take additional transcoding jobs as long as it determines that it can do more work without overloading. Depending on your system, the presets in use, and type of source files, it is not uncommon for a server to work with only a single job or to transcode many at once. Squeeze Server will begin taking on additional jobs shortly before the current job finishes transcoding to keep the server as busy as possible.3 Best Practice: Run Squeeze Server on a server by itself. Do not run Squeeze Server with other mission- critical applications on the same machine. Squeeze Server will attempt to maximize CPU load and other applications may become slow to respond.

3 Multiple Presets and Destinations per Job is only available via the API’s

Sorenson Media, Inc. 5 www.sorensonmedia.com

Running Squeeze Server Squeeze Server runs autonomously requiring little or no intervention once installed and running. 1. Install and Configure Squeeze Server. See Squeeze Server – Installation and Configuration 2. Point your web browser to the Administrator web client. From the machine on which Squeeze Server is installed, visit http://localhost 3. You may want to add frequently-used credentials to the Squeeze Server database using the Administrator web client or the API. However, this is not required it is just for convenience. See Squeeze Server - API 4. You may want to configure your job queues using the Administrator web client or the API. This is also not required. See Squeeze Server - API 5. You may want to assign job queues to servers using the Administrator web client or the API. This is also not required but allow for prioritizing jobs. See Squeeze Server API 6. Add jobs to queues individually, with watch folders, or both using the Administrator web client or with the API. See Squeeze Server API.

Supported File Formats This section lists the supported input and output file formats for this Squeeze Server solution.

Sorenson Media, Inc. 6 www.sorensonmedia.com

Supported Source Formats Video (FLV) • Audio : MP3, PCM • Video Codecs: On2 VP6, Sorenson Spark

AVI • Audio : DV • : V/DVCPRO

DV • : DV • Video Codec: DV/DVCPRO

MPEG • Audio Codecs: ATSC A/52, MPEG Layer 1 Audio, MPEG Layer 2 Audio • Video Codecs: MPEG-1 Video, MPEG-2 Video

QuickTime (MOV) • Audio Codecs: A-Law 2:1, AAC, , iLBC, IMA 4:1, Linear PCM, µ-law, MACE 3:1, MACE 6:1, MP3, QDesign 2, Qualcomm PureVoice • Video Codecs: Apple Animation, Apple Graphics, Apple None, , Planar RGB, BMP, , Component VIdeo - YUV422, DV/DVCPRO, H.261, H.263, H.264 (AVC), JPE 2000 Encoder, JPEG A, Motion JPEG B, MPEG4 , Photo JPEG, Sorenson Video, Sorenson Video 2, Sorenson Video 3, TGA, TIFF

Wave (WAV) • Audio Codec: Linear PCM

Windows Media Format (WMV) • Audio Codecs: 9.2, Windows Media Audio 10 Professional, Windows Media Audio Voice 9 • Video Codecs: Windows Media Screen V9, V7, Windows Media Video V8, Windows Media V9, Windows Media V9 Advanced

MPEG-TS (TS, MTS, M2T, M2TS) • Audio Codecs: ATSC A/52, MPEG Layer 1 Audio, MPEG Layer 2 Audio, MPEG PCM Audio, AMR- NB, ATSC A/52, Coding Technologies AAC, Coding Technologies AAC Plus V2 • Video Codecs: MPEG-1 Video, MPEG-2 Video, Apple H.264 (AVC), Mainconcept H.264 (AVC), Sorenson H.264 (AVC), Sorenson MPEG4 Pro

MXF (XDCAM in MXF) • Audio Codecs: PCM • Video Codecs: MPEG-2

Sorenson Media, Inc. 7 www.sorensonmedia.com

Supported Output Formats Adaptive Streaming • Apple HTTP Live Streaming • Flash HTTP Dynamic Streaming • Microsoft Smooth Streaming

Adobe (FLV) • Audio Codecs: MP3, Uncompressed (PCM) • Video Codecs: On2 VP6 Pro, Sorenson Spark Pro

ATSC A/52 (AC3) • Audio Codec: ATSC A/52

Matroska (MKV) • Audio Codec: • Video Codec: On2 VP8

MP3 Audio (MP3) • Audio Codec: MP3

MPEG • Audio Codecs: ATSC A/52, MPEG Layer 1 Audio, MPEG Layer 2 Audio, MPEG PCM Audio • Video Codecs: MPEG-1 Video, MPEG-2 Video

MPEG-4 (MP4) • Audio Codecs: AMR-NB, ATSC A/52, Coding Technologies AAC, Coding Technologies AACPlus V2 • Video Codecs: Apple H.264 (AVC), Mainconcept H.264 (AVC), Sorenson H.264 (AVC), Sorenson MPEG4 Pro

Ogg Audio () • Audio Codec: Vorbis

QuickTime (MOV) • Audio Codecs: A-Law 2:1, AAC, Apple Lossless, iLBC, IMA 4:1, Linear PCM, μ-law, MACE 3:1, MACE 6:1, MP3, QDesign Music 2, Qualcomm PureVoice • Video Codecs: Apple Animation, Apple Graphics, Apple None, Apple Video, Apple RGB, BMP, Cinepak, Component Video - YUV422, DV/DVCPRO, H.261, H.263, H.264 (AVC), JPEG 2000 Encoder, Motion JPEG A, Motion JPEG B, MPEG4 Compressor, Photo JPEG, PNG, Sorenson Video 3, TGA, TIFF

WebM (WEBM) • Audio Codec: Vorbis • Video Codec: On2 VP8

Windows Media Format (WMV)

Sorenson Media, Inc. 8 www.sorensonmedia.com

• Audio Codecs: Windows Media Audio 9.2, Windows Media Audio 10 Professional, Windows Media Audio Voice 9 • Video Codecs: Windows Media Screen V9, Windows Media Video V7, Windows Media Video V8, Windows Media V9, Windows Media V9 Advanced

MPEG-TS (TS, MTS, M2T, M2TS) • Audio Codecs: ATSC A/52, MPEG Layer 1 Audio, MPEG Layer 2 Audio, MPEG PCM Audio, AMR- NB, ATSC A/52, Coding Technologies AAC, Coding Technologies AAC Plus V2 • Video Codecs: MPEG-1 Video, MPEG-2 Video, Apple H.264 (AVC), Mainconcept H.264 (AVC), Sorenson H.264 (AVC), Sorenson MPEG4 Pro

Additional Formats Provided with QuickTime AIFF • Audio Codecs: IMA 4:1, Linear PCM, Qualcomm PureVoice

AU • Audio Codec: Linear PCM

AVI • Audio Codec: Uncompressed • Video Codecs: Cinepak, DV-PAL, DV/DEVPRO - NTSC, DVCPRO - PAL, None

DV Stream • Audio Codec: DV • Video Codecs: DV, DVCPRO

FLC Video Image Sequence • Images: BMP, JP2, JPEG, MacPaint, PhotoShop, PICT, PNG, QuickTime Image, SGI, TGA, TIFF

Wave • Audio Codec: Linear PCM

Priority Job Queues Squeeze Server monitors job queues for jobs to process. You can define as many queues as your business case dictates and give them meaningful names and descriptions. Queues must then be assigned to one or more servers. When queues are assigned to a server, they have a priority order for the server(s) of your choosing. Examples Using Priority Job Queues 1. Default Queue Squeeze Server's default configuration includes a default queue. Servers that have no queue assigned will process the default queue. Servers with queues assigned will not process the default queue. If you assign

Sorenson Media, Inc. 9 www.sorensonmedia.com

queues and want to use the default queue, make sure that you assign the default queue to servers. By using the default queue, new servers automatically start processing jobs without any additional configuration. 2. Priority Queues When assigning job queues to servers, you also specify the order for servers to process job queues. Higher priority queues have a lower number for order, and are processed before a queue with a higher order number. (1 is priority 1, 2 is priority 2, etc.). The number can be anything you wish. For example you can use 10, 20, 30, or 100, 200, 300, etc. so you can easily add a new queue in the middle). Servers will only process a lower priority queue when there are no jobs available in a higher priority queue. Tip: If a higher priority queue never empties, jobs will not be picked up from the other queues. To prevent this in a multi-server environment, have at least one server processing queues in an alternate order. 3. Server Capability Queues In some cases, servers with different capabilities are part of a transcode cluster or farm. Create a queue for each server (or class of servers) you have. For example, create queue for your smaller less powerful servers, and a queue for your high-performance servers. Assign jobs to queues based on the kind of job for the appropriate server. You can then submit jobs for small files, single-pass, Spark, and other lightweight jobs can be submitted to your small server queue, and your large files, multi-pass, or complex encodes to your higher-end servers. You can also use queues to ensure that servers with GPU capability only pick up jobs that can take advantage of GPU acceleration. The Default Queue Squeeze Server’s default configuration includes a default queue. All Squeeze Servers that have no queue assigned will process the default queue. Servers with queues assigned will not process the default queue automatically unless the default queue is also assigned. Do not delete the default queue. The default queue allows a simple installation where only one queue is required to be up-and-running with no configuration once installation is complete.

Sorenson Media, Inc. 10 www.sorensonmedia.com

Output File Naming Methods Squeeze Server allows for a great deal of output file naming flexibility, including control of the file extension and file name (independently). The output file name can be dynamically created or can be constrained to a specific file name when the job is created, overriding the system default file naming. The output file extension can also be controlled system-wide and overridden in each job. Global Application Settings The Application Setting option for file naming is called DestinationFileCreateUnique.

File Name The application setting DestinationFileCreateUnique Controls how output files are named system- wide. When false, all jobs must supply an output file name. When true (default), all output file names will be unique unless overridden by the job using the following pattern: --

1. : file name of the source being compressed. 2. : unique Job ID. 3. : name of the preset used for compression.

Sorenson Media, Inc. 11 www.sorensonmedia.com

File Names and Paths A file name must be fully specified for a source for a job, but identify a folder path when using watch folders. A file name that ends with a slash (/) will be considered a path. If the file name does not end in a slash (/), the file name will be interpreted as a file name. For destinations, this gives you control of the output file names or lets Squeeze Server supply file names depending on the naming properties you choose. For example: • /my-path/my-filename.ext – Defines a fully specified path and filename. Squeeze Server will respect the filename and extension if directed to do so. • /my-path/my-filename – Defines a filename without an extension. Squeeze Server will supply an extension unless directed to respect extensions. • /my-path/my-filename/ - Defines a path with no filename because of the ending slash. Squeeze Server will supply a unique file name. • /my-path – Defines a file name my-path with no extension because of the missing trailing slash (/) • my-filename – Defines a file name with no path or extension. Squeeze Server will respect the file name and supply an extension if directed to do so.

File Extension File extensions are provided by the preset. However, your convention may differ. For example, by default a file extension may be .mp4, but your environment requires .m4v for the same type of file. The application setting DestinationFileExtAutoSet when true (default) will automatically set the extension based on the preset. When false, the file extension (if one is desired) must be supplied with the output file name for the job. You can then conveniently control the extension of your output files or have no extension at all. Overriding File Names in Job Destinations The Application Settings option can be overridden when a Job is created. When you supply a file name with a job destination, you can choose how you want your file name to be treated by the server when creating the output. The following are the available File Naming Methods that can be set on a job. • Default - Honor the Application Setting options to determine the naming method for the file name. • Preserve - Forces the job to preserve the file name set in the destination. • Unique File Name - Force the job to create a unique file name. • Wildcard - Tells the server to use the destination file name that may contain one or more wildcard tokens. The file name can contain wildcard values that will be replaced to create a custom-formatted file name.

Wildcard Token Options The wildcard tokens allow you to create file names with values substituted at the time the output is created. This includes attributes such as the source file name, the width and height of the video, and date of the transcode. Example: MyTestFile%YYYY%-%MM%-%DD%.mp4 transcoded on 2010-10-25 will produce an output file name called MyTestFile2010-10-25.mp4.

Wildcard Tokens The following standard tokens are supported for constructing your unique output file names. All token values represent attributes of the output file or process in creating the output file. All dates and times are GMT.

Sorenson Media, Inc. 12 www.sorensonmedia.com

• %AMPM% - The AM or PM part of the time (GMT) the output was created. • %CHANNELS% - The number of audio channels in the output. • %DATARATEK% - The data rate of the output file in kilobits per second. • %DATARATEM% - The data rate of the output file in megabits per second. • %DD% - The day of the month of the output file was created. • %DOY% - The day of the year of the output file was created. • %FILTER% - The filter name used for the output file. • %FORMAT% - The format of the output file. • %GUID% - A globally unique identifier (GUID). • %HEIGHT% - The height of the output video file. • %HH12% - The hour the output file was created in 12-hour format. • %HH24% - The hour the video file was created in 12-hour format. • %JOBID% - The Job ID of the job that created the video file. • %MIN% - The minute the video file was created. • %MM% - The numeric month that the video file was created. • %PRESET% - The Compression Preset Name used to create the video file. • %SEC% - The second the video file was created. • %SOURCE% - The source file name used to create the video file. • %VERSION% - Note: This token is only used in the thumbnail pattern. The thumbnail version of the thumbnail created. This indicates the size of the thumbnail. o 1 - Poster Size - The thumbnail is the same resolution as the video file created. o 2 - Medium Size - The thumbnail is 320x180. o 3 - Tiny Size - The thumbnail is 64x36. • %VIDEOASPECT% - The video aspect ratio of the output video file. • %WIDTH% - The width of the video file created. • %YYYY% - The year the video file was created.

Thumbnail Pattern The wildcards can be used in the Thumbnail Pattern as well. The Thumbnail Pattern is used to generate jpg thumbnails for the output video file. The Thumbnail Pattern always uses the wildcards regardless of the file naming method used for the output file name. Overriding Output File Extension in Job Destination The Application Settings for file extension can be overridden when a Job is created. When you supply a file name and extension with a job destination, you can choose how you want your file extension to be treated by the server when creating the output. The following are the available file extension options that can be set on a job. • Default - Use the Application Setting options to determine the naming method for the extension. • Preserve - Force the job to preserve the file extension set in the destination. • Auto - Force the job to set the extension based on the output format.

Sorenson Media, Inc. 13 www.sorensonmedia.com

Watch Folders Watch folders are a convenient way to submit jobs to Squeeze Server. Once you define a watch folder, any file placed in a watch folder will cause a job to be submitted with all presets assigned to or found in the watch folder. You can create watch folders for S3 buckets, FTP, SFTP directories, local and network file shares, and Microsoft Azure containers. You can elect to scan just a specific folder within your watch folder or perform a Deep Scan (default) of the watch folder and all sub folders within the directory structure. Watch folders are created in the same way as jobs with the exception that a watch folder does not require a preset to be created. Watch folders can have presets assigned to the folder as with jobs, but will also use presets found in the watch folder itself. Servers will scan watch folders that place jobs in queues for that server. If no server is assigned to the queue associated with the watch folder, that folder will not be scanned. Only files that have a created or modified date that is newer than the last time the folder was scanned will cause jobs to be created. In this way, there is no need to move processed files or to allow the server to have permissions to move or delete files. You can leave files where they are. If you need to have a file re- processed, simply change the modified date and time to the current date and time and the file will be picked up on the scan. You can then move or delete files when you are satisfied that they are no longer needed in the watch folder. Note: Files in watch folders stored on local or network drives may not have their date modified changed when copied or moved into a watch folder. If a file copied into a local or network watch folder does not get picked up, ensure that the date modified has been changed. HTTP is not supported as a watch folder source or destination. The folder delimiter for S3 watch folders must be a forward slash ( / ). Ie: folder/folder/file.ext.

Watch Folders within a LAN Cluster You can setup multiple Squeeze Servers on your local area network (LAN) to handle jobs for a common Job Queue or sets of Job Queues. It is recommended for best watch folder performance to have the watch folder be on a network file share located on you LAN. All the Squeeze Servers in the cluster need to have access to the network file share. An example watch folder setup could be as follows: You could have a server called MediaFileServer that is hosting network file shares. It could have two folders shared: one folder for source files to compress called WatchFolder and another folder for completed encoded files called WatchOutFolder. You would use the file scheme URI’s to create the watch folder for the cluster. The source URI would be as follows: file://MediaFileServer/WatchFolder/ The Destination URI would be as follows: file://MediaFileServer/WatchOutFolder/ You will need to provide a Username and Password with network privileges to read from the WatchFolder and write to the WatchOutFolder. You may need to provide the Username as DOMAIN\USERNAME, where DOMAIN is the name of your domain and USERNAME is the username to with required privileges. The Username and Password may not be required if all the servers are part of a domain and already have privileges to these folder.

Sorenson Media, Inc. 14 www.sorensonmedia.com

Watch Folders within a Cloud Cluster You can setup multiple Squeeze Servers in the Cloud to handle common jobs as well. It this scenario it is recommended to reference the source watch folder as Amazon S3, FTP, Microsoft Azure Storage, or SFTP. The recommended destination locations are Amazon S3, FTP, Microsoft Azure Storage, SFTP, or Sorenson 360. The syntax for these URI’s is defined in the following section called “Specifying Source and Destination URI’s”.

Watch Folders within a Hybrid Cluster You can also setup a Hybrid Cluster that has some Squeeze Servers on a LAN and other Squeeze Servers in the Cloud. It is recommended to have the source files as close to the servers as possible. This is true for all Squeeze Server setups. If the majority of your source is on your LAN then it is recommended to setup an FTP, or SFTP server on your LAN that hosts the source video files to compress. This will allow quick access for the Squeeze Servers located on the LAN. It will also allow Squeeze Server in the Cloud to have access to those same files. If the majority of your source files are not on the LAN you can use any of the methods defined in the section “Watch Folders within a Cloud Cluster”.

Sorenson Media, Inc. 15 www.sorensonmedia.com

File Source and Destination Plug-ins Squeeze Server 2.0 introduces plug-ins for file sources and destinations. Plug-ins provide a way to extend Squeeze Server’s capabilities yourself or with updates from Sorenson Media without a full new release. Plug- ins can be dropped into the :\squeeze\Server\Plugins folder and are immediately available for file sources, destinations, or both, and watch folders. If you are interested in creating your own plug-ins, please contact Sorenson Media for more information. Specifying Source and Destination URI’s With Server 2.0, all sources and destinations follow a common URI format. The URI scheme will be used to select the appropriate plugin. For example, a URI that is ftp:// will automatically select the FTP plugin. By default, Squeeze Server provides plug-ins for the following URI’s. With all URI specifications, folders must end in a /, otherwise, the end of the URI will be assumed to be a file. When using a URI with watch folders, both source and destination URI’s must be paths to a folder. azureblob:// azureblob:// is used for source files, destinations, and watch folder source and destinations on Microsoft Azure Storage. The format for azureblob:// are azureblob://azure-container/azure-folder/file.ext azureblob://azure-container/azure-folder/ azureblob://azure-container/ file:// Local and network files and folders are specified with the file:// URI scheme. Local files are referenced as follows: file://c:/path/to/file/file.ext file://c:/path/to/files/

Note: It is not recommended to use local file URI names when working with a cluster of Squeeze Server as all servers may not have access to the local files, and well as mapped network drives.

The file:// URI can also be used to reference files on the network. The network share must have permissions set to allow the server to read and write to these files. Network files and folders are the preferred URI naming method for a cluster of Squeeze Servers hosted on a LAN. file://file-server/share/path/file.ext file://file-server/share/path/ http:// (or https://) http:// is used for single file sources. http:// and https:// are not available for watch folders or destinations. The format for http:// is: http://web-server:optional-port/folder/file.ext

Sorenson Media, Inc. 16 www.sorensonmedia.com

ftp:// ftp:// is used to connect to a standard ftp server. For example: ftp://ftp-server/path/file.ext

ftp://ftp-server/path/path/

In order to publish to an absolute path the FTP URL directory path has to be prefixed with /%2f/, like this: ftp://host/%2f/someabsolutepath/

Here /%2f/ instructs Squeeze Server to treat the directory path as absolute (see http://tools.ietf.org/html/draft- casey-url-ftp-00 for details). If the FTP URL directory path does not start with /%2f/ then it will be evaluated relative to FTP user login directory. sftp:// sftp:// is used to connect to a standard sftp server using username and password. Key authentication is not supported. For example: sftp://secure-ftp-server/path/file.ext

sftp://secure-ftp-server/path/path/ s3:// The s3:// URI scheme is used to access files and pseudo-folders on Amazon S3. Amazon S3 does not support folders but the Squeeze Server S3 plug-in follows an established convention for pseudo folders on Amazon S3. For example s3://bucket-name/key s3://bucket-name/folder/folder/file.ext s3://bucket-name/folder/ s3://bucket-name/ sorenson360:// The sorenson360:// URI scheme is used to publish files to Sorenson 360. For example sorenson360:/// youtube:// The youtube:// URI scheme is used to publish videos to YouTube. For example youtube:///

When defining YouTube publishing destinations, it is necessary to specify other YouTube-specific settings such as whether to allow comments or ratings, selecting a category, and adding tags. These settings can easily be set in the Squeeze Server web UI or programmatically using the API. Please see the API documentation for more information on using the API for YouTube publication.

Sorenson Media, Inc. 17 www.sorensonmedia.com

Video Image Watermarking Video watermarking is supported as of Squeeze Server 2.0. As part of the Job or Watch Folder SourceMedia is the WatermarkImageUri contained in WatermarkInfo. By including a URI to an image file, that file be available to and replace the image referenced by any preset that includes a watermark filter in a job. The image file URI will use the same access credentials if supplied and necessary as the job source media file. Watermark images may be (.bmp), JPEG images (.jpg, .), PNG files (.png), TIFF files (.), and GIF files (.). If Squeeze Server encodes a source using a preset with a watermark filter but the watermark image is not supplied, it will attempt to use the file specified in the preset. If the server cannot find a watermark image file, it will apply a default watermark image to ensure that the output file is not free of watermarks. Squeeze Server can process both watermarked and not-watermarked presets in the same job. Sorenson Squeeze Desktop is ideal for creating your watermarked presets. With Sorenson Squeeze Desktop, you can load your video file, apply your watermark filter, and adjust watermark settings to achieve the desired watermark effect. When satisfied with the results, you can export your preset and upload the preset to Squeeze Server for use in automated compression jobs and server watch folders.

Sorenson Media, Inc. 18 www.sorensonmedia.com

Squeeze Desktop Integration Connecting to Squeeze Server from within Squeeze Desktop enables sending encoding jobs to Server from within Desktop and allows synchronization of presets between servers and workstations. Preset synchronization facilitates sharing of presets across workstations and painless modification of presets from within Desktop. To ensure consistency of encoding settings across an organization, it is possible to control which users may modify Server presets and which users may only download and use presets from within Desktop. Connecting to Squeeze Server from within Squeeze Desktop 1. From the Squeeze menu (Mac OS X) or Edit menu (Windows), select Preferences... 2. Within the Preferences window, navigate to the Server tab. 3. Click the [+] button to open the Enter Server Information dialog. 4. If you are connecting to a Squeeze Server host on a local network, try the Search button. If you are connecting to a remote Squeeze Server host (or if using Search did not find your Server), enter the Server IP Address or Hostname. 5. Choose whether you wish to Synchronize Audience Presets with this Server. By checking this box, the list of available presets in Squeeze Desktop will mirror the presets in the Squeeze Server instance/cluster. (Existing presets will not be deleted and can be accessed by un-checking this checkbox.) If you have the appropriate privileges, you can modify the presets. Modifications to presets take effect on Server immediately and on other connected workstations when they synchronize. See Defining User Permissions for more information on controlling which users have access to modify presets. 6. Enter your Username and Password. 7. The Server Folder is a common folder that is accessible by both Squeeze Desktop and Squeeze Server where source files are uploaded by Desktop for compression by Server. You can specify a Server Folder in two ways: a. Click the pencil button to specify a location that is accessible by both Squeeze Desktop and Server. b. Click the Default button to use the default folder if one has been defined for the Squeeze Server instance to which you are connecting. (The default folder can be defined in the Squeeze Server web UI under Admin > Settings.) 8. Make a selection under Save Encoded Files To. The available options are described below: a. None – No default destination for Squeeze Server output. Each job will require a separately defined output location. b. Same as Server Folder – Use the Server Folder for default destination for Squeeze Server output. Output files will be delivered to the same folder to which the source files are uploaded. c. Output Folder – Define a different location where output files should be delivered. This is done in the same manner as using the pencil icon to define a Server Folder. However, you may also choose “Squeeze Server Publish” and take advantage of the additional publishing options available to Server such as Microsoft Azure and SFTP. 9. Click Ok.

Sorenson Media, Inc. 19 www.sorensonmedia.com

Sending Jobs to Server from within Squeeze Desktop Once Squeeze Desktop is connected to Squeeze Server, setup a job by at least choosing a source file and preset. To have Squeeze Server perform the encode, from the Job menu, point to Encoding Engine, and select the desired server from the list that appears. Notice that you can also connect to a Squeeze Server host in this manner by clicking Add New Server. Alternatively, you can select the encoding engine in one of the following ways: 1. Right-click on the preset in the batch tree (the section in the bottom-right of Squeeze Desktop where the job settings are listed), point to Encoding Engine, and select the server you wish to perform the encode from the list that appears. 2. Left-click on the Engine column on the row for the preset in the batch tree and select the server you wish to perform the encode from the list that appears.

Defining User Permissions By appropriately setting user roles in Squeeze Server, you can control which users can modify presets and which can simply access and use presets from within Squeeze Desktop. To managed users, navigate to Admin > Users in the Squeeze Server web UI. Users who only have the role “User” will not be able to modify presets. These users will be able to synchronize with Squeeze Server from within Squeeze Desktop, view the details for presets from Squeeze Server, use these presets to perform encodes, and send encoding jobs to Squeeze Server. Users who have either of the roles “Librarian” or “Admin” will be able to modify presets.

Sorenson Media, Inc. 20 www.sorensonmedia.com