API
How can I use Encoding.com to create audio-only tracks from my video source?
How can I use the Vid.ly preset in the Encoding.com API?
If you're a current Encoding.com customer, utilizing our API to create content, try adding this to the mix:
<format>
<!-- Format fields -->
<output>vidly</output>
<vidly_destination>[aws|rs]</vidly_destination>
</format>
You're create a URL that can be accessed via any browser with the correct, optimized version served up whether its a mobile, ipad or browser.
Have more questions
More -->If you're a current Encoding.com customer, utilizing our API to create content, try adding this to the mix:
<format>
<!-- Format fields -->
<output>vidly</output>
<vidly_destination>[aws|rs]</vidly_destination>
</format>
You're create a URL that can be accessed via any browser with the correct, optimized version served up whether its a mobile, ipad or browser.
Have more questions about Vid.ly? Perhaps...what's it all mean? Look no further: http://m.vid.ly/user/
<-- HideHow do I stop an encode via API?
If you wish to stop the processing of any medaID via API, send the action 'StopMedia.'
Example:
<?xml version="1.0"?>
<query>
<action>StopMedia</action>
<userid>[UserID]</userid>
<userkey>2a595f16aefdfbd1e3d7bf9952229bfa</userkey>
<mediaid>[MediaID]</mediaid>
</query>
If you wish to stop the processing of any medaID via API, send the action 'StopMedia.'
Example:
<?xml version="1.0"?>
<query>
<action>StopMedia</action>
<userid>[UserID]</userid>
<userkey>2a595f16aefdfbd1e3d7bf9952229bfa</userkey>
<mediaid>[MediaID]</mediaid>
</query>
Can I rotate videos without encoding the audio and video?
Have a ton of videos that just require lossless rotation? Did someone have too much fun with the iPhone and shoot everything portrait instead of landscape?
Try this on for size. Lossless rotation for use with .mov --> .mov files only.
<format> <output>mov</output> <destination>[Destination]</destination> <rotate>0</rotate> <set_rotate>90</set_rotate> <video_codec>copy</video_codec> <audio_codec>copy</audio_codec> </format>
Have a ton of videos that just require lossless rotation? Did someone have too much fun with the iPhone and shoot everything portrait instead of landscape?
Try this on for size. Lossless rotation for use with .mov --> .mov files only.
<format> <output>mov</output> <destination>[Destination]</destination> <rotate>0</rotate> <set_rotate>90</set_rotate> <video_codec>copy</video_codec> <audio_codec>copy</audio_codec> </format><-- Hide
How can I copy metadata in my mp3 files?
Need to pass supported metadata information in your mp3 --> mp3 encodes. Use this addition to your XML. Valuable information, such as title, artist and album will be passed through on your encodes.
<metadata> <copy>yes</copy> </metadata>
Need to inject other metadata? Please check out our API documentation on metadata insertion:
http://www.encoding.com/api/category/category/complete_api_documentation#metadata_fields
Need to pass supported metadata information in your mp3 --> mp3 encodes. Use this addition to your XML. Valuable information, such as title, artist and album will be passed through on your encodes.
<metadata> <copy>yes</copy> </metadata>
Need to inject other metadata? Please check out our API documentation on metadata insertion:
http://www.encoding.com/api/category/category/complete_api_documentation#metadata_fields
<-- HideHow can I use your PHP uploader tool?
Please note these instructions are for the Encoding.com uploader scripts, v. 1.1. The audience for this document is intended to be web script authors, software developers and system administrators.
http://upload.encoding.com/client/pakages/encoding.com_uploader_client_v1.1.zip
Introduction:
The Encoding.com User Uploader Script enables the direct upload of User Generated Video (UGV) content to Encoding.com storage so you can avoid a workflow where
More -->Please note these instructions are for the Encoding.com uploader scripts, v. 1.1. The audience for this document is intended to be web script authors, software developers and system administrators.
http://upload.encoding.com/client/pakages/encoding.com_uploader_client_v1.1.zip
Introduction:
The Encoding.com User Uploader Script enables the direct upload of User Generated Video (UGV) content to Encoding.com storage so you can avoid a workflow where users first upload to your storage location and then having Encoding.com "re-download" from your storage location to begin processing. This guide will help you to implement the User Uploader Script into your workflow.
To receive media files, Encoding.com uses a special uploading server - upload.encoding.com. Only Encoding.com users are able to access this service. Each upload request must contain an Encoding.com user ID and special signature (API key) to authorize the user.
Once the video file is received, we will extract the MediaInfo (technical parameters of the video) and move the file to S3 storage, and it's now ready to be processed. The uploading service will return a new file destination URL, and the URL for the XML file that contains the MediaInfo. During this process, users can get progress status and percentage completed.
How it works:
To better understand the uploading service, please see the example scripts. First, unpack the provided .zip file, and then copy these files to your web server into the website's public path in a root directory or any other subfolder. The provided files also include a simple form for showing progress and upload status (Progress.php).
First, please set up your authorization options. In config.php you need to change values in the following two lines (YOUR_USER_ID and YOUR_USER_KEY):
define("USER_ID", "YOUR_USER_ID");
define("USER_KEY", "YOUR_USER_KEY");
This will allow you to start usage of the uploader tool.
To integrate the Uploader Script into one of your existing website pages, please add the following code to the head section:
<link href="encoding.com_uploader.css" media="all" rel="stylesheet" type="text/css" />
<script src="encoding.com_uploader.js" type="text/javascript"></script>
And, add the following form into the body section of your page:
<form id="upload" name="upload" enctype="multipart/form-data" action="https://upload.encoding.com/upload" target="uploadframe" method="post">
<input type="hidden" id="uid" name="uid" value="0" />
<input type="hidden" id="sid" name="sid" value="0" />
<input type="hidden" id="timestamp" name="timestamp" value="0" />
<input type="hidden" id="signature" name="signature" value="0" />
<input name="userfile" id="userfile" type="file" label="fileupload" />
<input type="button" id="submit-form" value="Send File" disabled />
</form>
<div id="progress"></div>
<iframe id="uploadframe" name="uploadframe" width="0" height="0" frameborder="0" border="0" ></iframe>
When a user uploads a video using this form, the script will call Signer.php which will return values for uid, sid, timestamp and signature fields. Each source video should have a unique sid. See Signer.php to understand how it works.
<?
...
date_default_timezone_set('Europe/London');
$retval = array();
$retval['timestamp'] = date("Y-m-d H:i:s O");
$retval['sid'] = md5(uniqid($_SERVER['HTTP_HOST'] . USER_KEY,true));
$retval['signature'] = hash("sha256", $retval['timestamp'] . $retval['sid'] . USER_KEY);
$retval['uid'] = USER_ID;
?>
Setting up a different path for php scripts:
By default, the PHP scripts included in this package must be stored in the same directory as the page with the Uploader form. You may customize different paths by opening the following file: encoding.com_uploader.js
Change line:
var script_path = '';
to something like this:
var script_path = '/YOUR/PATH/';
Uploading Status and Progress:
While a file is uploading to the server, the script periodically requests progress information from the server. Uploading process consists of two parts:
1. uploading file from client PC to server
2. uploading file from server to s3 bucket
Each step should return its own progress information. That information could be requested by calls:
https://upload.encoding.com/progress?X-Progress-ID={SID} - returns percentage of 1st step progress
https://upload.encoding.com/s3info.php?sid={SID} - returns percentage of 2nd step progress
https://upload.encoding.com/fileinfo.php?sid={SID} - returns result URL
First call returns JSON object like this:
new Object({ 'state' : 'uploading', 'received' : 5340229, 'size' : 21269377 })
When state value become 'done', it means step 1 is done and we should call the 2nd step.
Second call returns JSON object like this:
new Object({"progress":"81","state":"done"})
When progress value reaches 101, it means step 2 is done and the final URLs are ready to be retrieved via the 3rd step.
Fileinfo.php returns JSON object with urls.
{"filename":"http:\/\/pc-upload.s3.amazonaws.com\/e716afec11b7865c5b2461242a5c891fc_111.mkv","mediainfo":"http:\/\/upload.encoding.com\/mediainfo\/e716afec11b7865c5b2461242a5c891fc.xml","error":""}
Those calls are implemented in Progress.php file and can be changed by the "action" variable.
Stored files will be available on a server and s3 storage for 14 days.
To get the current uploading status in JS script, you could use the variable from FileUploader.callback function which is called periodically during the upload. The function contains variable [response] (JSON Object) with the current state: response.status (starting, uploading, processing, done, error), response.size (total size of the file in the bytes) and response.received (loaded bytes). Thus, it can be used to create your custom progress bar.
When upload is successfully completed (response.status is done), you can then retrieve a path to the file by using the filename variable.
Get Media Info
When upload is successfully completed, Encoding.com will analyze the file and generate an XML document with complete MediaInfo data which can be used when generating the AddMedia request. The link to the file will be in the MediaInfo variable.
To access those variables, see encoding.com_uploader.js FileUploader.callback function.
Response.state param describes eachstep of the uploading process.
starting - process is starting now.
uploading - file is being uploaded.
processing - File has been uploaded and now is being processed.
done - File has been finally uploaded and processed.
error - An error was occurred and file uploading had aborted.
Why are my Vp6 Flix Engine dimensions off from what I requested?
The encoder that we choose for this particular encode will automagically change the dimension on your requested encode to the nearest multiple of 16 for both width and height. This is to give you the best possible results for viewing these particular flash files.
The encoder that we choose for this particular encode will automagically change the dimension on your requested encode to the nearest multiple of 16 for both width and height. This is to give you the best possible results for viewing these particular flash files.
<-- HideWhat is the maximum number of of tasks I can request?
Sounds like you have lots of encoding to do there!
With Encoding.com's powerful API or snappy watch folders, you can request a maximum of 100 tasks per encode, or folder respectively.
Sounds like you have lots of encoding to do there!
With Encoding.com's powerful API or snappy watch folders, you can request a maximum of 100 tasks per encode, or folder respectively.
<-- HideHow can I use your API to determine how I should encode my files?
Do you have a bunch of files that require encoding, but want to know more about the source media properties?
Use this workflow to achieve this:
Step 1: Send source media to the API via the AddMediaBenchmark action. Manage.encoding.com will accept this request and assign a Media ID for the video.
http://www.encoding.com/api/category/category/complete_api_documentation#addmedia_action
Step 2:
More -->Do you have a bunch of files that require encoding, but want to know more about the source media properties?
Use this workflow to achieve this:
Step 1: Send source media to the API via the AddMediaBenchmark action. Manage.encoding.com will accept this request and assign a Media ID for the video.
http://www.encoding.com/api/category/category/complete_api_documentation#addmedia_action
Step 2: Send a GetMediaInfo call to the API, with assigned MediaID, so source video characteristics will be shown, such as framesize, duration, and bitrate.
http://www.encoding.com/api/category/category/complete_api_documentation#getmediainfo_action
Step 3: Configure your CMS to select a setting based on returned media properites.
Step 4: Send back a ProcessMedia call, and use GetStatus to monitor progress.
http://www.encoding.com/api/category/category/complete_api_documentation#getstatus_action
NOTE: If you need separate progress reports for each task, add <extended>yes</extended> to GetStatus
Step 5: When job completes, have your CMS parse the result notification.
http://www.encoding.com/api/category/category/complete_api_documentation#encoding_result_xml_forma
- - -
To reuse source files, which expire after 15 days, use <action>UpdateMedia</action> with an existing Media ID to replace all of the existing format fields.
<-- HideCan I add a dissolve to my encodes?
With Encoding.com, you can easily add a dissovle at the start and end of your encodes via our fade commands.
Click on this link for more information.
How do I use the fade in, fade out commands?
Within the format tag, you can now specify the duration and length of the fade that you would like to apply to your encodes.
via XML:
<format> <fade_in>[FadeInStart]:[FadeInDuration]</fade_in> <fade_out>[FadeOutStart]:[FadeOutDuration]</fade_out> </format>
Definitions:
FadeInStart : Start of fade_in effect in seconds
FadeInDuration: Duration of fade_in effect in seconds
FadeOutStart: Start of fade_out effect in
More -->Within the format tag, you can now specify the duration and length of the fade that you would like to apply to your encodes.
via XML:
<format> <fade_in>[FadeInStart]:[FadeInDuration]</fade_in> <fade_out>[FadeOutStart]:[FadeOutDuration]</fade_out> </format>
Definitions:
FadeInStart: Start of fade_in effect in seconds
FadeInDuration: Duration of fade_in effect in seconds
FadeOutStart: Start of fade_out effect in seconds. If you specify this parameter equal to 0, fade out effect will be applied to the end of video/audio.
FadeOutDuration: Duration of fade_out effect in seconds.
Note: FadeIn/FadeOut effect applies both for audio and video streams.
<-- Hide
How can I correct audio sync issues?
You can easily correct audio sync issues by setting the audio_sync tag in your XML, as follows:
<audio_sync>1</audio_sync>
This works by adjusting the output audio stream to match the source timestamps, in # of samples per second. Consider this a great for fixing sync when source is variable framerate, or has timescale problems.
The most common instance
More -->You can easily correct audio sync issues by setting the audio_sync tag in your XML, as follows:
<audio_sync>1</audio_sync>
This works by adjusting the output audio stream to match the source timestamps, in # of samples per second. Consider this a great for fixing sync when source is variable framerate, or has timescale problems.
The most common instance of this is webcam video recorded with Nellymoser audio codec from the free flash plugin.
<-- HideHow can I add a watermark with an alpha channel?
Use a PNG with alpha-channel as Logo source.
If your logo source is PNG with alpha-channel, set logo_mode equal to 1, to keep transparency.
Note: the logo_transparent tag is only for usage with the vp6_flix output via XML.
Example XML:
<logo> <logo_source>[LogoURL]</logo_source> <logo_x>[LogoLeft]</logo_x> <logo_y>[LogoTop]</logo_y> <logo_mode>1</logo_mode> <logo_threshold>[LogoTreshold]</logo_threshold> <logo_transparent>[LogoTransparent]</logo_transparent> </logo>
Use a PNG with alpha-channel as Logo source.
If your logo source is PNG with alpha-channel, set logo_mode equal to 1, to keep transparency.
Note: the logo_transparent tag is only for usage with the vp6_flix output via XML.
Example XML:
<logo> <logo_source>[LogoURL]</logo_source> <logo_x>[LogoLeft]</logo_x> <logo_y>[LogoTop]</logo_y> <logo_mode>1</logo_mode> <logo_threshold>[LogoTreshold]</logo_threshold> <logo_transparent>[LogoTransparent]</logo_transparent> </logo><-- Hide
How do I format my source URL for a FTPS source?
Thinking of using FTPS as your source locations? No problemo.
All you need to do is specify the port in which we access your file at. Connections via FTPS will use port 22 by default. If you'd like to specify a different port, add it to then end of your URL.
Example:
FTPS://www.xyz.com:[port]/files/input.mov
More -->Thinking of using FTPS as your source locations? No problemo.
All you need to do is specify the port in which we access your file at. Connections via FTPS will use port 22 by default. If you'd like to specify a different port, add it to then end of your URL.
Example:
FTPS://www.xyz.com:[port]/files/input.mov
<-- HideHow do I format my source URL for a HTTPS source?
Thinking of using HTTPS as your source locations? No problemo.
All you need to do is specify the port in which we access your file at. Connections via HTTPS will use port 443 by default. If you'd like to specify a different port, add it to then end of your URL.
Example:
HTTPS://www.xyz.com:[port]/files/input.mov
More -->Thinking of using HTTPS as your source locations? No problemo.
All you need to do is specify the port in which we access your file at. Connections via HTTPS will use port 443 by default. If you'd like to specify a different port, add it to then end of your URL.
Example:
HTTPS://www.xyz.com:[port]/files/input.mov
<-- HideSave some time on your encodes!
Save some time with your encodes with this simple step, if you are sourcing from S3, try this URL formatting:
http://[AWS_KEY:AWS_SECRET@][bucket].s3.amazonaws.com/[filename]?nocopy
if 'nocopy' is specified at the end of your URL, the source file will be downloaded directly from your bucket, thus saving time. Please use this only if your buckets are located in the US. If ?nocopy
More -->Save some time with your encodes with this simple step, if you are sourcing from S3, try this URL formatting:
http://[AWS_KEY:AWS_SECRET@][bucket].s3.amazonaws.com/[filename]?nocopy
if 'nocopy' is specified at the end of your URL, the source file will be downloaded directly from your bucket, thus saving time. Please use this only if your buckets are located in the US. If ?nocopy is not specified at the end of your URL, the source will be copied to Encoding.com bucket first. This workflow saves you traffic in the case of non-US buckets and more than one encoding task per source.
<-- HideHow can I copy audio in my encodes?
If you specify the audio_codec tag to equal 'copy', the options audio_channels_number, audio_sample_rate, audio_bitrate will be ignored and their values will be copied from your source file.
Example:
<audio_codec>copy</audio_codec>
If you specify the audio_codec tag to equal 'copy', the options audio_channels_number, audio_sample_rate, audio_bitrate will be ignored and their values will be copied from your source file.
Example:
<audio_codec>copy</audio_codec><-- Hide
How do I know what it is that I’m doing?
Well, sounds like you're new to the platform, right?
Your objectives are to encode a video and deliver it someplace.
Here's where to start:
Beginner:
Most folks log into the UI @ http://www.encoding.com and select 'Add Media' from the list of choices on the left in order to test drive the system. Run through this
More -->Well, sounds like you're new to the platform, right?
Your objectives are to encode a video and deliver it someplace. ![]()
Here's where to start:
Beginner:
Most folks log into the UI @ http://www.encoding.com and select 'Add Media' from the list of choices on the left in order to test drive the system. Run through this a couple times, as adding media one a time is a great way to get started with the platform. Try adding a few tasks to your source media for multiple outputs. Make sure to take a peek at the Encoding Queue, as you'll have to manually select files you add via 'Add Media' to process manually. Want to skip this step? Set up a watch folder and automagically content will be pulled from your source location and processed.
Intermediate:
Setting up a watch folder on Amazon S3, Rackspace or your local FTP site is easy. Log into the UI, select 'Watch Folder' from the list on the left and select 'Add New.' Configure the URLs to hit your source location, deliver to your preferred destination, add a notify, then add a few tasks to the folder. If you have any questions on configuring FTP, S3 or Rackspace URLs, then make sure to check out the following article: http://www.encoding.com/how_can_i_specify_where_my_source_media_is_located
Advanced:
Wanna jump in with both feet and utilize Encoding.com's powerful API to submit your content to our platform?
Find all the resources you need here:
http://www.encoding.com/api/category/category/complete_api_documentation
<-- HideWhere should I post my XML to?
To send API requests to Encoding.com, please send HTTP(S) post requests to manage.encoding.com. All client requests and server responses use the XML format. Clients must send the HTTP(S) POST request with a single parameter named xml. The server response will be a normal XML document.
To send API requests to Encoding.com, please send HTTP(S) post requests to manage.encoding.com. All client requests and server responses use the XML format. Clients must send the HTTP(S) POST request with a single parameter named xml. The server response will be a normal XML document.
<-- HideWhat information does GetStatus Extended Mode return?
Need more info then what GetStatus returns? Use GetStatus Extended Mode to return heaploads of information on a particular MediaID. Indicate one or many (separated by commas of course); the MediaID must be included. Need a quick guide as to what all the tags refer to, go here:
http://www.encoding.com/api/category/category/complete_api_documentation#extended_batch_mode
Request:
<query> <action>GetStatus</action> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <extended>yes</extended> <mediaid>[CommaSeparatedList]</mediaid> </query>More -->
Need more info then what GetStatus returns? Use GetStatus Extended Mode to return heaploads of information on a particular MediaID. Indicate one or many (separated by commas of course); the MediaID must be included. Need a quick guide as to what all the tags refer to, go here:
http://www.encoding.com/api/category/category/complete_api_documentation#extended_batch_mode
Request:
<query>
<action>GetStatus</action>
<userid>[UserID]</userid>
<userkey>[UserKey]</userkey>
<extended>yes</extended>
<mediaid>[CommaSeparatedList]</mediaid>
</query>
Response:
<response>
<job>
<id>[MediaID]</id>
<userid>[UserID]</userid>
<sourcefile>[SourceFile]</sourcefile>
<status>[MediaStatus]</status>
<notifyurl>[NotifyURL]</notifyurl>
<created>[Date]</created>
<started>[Date]</started>
<finished>[Date]</finished>
<prevstatus>[MediaStatus]</prevstatus>
<downloaded>[Date]</downloaded>
<filesize>[FileSize]</filesize>
<processor>[AMAZON | RACKSPACE]</processor>
<progress>[TotalProgress]</progress>
<time_left>[TotalTimeLeft]</time_left>
<format>
<id>[ID]</id>
<status>[Status]</status>
<created>[Date]</created>
<started>[Date]</started>
<finished>[Date]</finished>
<s3_destination>[TempS3Link]</s3_destination> <!-- optional -->
<cf_destination>[TempCFLink]</cf_destination> <!-- optional -->
<convertedsize>[FileSize]</convertedsize>
<time_left>[TotalTimeLeft]</time_left>
<progress>[TotalProgress]</progress>
<time_left_current>[StatusTimeLeft]</time_left_current>
<progress_current>[StatusPorgress]</progress_current>
<file_size>[FileSize]</file_size>
<destination>[URL]</destination>
<destination_status>[Saved|Error (ErrorDescription)]</destination_status>
<destination>[URL_2]</destination>
<destination_status>[Saved|Error (ErrorDescription)]</destination_status>
<destination>[URL_N]</destination>
<destination_status>[Saved|Error (ErrorDescription)]</destination_status>
</format>
<format>
</format>
</job>
<job>
</job>
</response>
<-- Hide
How do I use GetStatus and what information does it return?
Want to know what the status is of one or many jobs? Use GetStatus to return information on a particular MediaID. Indicate one or many (separated by commas of course); the MediaID must be included. Want even more info? See the article on GetStatus Extended for details on what that returns. Need a quick guide as to what all the
More -->Want to know what the status is of one or many jobs? Use GetStatus to return information on a particular MediaID. Indicate one or many (separated by commas of course); the MediaID must be included. Want even more info? See the article on GetStatus Extended for details on what that returns. Need a quick guide as to what all the tags refer to, go here:
http://www.encoding.com/api/category/category/complete_api_documentation#getstatus_action
<?xml version="1.0"?> <query> <action>GetStatus</action> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <mediaid>[MediaID]</mediaid> </query>
Here's what you'll receive back:
<?xml version="1.0"?>
<response>
<id>[MediaID]</id>
<userid>[UserID]</userid>
<sourcefile>[SourceFile]</sourcefile>
<status>[MediaStatus]</status>
<notifyurl>[NotifyURL]</notifyurl>
<created>[Date]</created>
<started>[Date]</started>
<finished>[Date]</finished>
<prevstatus>[MediaStatus]</prevstatus>
<downloaded>[Date]</downloaded>
<uploaded>[Date]</uploaded>
<time_left>[TotalTimeLeft]</time_left>
<progress>[TotalProgress]</progress>
<time_left_current>[StatusTimeLeft]</time_left_current>
<progress_current>[StatusProgress]</progress_current>
<format>
<id>[ID]</id>
<status>[Status]</status>
<created>[Date]</created>
<started>[Date]</started>
<finished>[Date]</finished>
<!----Format_Fields----->
<s3_destination>[TempS3Link]</s3_destination> <!-- optional -->
<cf_destination>[TempCFLink]</cf_destination> <!-- optional -->
<destination>[URL]</destination>
<destination_status>[Saved|Error (ErrorDescription)]</destination_status>
<destination>[URL_2]</destination>
<destination_status>[Saved|Error (ErrorDescription)]</destination_status>
<destination>[URL_N]</destination>
<destination_status>[Saved|Error (ErrorDescription)]</destination_status>
</format>
<format>
</format>
</response>
<-- Hide
How do I use GetBandwidthStatGroupDate for sub accounts?
Use GetBandwidthStatGroupDate to return encoding traffic of selected user. You can specify a certain date to return information on a particular user. The traffic will be grouped by existing's dates. Please note "date_to" and "date_from" the optional fields. You should use it if you intend to recieve bandwidth statistic into specified date interval. Post the following XML to the API
More -->Use GetBandwidthStatGroupDate to return encoding traffic of selected user. You can specify a certain date to return information on a particular user. The traffic will be grouped by existing's dates. Please note "date_to" and "date_from" the optional fields. You should use it if you intend to recieve bandwidth statistic into specified date interval. Post the following XML to the API
<?xml version="1.0"?>
<query>
<userid>[UserID]</userid>
<userkey>[UserKey]</userkey>
<action>GetBandwidthStatGroupDate</action>
<action_user_id>[ActionUserID]</action_user_id>
<date_from>[YYYY-MM-DD]</date_from>
</date_to>[YYYY-MM-DD]</date_to>
</query>
Response:
<?xml version="1.0"?>
<response>
<action>getbandwidthstatgroupdate</action>
<status>Success</status>
<result>
<user_id>[userID]</user_id>
<date_[date1]>
<in>
<bytes>[amount in bytes]</bytes>
<gb>[amount in gigabytes]</gb>
</in>
<out>
<bytes>[amount in bytes]</bytes>
<gb>[amount in gigabytes]</gb>
</out>
</date_[date1]>
<date_[date2]>
<in>
<bytes>[amount in bytes]</bytes>
<gb>[amount in gigabytes]</gb>
</in>
<out>
<bytes>[amount in bytes]</bytes>
<gb>[amount in gigabytes]</gb>
</out>
</date_[date2]>
...
</result>
</response>
How do I use GetBandwidthStat for Sub Accounts?
Use GetBandwidthStat to return encoding traffic of selected user. You can specify a certain date to return information on a particular user. Please note "date_to" and "date_from" the optional fields. You should use it if you intend to recieve bandwidth statistic into specified date interval. Post the following XML to the API:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>GetBandwidthStat</action> <action_user_id>[ActionUserID]</action_user_id> <date_from>[YYYY-MM-DD]</date_from> </date_to>[YYYY-MM-DD]</date_to> </query>
and your return will be:
More -->Use GetBandwidthStat to return encoding traffic of selected user. You can specify a certain date to return information on a particular user. Please note "date_to" and "date_from" the optional fields. You should use it if you intend to recieve bandwidth statistic into specified date interval. Post the following XML to the API:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>GetBandwidthStat</action> <action_user_id>[ActionUserID]</action_user_id> <date_from>[YYYY-MM-DD]</date_from> </date_to>[YYYY-MM-DD]</date_to> </query>
and your return will be:
<?xml version="1.0"?>
<response>
<action>getbandwidthstat</action>
<status>Success</status>
<result>
<user_id>[UserID]</user_id>
<date_from>[Date from]</date_from>
<date_to>[Date to]</date_to>
<in>
<bytes>[amount in bytes]</bytes>
<gb>[amount in gigabytes]</gb>
</in>
<out>
<bytes>[amount in bytes]</bytes>
<gb>[amount in gigabytes]</gb>
</out>
<turbo>
<bytes>[amount in bytes]</bytes>
<gb>[amount in gigabytes]</gb>
</turbo>
</result>
</response>
<-- Hide
What information can I expect to be returned in GetStorageSpace?
Interested in a particular user's storage space. Send this XML to our API:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>GetStorageSpace</action> <action_user_id>[ActionUserID]</action_user_id> </query>
The response that you'll receive in is GB as follows:
<?xml version="1.0"?>
<response>
<action>getstoragespace</action>
<status>Success</status>
<result>
<user_id>[UserID]</user_id>
<gb>[Storage Space]</gb>
</result>
</response>
Interested in a particular user's storage space. Send this XML to our API:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>GetStorageSpace</action> <action_user_id>[ActionUserID]</action_user_id> </query>
The response that you'll receive in is GB as follows:
<?xml version="1.0"?>
<response>
<action>getstoragespace</action>
<status>Success</status>
<result>
<user_id>[UserID]</user_id>
<gb>[Storage Space]</gb>
</result>
</response>
<-- Hide
What information does GetASM return?
Say you're interested in how a user's been using the platform. In particular, their success rate, queue times, bandwidth specs, etc. Use GetASM to return this info. Here's an example of the XML to send to the API
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>GetASM</action> <action_user_id>[ActionUserID]</action_user_id> </query>
and the response:
<?xml version="1.0"?> <response> <action>getasm</action> <status>Success</status> <result> <user_id>[UserID]</user_id> <encoding_success_rate> <percentage>100</percentage> </encoding_success_rate> <queue_time> <second>[average queue time inMore -->
Say you're interested in how a user's been using the platform. In particular, their success rate, queue times, bandwidth specs, etc. Use GetASM to return this info. Here's an example of the XML to send to the API
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>GetASM</action> <action_user_id>[ActionUserID]</action_user_id> </query>
and the response:
<?xml version="1.0"?>
<response>
<action>getasm</action>
<status>Success</status>
<result>
<user_id>[UserID]</user_id>
<encoding_success_rate>
<percentage>100</percentage>
</encoding_success_rate>
<queue_time>
<second>[average queue time in this month]</second>
</queue_time>
<processing_time>
<second>[average processing time in this month]</second>
</processing_time>
<connection_speed>
<kbs>[average connection speed]</kbs>
</connection_speed>
<encoding_bandwidth>
<gb>[average amount of encoding bandwidth]</gb>
</encoding_bandwidth>
</result>
</response>
<-- Hide
What information does GetSubUsers return?
Let's say you've made a ton of subusers, but want information back as a whole on all the users you've created. Send the following to the API...
<?xml version="1.0"?> <query> <!-- Main fields --> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>getsubusers</action> </query>
and you'll get in return a complete list of who's who for sub users:
<?xml version="1.0"?> <response> <action>getsubusers</action> <status>Success</status> <result> <user_id></user_id> <user_0> <ID>[UserID]</ID>More -->
Let's say you've made a ton of subusers, but want information back as a whole on all the users you've created. Send the following to the API...
<?xml version="1.0"?>
<query>
<!-- Main fields -->
<userid>[UserID]</userid>
<userkey>[UserKey]</userkey>
<action>getsubusers</action>
</query>
and you'll get in return a complete list of who's who for sub users:
<?xml version="1.0"?>
<response>
<action>getsubusers</action>
<status>Success</status>
<result>
<user_id></user_id>
<user_0>
<ID>[UserID]</ID>
<Login>[Login]</Login>
<FirstName>[FirstName]</FirstName>
<LastName>[LastName]</LastName>
<Email>[Email]</Email>
<UserKey>[UserKey]</UserKey>
<Country>[Country]</Country>
<Phone>[Phone]</Phone>
<Status>[Status]</Status>
</user_0>
<user_1>
<ID>[UserID]</ID>
<Login>[Login]</Login>
<FirstName>[FirstName]</FirstName>
<LastName>[LastName]</LastName>
<Email>[Email]</Email>
<UserKey>[UserKey]</UserKey>
<Country>[Country]</Country>
<Phone>[Phone]</Phone>
<Status>[Status]</Status>
</user_1>
</result>
</response>
<-- Hide
What information does GetUserInfo return?
For sub accounts, the whole point of creating them is to track usage, right? Well, since we have no UI, you'll want a way to see the information we have stored on a particular user under your main account. Use GetUserInfo to return information on a particular user:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>GetUserInfo</action> <action_user_id>[ActionUserID]</action_user_id> </query>
We'll return back this handy information:
<?xmlMore -->
For sub accounts, the whole point of creating them is to track usage, right? Well, since we have no UI, you'll want a way to see the information we have stored on a particular user under your main account. Use GetUserInfo to return information on a particular user:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>GetUserInfo</action> <action_user_id>[ActionUserID]</action_user_id> </query>
We'll return back this handy information:
<?xml version="1.0"?>
<response>
<action>getuserinfo</action>
<status>Success</status>
<result>
<user_id>[ActionUserID]</user_id>
<ID>[ActionUserID]</ID>
<Login>[Login]</Login>
<FirstName>[FirstName]</FirstName>
<LastName>[LastName]</LastName>
<Email>[Email]</Email>
<UserKey>[UserKey]</UserKey>
<Country>[Country]</Country>
<Phone>[Phone]</Phone>
<Status>[Status]</Status>
</result>
</response>
<-- Hide
How can I update a sub user’s account information?
If you wish to update the email address and phone number of a sub user, send the following format of XML to our API.
<?xml version="1.0"?> <query> <!-- Main fields --> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>UpdateSubUser</action> <action_user_id>[ActionUserID]</action_user_id> <user_data> <email>[New email]</email> <phone>[New phone]</phone> </user_data> </query>
You'll receive the following back to confirm success of the update:
<?xml version="1.0"?> <response> <action>updatesubuser</action> <status>Success</status> <result> <user_id></user_id> <message>The user data was updated</message> <email>[New Email]</email> <country>[New Country]</country>More -->
If you wish to update the email address and phone number of a sub user, send the following format of XML to our API.
<?xml version="1.0"?> <query> <!-- Main fields --> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>UpdateSubUser</action> <action_user_id>[ActionUserID]</action_user_id> <user_data> <email>[New email]</email> <phone>[New phone]</phone> </user_data> </query>
You'll receive the following back to confirm success of the update:
<?xml version="1.0"?>
<response>
<action>updatesubuser</action>
<status>Success</status>
<result>
<user_id></user_id>
<message>The user data was updated</message>
<email>[New Email]</email>
<country>[New Country]</country>
</result>
</response>
<-- Hide
How can I delete a Sub User from my account?
You can easily delete sub accounts from your master account by sending the following XML to the API:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>DeleteSubUser</action> <action_user_id>[ActionUserID]</action_user_id> </query>
You'll receive the following response:
<?xml version="1.0"?> <response> <action>deletesubuser</action> <status>Success</status> </response>
You can easily delete sub accounts from your master account by sending the following XML to the API:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>DeleteSubUser</action> <action_user_id>[ActionUserID]</action_user_id> </query>
You'll receive the following response:
<?xml version="1.0"?> <response> <action>deletesubuser</action> <status>Success</status> </response><-- Hide
What information is necessary to sign up a Sub Account to my master account?
To sign up a sub user on your account, you'll need to provide Encoding.com with a few pieces of information on the sub user.
<?xml version="1.0"?> <query> <!-- Main fields --> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>AddSubUser</action> <user_data> <email>[Email]</email> <login>[Login]</login> <password>[Password]</password> <first_name>[FirstName]</first_name> <last_name>[LastName]</last_name> <phone>[Phone]</phone> </user_data> </query>
You'll receive the following response back from the system once the user has been created:
<?xml version="1.0"?> <response> <action>addsubuser</action> <status>Success</status> <result> <plan>Max</plan> <user_id>New_UserID</user_id> <user_key>Unique_subaccount_API_key</user_key> <message>The new sub user has been created</message> </result> </response>
More -->
To sign up a sub user on your account, you'll need to provide Encoding.com with a few pieces of information on the sub user.
<?xml version="1.0"?> <query> <!-- Main fields --> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>AddSubUser</action> <user_data> <email>[Email]</email> <login>[Login]</login> <password>[Password]</password> <first_name>[FirstName]</first_name> <last_name>[LastName]</last_name> <phone>[Phone]</phone> </user_data> </query>
You'll receive the following response back from the system once the user has been created:
<?xml version="1.0"?> <response> <action>addsubuser</action> <status>Success</status> <result> <plan>Max</plan> <user_id>New_UserID</user_id> <user_key>Unique_subaccount_API_key</user_key> <message>The new sub user has been created</message> </result> </response>
<-- Hide
What are Sub Accounts?
Sub accounts are only granted to users on MAX or higher accounts. They are a useful way of tracking bandwidth on the master account if you have many users / agencies on your account. Please note that there is no UI for sub users, as its entirely supported by the API. Contact the administrator of the plan that signed up
More -->Sub accounts are only granted to users on MAX or higher accounts. They are a useful way of tracking bandwidth on the master account if you have many users / agencies on your account. Please note that there is no UI for sub users, as its entirely supported by the API. Contact the administrator of the plan that signed up with Encoding.com for more information. This feature is not automatically turned on by Encoding.com; you must request this by contacting the Help Desk. For full information on sub accounts, please check out the complete API documentation.
http://www.encoding.com/api/category/category/sub_account_api_documentation
<-- Hide
What information does GetMediaList return?
GetMediaList returns a list of the user's media in the queue. An example of a response from the call would be:
<?xml version="1.0"?>
<response>
<media>
<mediafile>[""SourceFile""]</mediafile>
<mediaid>[""MediaID""]</mediaid>
<mediastatus>Closed</mediastatus>
<createdate>[Date]</createdate>
<startdate>[Date]</startdate>
<finishdate>[Date]</finishdate>
</media>
<media>
...
</media>
</response>
GetMediaList returns a list of the user's media in the queue. An example of a response from the call would be:
<?xml version="1.0"?>
<response>
<media>
<mediafile>[""SourceFile""]</mediafile>
<mediaid>[""MediaID""]</mediaid>
<mediastatus>Closed</mediastatus>
<createdate>[Date]</createdate>
<startdate>[Date]</startdate>
<finishdate>[Date]</finishdate>
</media>
<media>
...
</media>
</response>
<-- Hide
What does CancelMedia do?
CancelMedia will delete specified media and all its items in the queue. An example of its usage is:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>CancelMedia</action> <mediaid>1234567</mediaid> <query>
CancelMedia will delete specified media and all its items in the queue. An example of its usage is:
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>CancelMedia</action> <mediaid>1234567</mediaid> <query><-- Hide
What will UpdateMedia do to an existing MediaID?
UpdateMedia will replace information about existing media's formats. All old format items will be deleted and the new ones will be added. This is useful if you just want to change the settings on a particular MediaID.
<?xml version="1.0"?> <query> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>UpdateMedia</action> <mediaid>1234567</mediaid> <format> <output>fl9</output> <size>320x240</size> <bitrate>256k</bitrate> <audio_bitrate>64k</audio_bitrate> <audio_channels_number>2</audio_channels_number> <keep_aspect_ratio>yes</keep_aspect_ratio> <video_codec>libx264</video_codec> <profile>high</profile> <VCodecParameters>no</VCodecParameters> <audio_codec>libfaac</audio_codec> <two_pass>no</two_pass> <cbr>no</cbr> <deinterlacing>no</deinterlacing> <keyframe>300</keyframe> <audio_volume>100</audio_volume> <file_extension>mp4</file_extension> </format> <format> <output>thumbnail</output> <time>5</time> <video_codec>mjpeg</video_codec> <keep_aspect_ratio>yes</keep_aspect_ratio>More -->
UpdateMedia will replace information about existing media's formats. All old format items will be deleted and the new ones will be added. This is useful if you just want to change the settings on a particular MediaID.
<?xml version="1.0"?>
<query>
<userid>[UserID]</userid>
<userkey>[UserKey]</userkey>
<action>UpdateMedia</action>
<mediaid>1234567</mediaid>
<format>
<output>fl9</output>
<size>320x240</size>
<bitrate>256k</bitrate>
<audio_bitrate>64k</audio_bitrate>
<audio_channels_number>2</audio_channels_number>
<keep_aspect_ratio>yes</keep_aspect_ratio>
<video_codec>libx264</video_codec>
<profile>high</profile>
<VCodecParameters>no</VCodecParameters>
<audio_codec>libfaac</audio_codec>
<two_pass>no</two_pass>
<cbr>no</cbr>
<deinterlacing>no</deinterlacing>
<keyframe>300</keyframe>
<audio_volume>100</audio_volume>
<file_extension>mp4</file_extension>
</format>
<format>
<output>thumbnail</output>
<time>5</time>
<video_codec>mjpeg</video_codec>
<keep_aspect_ratio>yes</keep_aspect_ratio>
<file_extension>jpg</file_extension>
</format>
<query>
<-- Hide
What does the action AddMediaBenchmark mean?
AddMediaBenchmark will add new media to user's queue and set a flag to NOT process automatically after downloading. When sending XML to the API, format fields can be specified as well. If NotifyURL is set, a notification will be sent after the media is ready for processing. NOTE: The media will get 'Ready to process' status only when at least one is
More -->AddMediaBenchmark will add new media to user's queue and set a flag to NOT process automatically after downloading. When sending XML to the API, format fields can be specified as well. If NotifyURL is set, a notification will be sent after the media is ready for processing. NOTE: The media will get 'Ready to process' status only when at least one is specified. In order to process this MediaID, the action 'ProcessMedia' must be sent as well with the corresponding MediaID.
<?xml version="1.0"?>
<query>
<userid>[UserID]</userid>
<userkey>[UserKey]</userkey>
<action>AddMediaBenchmark</action>
<format>
<output>fl9</output>
<size>320x240</size>
<bitrate>256k</bitrate>
<audio_bitrate>64k</audio_bitrate>
<audio_channels_number>2</audio_channels_number>
<keep_aspect_ratio>yes</keep_aspect_ratio>
<video_codec>libx264</video_codec>
<profile>high</profile>
<VCodecParameters>no</VCodecParameters>
<audio_codec>libfaac</audio_codec>
<two_pass>no</two_pass>
<cbr>no</cbr>
<deinterlacing>no</deinterlacing>
<keyframe>300</keyframe>
<audio_volume>100</audio_volume>
<file_extension>mp4</file_extension>
</format>
<format>
<output>thumbnail</output>
<time>5</time>
<video_codec>mjpeg</video_codec>
<keep_aspect_ratio>yes</keep_aspect_ratio>
<file_extension>jpg</file_extension>
</format>
<query>
<-- Hide
What are the differences between the Restart actions in the API?
There's a little bit of similarity in a few of the Restart actions in the API. Here's the breakdown:
+ RestartMedia: This will completely restart the entire job, including all tasks.
+ RestartMediaErrors: This action will retry specific tasks within the request that produced an error. For example, if you received a 404 error on a file and
More -->There's a little bit of similarity in a few of the Restart actions in the API. Here's the breakdown:
+ RestartMedia: This will completely restart the entire job, including all tasks.
+ RestartMediaErrors: This action will retry specific tasks within the request that produced an error. For example, if you received a 404 error on a file and remedied the issue, this action will successfully rerun only that task.
+ RestartMediaTask: This action requires an additional parameter. You can specify to rerun a specific task within a MediaID. For more information on the difference between MediaIDs and TaskIDs, please go here.
<-- HideWhats an API key and how do I get one?
When you begin using the Encoding.com Desktop Application or the API, you'll need to locate your API key to access the platform. A unique API key will be generated and assigned to your used ID upon successful creation of your Encoding.com user account. Please protect your key, as this key is a safeguard that we employ to restrict access to
More -->When you begin using the Encoding.com Desktop Application or the API, you'll need to locate your API key to access the platform. A unique API key will be generated and assigned to your used ID upon successful creation of your Encoding.com user account. Please protect your key, as this key is a safeguard that we employ to restrict access to your user account. If for any reason, you suspect someone is using your account, you may regenerate your key. Directions follow below.
To locate your API key, login to the customer area @ http://www.encoding.com/login. Select 'My Account' from the list on the left. Within that page, you'll see a 33 digit key, containing both letters and numbers. Copy this locally, as well as your 4 digit user ID, as you'll need to plug this into the Desktop Application to get started. If you're a developer, you're all ready to start sending XMLs via API to Encoding.com. To regenerate your API key at any time, select 'Regenerate' and new unique key will be created for your account, which will end all previous access to the platform with the pre-existing key.
+ To add the user ID and key to the Desktop Application, please open the app, then and select 'Preferences' from the menu at the top. Plug in your user ID and your API key. That's it. You're ready to encode.
<-- HideWhat information will AddMediaBenchmark return?
The AddMediaBenchmark call will return:
<response><message>Added</message><MediaID>1234567</MediaID></response>
The AddMediaBenchmark call will return:
<response><message>Added</message><MediaID>1234567</MediaID></response>
<-- Hide
What information does UpdateMedia return?
The UpdateMedia call will return:
<response><message>Updated</message></response>
The notify URL will remain in place, if it was entered in the original call, and receive a message when the job is complete.
The UpdateMedia call will return:
<response><message>Updated</message></response>
The notify URL will remain in place, if it was entered in the original call, and receive a message when the job is complete.
<-- HideDo you have a sample of how I should format my XML for Encoding.com?
Taken from our API documentation, our sample XML serves as a starting point for API Integration with Encoding.com
<?xml version="1.0"?> <query> <!-- Main fields --> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>[Action]</action> <mediaid>[MediaID]</mediaid> <source>[SourceFile]</source> <source>[SourceFile1]</source> <!-- if multiple SourceFile added, they will be concatenated --> ... <source>[SourceFileN]</source> <notify>[NotifyURL]</notify> <instant>[yes|no]</instant> <format> <!--More -->
Taken from our API documentation, our sample XML serves as a starting point for API Integration with Encoding.com
<?xml version="1.0"?>
<query>
<!-- Main fields -->
<userid>[UserID]</userid>
<userkey>[UserKey]</userkey>
<action>[Action]</action>
<mediaid>[MediaID]</mediaid>
<source>[SourceFile]</source>
<source>[SourceFile1]</source> <!-- if multiple SourceFile added, they will be concatenated -->
...
<source>[SourceFileN]</source>
<notify>[NotifyURL]</notify>
<instant>[yes|no]</instant>
<format>
<!-- Format fields -->
<noise_reduction>luma_spatial:chroma_spatial:luma_temp</noise_reduction>
<output>[Output format]</output>
<video_codec>[Video Codec]</video_codec>
<audio_codec>[Audio Codec]</audio_codec>
<bitrate>[Video bitrate]</bitrate>
<audio_bitrate>[Audio bitrate]</audio_bitrate>
<audio_sample_rate>[Audio quality]</audio_sample_rate>
<audio_volume>[Volume]</audio_volume>
<size>[Size]</size>
<crop_left>[Crop Left]</crop_left>
<crop_top>[Crop Top]</crop_top>
<crop_right>[Crop Right]</crop_right>
<crop_bottom>[Crop Bottom]</crop_bottom>
<keep_aspect_ratio>[yes/no]</keep_aspect_ratio>
<set_aspect_ratio>[ASPECT_RATIO]</set_aspect_ratio>
<add_meta>[yes/no]</add_meta>
<hint>[yes/no]</hint>
<rc_init_occupancy>[RC Occupancy]</rc_init_occupancy>
<minrate>[Min Rate]</minrate>
<maxrate>[Max Rate]</maxrate>
<bufsize>[RC Buffer Size]</bufsize>
<keyframe>[Keyframe Period (GOP)]</keyframe>
<start>[Start From]</start>
<duration>[Result Duration]</duration>
<output>mpeg2</output>
<keyframe>[12|15|25|30]</keyframe>
<bframes>[2|0]</bframes>
<gop>[cgop|sgop]</gop>
<output>[PRESET_NAME]</output>
<!-- Metadata fields (OPTIONAL) -->
<metadata>
<title>[Title]</title>
<copyright>[Copyright]</copyright>
<author>[Author]</author>
<description>[Description]</description>
<album>[Album]</album> </metadata>
<!-- Destination fields -->
<destination>[DestFile]</destination>
<destination>[DestFile2]</destination>
...
<destination>[DestFileN]</destination>
<!-- Logo fields (OPTIONAL) -->
<logo>
<logo_source>[LogoURL]</logo_source>
<logo_x>[LogoLeft]</logo_x>
<logo_y>[LogoTop]</logo_y>
<logo_mode>[LogoMode]</logo_mode>
<logo_threshold>[LogoTreshold]</logo_threshold>
<logo_transparent>[LogoTransparent]</logo_transparent>
</logo>
<!-- Video codec parameters (OPTIONAL, while only for libx264 video codec) -->
<video_codec_parameters> To see the example for parameters please follow this link below
* </video_codec_parameters>
<!-- Profile & Level (OPTIONAL, while only for libx264 video codec) -->
<profile>[high/main/baseline]</profile>
<level>[11/30/51]</level><!--drop the decimal, example 3.0 is 30-->
<!-- Turbo Encoding switch (OPTIONAL) -->
<turbo>[yes/no]</turbo> <!-- Video rotation (OPTIONAL) -->
<rotate>def|0|90|270</rotate>
</format>
</query>
<-- Hide
How can I request a thumbnail via API?
If you wish to request thumbnails via API, you've got a couple options:
1) You can request the thumbnail via timestamp (in seconds or percentage rate)
2) Want to request thumbnails at specific intervals? Use !5, for example, to request thumbnails at 5 second intervals
Please note:
If you wish to request thumbnails via API, you've got a couple options:
1) You can request the thumbnail via timestamp (in seconds or percentage rate)
2) Want to request thumbnails at specific intervals? Use !5, for example, to request thumbnails at 5 second intervals
Please note:
Can I pull video from one file and audio from another?
We now have an mpeg-2 muxing feature that takes two source files and outputs a DVD format mpeg-2 file (PAL or NTSC)
Here's a snippet of the XML you would use:
<?xml version="1.0"?>
<query>
<action>AddMedia</action>
<userid/>
<userkey/>
<source>[Video source]</source>
<source>[Audio source]</source>
<format>
<output>muxer</output>
<target>ntsc-dvd</target> <!---or pal-dvd---!>
<maps>0:0,1:0</maps>
</format>
</query>
Unfortunately, we do not currently support muxing
More -->We now have an mpeg-2 muxing feature that takes two source files and outputs a DVD format mpeg-2 file (PAL or NTSC)
Here's a snippet of the XML you would use:
<?xml version="1.0"?>
<query>
<action>AddMedia</action>
<userid/>
<userkey/>
<source>[Video source]</source>
<source>[Audio source]</source>
<format>
<output>muxer</output>
<target>ntsc-dvd</target> <!---or pal-dvd---!>
<maps>0:0,1:0</maps>
</format>
</query>
Unfortunately, we do not currently support muxing to mpeg-4 output. We also do not support start/duration flags for multiple sources during a concatenation encode, and have no plans to do so.
<-- HideHow can I create multiple output files with your API?
Need to create several flavours of the same file? Not a problem. Upload your main source clip via API, and within the same call, just add in another <format> tag. The best part about this workflow is that you don't have to upload the same source media clip twice, allowing you to cost effectively encode your content.
In lieu
More -->Need to create several flavours of the same file? Not a problem. Upload your main source clip via API, and within the same call, just add in another <format> tag. The best part about this workflow is that you don't have to upload the same source media clip twice, allowing you to cost effectively encode your content.
In lieu of making things simple to understand, we left out the body of the format tags and illustrated how to call for multiple format requests:
<?xml version="1.0"?> <query> <!-- Main fields --> <userid>[UserID]</userid> <userkey>[UserKey]</userkey> <action>[Action]</action> <source>[SourceFile]</source> <notify>[NotifyURL]</notify> <!-- Format fields --> <format> <!--add 1st encode request here, please refer to docs for more info on format tags> </format> <format> <!--add 2nd encode request here> </format> </query>
Complete API documentation here: http://www.encoding.com/api/category/category/complete_api_documentation
<-- HideHow can I view sub accounts in the web UI?
You're an API user, you're even a sub account user. You want to view sub accounts in our UI --> Right?
At the moment, Encoding.com only supports usage of the API to gather information back about sub user info. This link: http://www.encoding.com/api/category/category/sub_account_api_documentation will give you all the documentation on how to create, track, delete and account for all
More -->You're an API user, you're even a sub account user. You want to view sub accounts in our UI --> Right?
At the moment, Encoding.com only supports usage of the API to gather information back about sub user info. This link: http://www.encoding.com/api/category/category/sub_account_api_documentation will give you all the documentation on how to create, track, delete and account for all your sub-accounts.
<-- Hide
Can I use custom presets that I created in the web UI in my API calls?
Sure you can!
Call out the name of your custom preset as designated in the web UI, like this:
<output > [PRESET_NAME] </output >
Make sure that the API key and UID match the login that you used to create these in our web UI!
More -->Sure you can!
Call out the name of your custom preset as designated in the web UI, like this:
<output>[PRESET_NAME]</output>
Make sure that the API key and UID match the login that you used to create these in our web UI!
<-- HideHow do I encode and split longer videos into segments?
<?xml version="1.0"?>
<query>
<userid>xxx</userid>
<userkey>yyy</userkey>
<action>AddMediaBenchmark</action>
<source>http://domain.com/source/file/url</source>
</query>
<?xml version="1.0"?>More -->
<?xml version="1.0"?>
<query>
<userid>xxx</userid>
<userkey>yyy</userkey>
<action>AddMediaBenchmark</action>
<source>http://domain.com/source/file/url</source>
</query>
<?xml version="1.0"?>
<query>
<userid>xxx</userid>
<userkey>yyy</userkey>
<action>GetMediaInfo</action>
<mediaid>3402153</mediaid>
</query>
<?xml version="1.0" ?>
<response>
<bitrate>518k</bitrate>
<duration>723.09</duration>
<audio_bitrate>256K</audio_bitrate>
<audio_duration>1253</audio_duration>
<video_duration>1253</video_duration>
<video_codec>mpeg2video</video_codec>
<frame_rate>29.97</frame_rate>
<size>320x240</size>
<video_bitrate>104857k</video_bitrate>
<pixel_aspect_ratio>1:1</pixel_aspect_ratio>
<display_aspect_ratio>4:3</display_aspect_ratio>
<audio_codec>mp2</audio_codec>
<audio_sample_rate>44100</audio_sample_rate>
<audio_channels>2</audio_channels>
<format>mpeg-ps</format>
<format_profile>Main@Main</format_profile>
<scan_type>Progressive</scan_type>
</response>
<?xml version="1.0"?>
<query>
<userid>xxx</userid>
<userkey>yyy</userkey>
<action>UpdateMedia</action>
<mediaid>3402153</mediaid>
<format>
<output>mp4</output>
<start>0</start>
<duration>600</duration>
</format>
<format>
<output>mp4</output>
<start>600</start>
<duration>600</duration>
</format>
<format>
<output>mp4</output>
<start>1200</start>
<duration>53</duration>
</format>
</query>
<-- Hide
Can I submit a PDF via API as a source file for image conversion?
<?xml version="1.0"?> <query> <action>AddMedia</action> <userid> <userkey/> <source> <notify> <format> <output>image</output> <image_format>jpg</image_format> <size>800x0</size> <keep_aspect_ratio>yes</keep_aspect_ratio> <resize_method>resize</resize_method> <quality>80</quality> <sharpen_sigma>0.5</sharpen_sigma> </format> </query>
<?xml version="1.0"?> <query> <action>AddMedia</action> <userid> <userkey/> <source> <notify> <format> <output>image</output> <image_format>jpg</image_format> <size>800x0</size> <keep_aspect_ratio>yes</keep_aspect_ratio> <resize_method>resize</resize_method> <quality>80</quality> <sharpen_sigma>0.5</sharpen_sigma> </format> </query>
<-- Hide
How many outputs can I make per API Call?
You can create as many outputs per call with our powerful API. Keep in mind that you will be tied to the amount of calls per second, you can make, with your SLA on your type of account.
You can create as many outputs per call with our powerful API. Keep in mind that you will be tied to the amount of calls per second, you can make, with your SLA on your type of account.
<-- Hide
What frame type options does the API offer?
The x264 Project has lead the way on H.264 development by introducing many key features. Variance Adaptive Quantization (VAQ) and Rate–Distortion Optimization (RDO) attempt to preserve video quality and motion estimation against the amount of data required to encode the video. Advanced controls include options for GOP structure, keyframing, scene detection, macroblocking, and interframe quantization. Many of
More -->The x264 Project has lead the way on H.264 development by introducing many key features. Variance Adaptive Quantization (VAQ) and Rate–Distortion Optimization (RDO) attempt to preserve video quality and motion estimation against the amount of data required to encode the video. Advanced controls include options for GOP structure, keyframing, scene detection, macroblocking, and interframe quantization. Many of these features are discussed in depth on the x264 forums. A list of the x264 flags available to our API follows:
Frame-type options:
Ratecontrol:
Analysis:
How do I only encode a portion of a video or clip out a portion of a video I submit?
To get only certain portions of your video encoded you should use either
The <start> tag may have a value in seconds from 0 up to the source media duration.
The <duration> tag should be not greater than the source duration less the start value.
For example, if the source video
To get only certain portions of your video encoded you should use either
The <start> tag may have a value in seconds from 0 up to the source media duration.
The <duration> tag should be not greater than the source duration less the start value.
For example, if the source video is 20 seconds and you need only last 10 seconds, use:
<start>10</start> <duration>10</duration>
How do I add and customize intervals of keyframes via API?
The default value for keyframe interval set by the optional format field <keyframe> is 300, i.e. keyframe is added every 300 frames. For a framerate of 30fps this would equal 10 secs. But for 15fps (most often used for FLV) it would be 20 seconds, which may be too often. To change this value, simply use the <keyframe> parameter within
More -->
The default value for keyframe interval set by the optional format field <keyframe> is 300, i.e. keyframe is added every 300 frames. For a framerate of 30fps this would equal 10 secs. But for 15fps (most often used for FLV) it would be 20 seconds, which may be too often. To change this value, simply use the <keyframe> parameter within the <format> element. For example, setting the value to 30 will allow to seek the video for every 2 seconds, assuming framerate 15 fps.
About Keyframes: Because video compression only stores incremental changes between frames (except for key frames), it is not possible to fast forward or rewind to any arbitrary spot in the video stream. That is because the data for a given frame only represents how that frame was different from the preceding frame. For that reason it is beneficial to include key frames at arbitrary intervals while encoding video. For example, a key frame may be output once for each 10 seconds of video, even though the video image does not change enough visually to warrant the automatic creation of the key frame. That would allow seeking within the video stream at a minimum of 10 second intervals. The down side is that the resulting video stream will be larger in size because many key frames were added when they were not necessary for the visual representation of the frame. http://en.wikipedia.org/wiki/Key_frame
What happens after I use the AddMediaBenchmark call via API?
If you added your media using AddMediaBenchmark API call and if you also specified <notify> parameter, you will receive a notification when the media has been downloaded and ready for further processing. Note that you must specify at least one <format> for this media in order it gets the 'Ready to process' status and you actually receive a notification.
More -->If you added your media using AddMediaBenchmark API call and if you also specified <notify> parameter, you will receive a notification when the media has been downloaded and ready for further processing. Note that you must specify at least one <format> for this media in order it gets the 'Ready to process' status and you actually receive a notification.
<-- HideHow do I use CBR instead of VBR in your platform?
Occasionally compression requirements dictate that you use a Constant Bit Rate (CBR) instead of a Variable Bit Rate (VBR). This is especially helpful for video streaming. In our encoding platform, VBR is the default setting for Encoding.com since it generally provides much higher quality. For scenes where there is a high amount of action or detail, VBR will
More -->Occasionally compression requirements dictate that you use a Constant Bit Rate (CBR) instead of a Variable Bit Rate (VBR). This is especially helpful for video streaming. In our encoding platform, VBR is the default setting for Encoding.com since it generally provides much higher quality. For scenes where there is a high amount of action or detail, VBR will often spike up to 300% of the target bitrate. The reverse is also true, VBR will dramatically pull back on scenes with low detail.
Why would you use CBR?
CBR is far more constrained, with the actual bitrate only floating about 20% above and below the target. Some video playback devices have cheaper "chips", hardware decoders with limited buffer that are unable to handle VBR. With MPEG-4 being built into most modern chipsets, this issue is largely going away. CBR is also often used in satellite television broadcasts, where many channels will be multiplexed into one transport stream with limited bandwidth.
Sample API tags for CBR:
|
<format> <cbr>yes</cbr> <bitrate>768k</bitrate> </format> |
If you wish to check your encodes, Winhoros Bitrate Viewer is a great way to scan your files and quickly get detailed bitrate information.

If you are having problems getting the bitrate you need, try using a lower value in the bitrate tag. If that doesn't work, please submit a support ticket with the Media ID # of the job.
<-- HideHow do I get back source media properties via API?
You can get your source media's properties by sending GetMediaInfo API request.
This information will become available after the following events have occurred:
1) Just after the media has been Downloaded - if you specified HTTP or (S)FTP as your source location, and also if you specified S3 source location AND the media was added with AddMediaBenchmark call.
More -->You can get your source media's properties by sending GetMediaInfo API request.
This information will become available after the following events have occurred:
1) Just after the media has been Downloaded - if you specified HTTP or (S)FTP as your source location, and also if you specified S3 source location AND the media was added with AddMediaBenchmark call.
2) Few seconds after the media started being processed, if the media is located on S3 and was added using AddMedia call.
The following properties could be returned (if available):
bitrate - the file's summary bitrate.
duration - media's duration in seconds
video_codec - video codec
frame_rate - video frame rate in fps
audio_sample_rate - audio sampling rate, in Hz
size - video dimensions Width x Height, in pixels
pixel_aspect_ratio, display_aspect_ratio - usually 4:3 or 16:9, if set
What additional controls are available for VBR settings through the API?
When you're using our powerful API to control the VBR settings of your encode, there's a few additional options that you can supply to control the settings. There are a few things to consider:
---> - Bufsize: (Rate control buffer size) You always MUST specify it when setting minrate and/or maxrate. A buffer with that size will be used to
When you're using our powerful API to control the VBR settings of your encode, there's a few additional options that you can supply to control the settings. There are a few things to consider:
---> - Bufsize: (Rate control buffer size) You always MUST specify it when setting minrate and/or maxrate. A buffer with that size will be used to calculate current bitrate.
bufsize [optional] - Rate control buffer size (bits).
Allowed values: N or Nk - where N is any non-zero integer.
Default: None
--> - Minrate and Maxrate : These items limit the bitrate of the encoded video must not drop below or exceed.
maxrate [optional] - Maximum allowed video bitrate.
Allowed values: N or Nk - where N is any non-zero integer.
Default: None
minrate [optional] - Minimum allowed video bitrate.
Allowed values: N or Nk - where N is any non-zero integer.
Default: None
--> - Rc_init_occupancy: The initial rate control buffer occupancy (number of bits which should be loaded into the RC buffer before decoding starts).
rc_init_occupancy [optional] - Initial rate control buffer occupancy (bits).
Allowed values: N or Nk - where N is any non-zero integer.
Default: None
Do you have any advanced configuration options for the ibx264 video codec?
This guide maps most of x264's options to FFmpeg's options along with detailed descriptions by x264 developer Dark_Shikari. FFmpeg developer superdump has implemented x264 presets to FFmpeg. You can find his guide here.
Frame-type options:
g <integer>
Keyframe interval, also known as GOP length. This determines the maximum distance between I-frames. Very high GOP lengths
This guide maps most of x264's options to FFmpeg's options along with detailed descriptions by x264 developer Dark_Shikari. FFmpeg developer superdump has implemented x264 presets to FFmpeg. You can find his guide here.
Frame-type options:
g <integer>
Keyframe interval, also known as GOP length. This determines the maximum distance between I-frames. Very high GOP lengths will result in slightly more efficient compression, but will make seeking in the video somewhat more difficult. Recommended default: 250
keyint_min <integer>
Minimum GOP length, the minimum distance between I-frames. Recommended default: 25
sc_threshold <integer>
Adjusts the sensitivity of x264's scenecut detection. Rarely needs to be adjusted. Recommended default: 40
bf <integer>
B-frames are a core element of H.264 and are more efficient in H.264 than any previous standard. Some specific targets, such as HD-DVD and Blu-Ray, have limitations on the number of consecutive B-frames. Most, however, do not; as a result, there is rarely any negative effect to setting this to the maximum (16) since x264 will, if B-adapt is used, automatically choose the best number of B-frames anyways. This parameter simply serves to limit the max number of B-frames. Note that Baseline Profile, such as that used by iPods, does not support B-frames. Recommended default: 16
0: Very fast, but not recommended. Does not work with pre-scenecut (scenecut must be off to force off b-adapt).
1: Fast, default mode in x264. A good balance between speed and quality.
2: A much slower but more accurate B-frame decision mode that correctly detects fades and generally gives considerably better quality. Its speed gets considerably slower at high bframes values, so its recommended to keep bframes relatively low (perhaps around 3) when using this option. It also may slow down the first pass of x264 when in threaded mode.
b_strategy <integer>
x264, by default, adaptively decides through a low-resolution lookahead the best number of B-frames to use. It is possible to disable this adaptivity; this is not recommended. Recommended default: 1
bframebias
Make x264 more likely to choose higher numbers of B-frames during the adaptive lookahead. Not generally recommended. Recommended default: 0
flags2 +bpyramid
Allows B-frames to be kept as references. The name is technically misleading, as x264 does not actually use pyramid coding; it simply adds B-references to the normal reference list. B-references get a quantizer halfway between that of a B-frame and P-frame. This setting is generally beneficial, but it increases the DPB (decoding picture buffer) size required for playback, so when encoding for hardware, disabling it may help compatibility.
coder
CABAC is the default entropy encoder used by x264. Though somewhat slower on both the decoding and encoding end, it offers 10-15% improved compression on live-action sources and considerably higher improvements on animated sources, especially at low bitrates. It is also required for the use of trellis quantization. Disabling CABAC may somewhat improve decoding performance, especially at high bitrates. CABAC is not allowed in Baseline Profile. Recommended default: -coder 1 (CABAC enabled)
refs <integer>
One of H.264's most useful features is the ability to reference frames other than the one immediately prior to the current frame. This parameter lets one specify how many references can be used, through a maximum of 16. Increasing the number of refs increases the DPB (Decoded Picture Buffer) requirement, which means hardware playback devices will often have strict limits to the number of refs they can handle. In live-action sources, more reference have limited use beyond 4-8, but in cartoon sources up to the maximum value of 16 is often useful. More reference frames require more processing power because every frame is searched by the motion search (except when an early skip decision is made). The slowdown is especially apparent with slower motion estimation methods. Recommended default: -refs 6
flags
Disable loop filter. Recommended default: -flags +loop (Enabled)
deblockalpha <integer>
deblockbeta <integer>
One of H.264's main features is the in-loop deblocker, which avoids the problem of blocking artifacts disrupting motion estimation. This requires a small amount of decoding CPU, but considerably increases quality in nearly all cases. Its strength may be raised or lowered in order to avoid more artifacts or keep more detail, respectively. Deblock has two parameters: alpha (strength) and beta (threshold). Recommended defaults:-deblockalpha 0 -deblockbeta 0 (Must have '-flags +loop')
Ratecontrol:
cqp <integer>
Constant quantizer mode. Not exactly constant completely--B-frames and I-frames have different quantizers from P-frames. Generally should not be used, since CRF gives better quality at the same bitrate. b <integer>
Enables target bitrate mode. Attempts to reach a specific bitrate. Should be used in 2-pass mode whenever possible; 1-pass bitrate mode is generally the worst ratecontrol mode x264 has.
crf <float>
Constant quality mode (also known as constant ratefactor). Bitrate corresponds approximately to that of constant quantizer, but gives better quality overall at little speed cost. The best one-pass option in x264.
maxrate <integer>
Specifies the maximum bitrate at any point in the video. Requires the VBV buffersize to be set. This option is generally used when encoding for a piece of hardware with bitrate limitations.
bufsize <integer>
Depends on the profile level of the video being encoded. Set only if you're encoding for a hardware device.
rc_init_occupancy <float>
Initial VBV buffer occupancy. Note: Don't mess with this.
qmin <integer>
Minimum quantizer. Doesn't need to be changed. Recommended default: -qmin 10
qmax <integer>
Maximum quantizer. Doesn't need to be changed. Recommended default: -qmax 51
qdiff <integer>
Set max QP step. Recommended default: -qdiff 4
bt <float>
Allowed variance of average bitrate
i_qfactor <float>
Qscale difference between I-frames and P-frames. Note: -i_qfactor is handled a little differently than --ipratio. Recommended: -i_qfactor 0.71
b_qfactor <float>
Qscale difference between P-frames and B-frames.
chromaoffset <integer>
QP difference between chroma and luma.
pass <1,2,3>
Used with --bitrate. Pass 1 writes the stats file, pass 2 reads it, and 3 both reads and writes it. If you want to use three pass, this means you will have to use --pass 1 for the first pass, --pass 3 for the second, and --pass 2 or 3 for the third.
rc_eq <string>
Ratecontrol equation. Recommended default: -rc_eq 'blurCplx^(1-qComp)'
qcomp <float>
QP curve compression: 0.0 => CBR, 1.0 => CQP. Recommended default: -qcomp 0.60
complexityblur <float>
Reduce fluctuations in QP (before curve compression) [20.0]
qblur <float>
Reduce fluctuations in QP (after curve compression) [0.5]
partitions <string>
One of H.264's most useful features is the ability to choose among many combinations of inter and intra partitions. P-macroblocks can be subdivided into 16x8, 8x16, 8x8, 4x8, 8x4, and 4x4 partitions. B-macroblocks can be divided into 16x8, 8x16, and 8x8 partitions. I-macroblocks can be divided into 4x4 or 8x8 partitions. Analyzing more partition options improves quality at the cost of speed. The default is to analyze all partitions except p4x4 (p8x8, i8x8, i4x4, b8x8), since p4x4 is not particularly useful except at high bitrates and lower resolutions. Note that i8x8 requires 8x8dct, and is therefore a High Profile-only partition. p8x8 is the most costly, speed-wise, of the partitions, but also gives the most benefit. Generally, whenever possible, all partition types except p4x4 should be used.
p8x8 (x264) /+partp8x8 (FFmpeg)
p4x4 (x264) /+partp4x4 (FFmpeg)
b8x8 (x264) /+partb8x8 (FFmpeg)
i8x8 (x264) /+parti8x8 (FFmpeg)
i4x4 (x264) /+parti4x4 (FFmpeg)
directpred <integer>
B-frames in H.264 can choose between spatial and temporal prediction mode. Auto allows x264 to pick the best of these; the heuristic used is whichever mode allows more skip macroblocks. Auto should generally be used.
Motion Prediction:
flags2 +wpred
This allows B-frames to use weighted prediction options other than the default. There is no real speed cost for this, so it should always be enabled.
dia (x264) / epzs (FFmpeg) is the simplest search, consisting of starting at the best predictor, checking the motion vectors at one pixel upwards, left, down, and to the right, picking the best, and repeating the process until it no longer finds any better motion vector.
hex (x264) / hex (FFmpeg) consists of a similar strategy, except it uses a range-2 search of 6 surrounding points, thus the name. It is considerably more efficient than DIA and hardly any slower, and therefore makes a good choice for general-use encoding.
umh (x264) / umh (FFmpeg) is considerably slower than HEX, but searches a complex multi-hexagon pattern in order to avoid missing harder-to-find motion vectors. Unlike HEX and DIA, the merange parameter directly controls UMH's search radius, allowing one to increase or decrease the size of the wide search.
esa (x264) / full (FFmpeg) is a highly optimized intelligent search of the entire motion search space within merange of the best predictor. It is mathematically equivalent to the bruteforce method of searching every single motion vector in that area, though faster. However, it is still considerably slower than UMH, with not too much benefit, so is not particularly useful for everyday encoding.
me_method <epzs,hex,umh,full>
One of the most important settings for x264, both speed and quality-wise.
me_range <integer>
MErange controls the max range of the motion search. For HEX and DIA, this is clamped to between 4 and 16, with a default of 16. For UMH and ESA, it can be increased beyond the default 16 to allow for a wider-range motion search, which is useful on HD footage and for high-motion footage. Note that for UMH and ESA, increasing MErange will significantly slow down encoding.
1: Fastest, but extremely low quality. Should be avoided except on first pass encoding.
6-7: 6 is the default. Activates rate-distortion optimization for partition decision. This can considerably improve efficiency, though it has a notable speed cost. 6 activates it in I/P frames, and subme7 activates it in B frames.
8-9: Activates rate-distortion refinement, which uses RDO to refine both motion vectors and intra prediction modes. Slower than subme 6, but again, more efficient.
subq
An extremely important encoding parameter which determines what algorithms are used for both subpixel motion searching and partition decision.
flags2 +mixed_refs
H.264 allows p8x8 blocks to select different references for each p8x8 block. This option allows this analysis to be done, and boosts quality with little speed impact. It should generally be used, though it obviously has no effect with only one reference frame.
flags2 +dct8x8
Gives a notable quality boost by allowing x264 to choose between 8x8 and 4x4 frequency transform size. Required for i8x8 partitions. Speed cost for this option is near-zero both for encoding and decoding; the only reason to disable it is when one needs support on a device not compatible with High Profile.
0: disabled
1: enabled only on the final encode of a MB
2: enabled on all mode decisions
trellis <0,1,2>
The main decision made in quantization is which coefficients to round up and which to round down. Trellis chooses the optimal rounding choices for the maximum rate-distortion score, to maximize PSNR relative to bitrate. This generally increases quality relative to bitrate by about 5% for a somewhat small speed cost. It should generally be enabled. Note that trellis requires CABAC.
flags2 -fastpskip
By default, x264 will skip macroblocks in P-frames that don't appear to have changed enough between two frames to justify encoding the difference. This considerably speeds up encoding. However, for a slight quality boost, P-skip can be disabled. In this case, the full analysis will be done on all P-blocks, and the only skips in the output stream will be the blocks whose motion vectors happen to match that of the skip vector and motion vectors happen to match that of the skip vector and which have no residual. The speed cost of enabling no-fast-pskip is relatively high, especially with many reference frames. There is a similar B-skip internal to x264, which is why B-frames generally encode much faster than P-frames, but it cannot be disabled on the commandline.
How could I receive real time status updates for my encoding tasks?
If you're wishing to obtain more information about the jobs that you have submitted to our encoding platform, please take a look at the follow calls:
- progress
- progress_current
- time_left
- time_left_current
These flags are pulled from the main XML file as indicated below:
<?xml version="1.0"?> <response> <id>[MediaID]</id> <userid>[UserID]</userid> <sourcefile>[SourceFile]</sourcefile> <status>[MediaStatus]</status> <notifyurl>[NotifyURL]</notifyurl> <created>[Date]</created> <started>[Date]</started> <finished>[Date]</finished> <prevstatus>[MediaStatus]</prevstatus> <downloaded>[Date]</downloaded> <uploaded>[Date]</uploaded> <time_left>[TotalTimeLeft]</time_left> <progress>[TotalProgress]</progress> <time_left_current>[StatusTimeLeft]</time_left_current> <progress_current>[StatusProgress]</progress_current> <format> <id>[ID]</id> <status>[Status]</status> <created>[Date]</created> <started>[Date]</started> <finished>[Date]</finished> <!-- [FormatFields] --> <s3_destination>[TempS3Link]</s3_destination><!-- optionalMore -->
If you're wishing to obtain more information about the jobs that you have submitted to our encoding platform, please take a look at the follow calls:
- progress
- progress_current
- time_left
- time_left_current
These flags are pulled from the main XML file as indicated below:
<?xml version="1.0"?> <response> <id>[MediaID]</id> <userid>[UserID]</userid> <sourcefile>[SourceFile]</sourcefile> <status>[MediaStatus]</status> <notifyurl>[NotifyURL]</notifyurl> <created>[Date]</created> <started>[Date]</started> <finished>[Date]</finished> <prevstatus>[MediaStatus]</prevstatus> <downloaded>[Date]</downloaded> <uploaded>[Date]</uploaded> <time_left>[TotalTimeLeft]</time_left> <progress>[TotalProgress]</progress> <time_left_current>[StatusTimeLeft]</time_left_current> <progress_current>[StatusProgress]</progress_current> <format> <id>[ID]</id> <status>[Status]</status> <created>[Date]</created> <started>[Date]</started> <finished>[Date]</finished> <!-- [FormatFields] --> <s3_destination>[TempS3Link]</s3_destination><!-- optional --> <cf_destination>[TempCFLink]</cf_destination><!-- optional --> </format>
TotalTimeLeft is an estimated time until the media processing would be finished
StatusTimeLeft is an estimated time left for the media's current status
TotalProgress is an estimated progress for entire media processing (in percent)
StatusProgress is an estimated progress for the media's current status (in percent)
<-- Hide
I want to make thumbnails from my clips, but I don’t always know the length. What can I do?
So you want to make thumbnails from your clips, but you don't know the length, use the following:
Instead of <time>20</time> --> use a percentage-based value: <time>20%</time>.
So you want to make thumbnails from your clips, but you don't know the length, use the following:
Instead of <time>20</time> --> use a percentage-based value: <time>20%</time>.
<-- Hide











