QuickTime
QuickTime is an extensible multimedia framework developed by Apple Inc., capable of handling various formats of digital video, picture, sound, panoramic images, and interactivity. Created in 1991, the latest Mac version, QuickTime X, is available for Mac OS X Snow Leopard up to macOS Mojave. Apple ceased support for the Windows version of QuickTime in 2016, and ceased support for QuickTime 7 on macOS in 2018. As of Mac OS X Lion, the underlying media framework for QuickTime, QTKit, was deprecated in favor of a newer graphics framework, AVFoundation, and completely discontinued as of macOS Catalina. Overview. QuickTime is  bundled with macOS. QuickTime for Microsoft Windows is downloadable as a standalone installation, and was bundled with Apple's iTunes prior to iTunes 10.5, but is no longer supported and therefore security vulnerabilities will no longer be patched. Already, at the time of the Windows version's discontinuation, two such zero-day vulnerabilities (both of which permitted arbitrary code execution) were identified and publicly disclosed by Trend Micro; consequently, Trend Micro strongly advised users to uninstall the product from Windows systems. Software development kits (SDK) for QuickTime are available to the public with an Apple Developer Connection (ADC) subscription. It  is available free of charge for both macOS and Windows operating systems. There are some other free player applications that rely on the QuickTime framework, providing features not available in the basic QuickTime Player. For example, iTunes can export audio in WAV, AIFF, MP3, AAC, and Apple Lossless. In addition, macOS has a simple AppleScript that can be used to play a movie in full-screen mode, but since version 7.2 full-screen viewing is now supported in the non-Pro version. QuickTime Pro. QuickTime Player 7 is limited to only basic playback operations unless a QuickTime Pro license key  is purchased from Apple. Until Catalina, Apple's professional applications (e.g. Final Cut Studio, Logic Studio) included a QuickTime Pro license. Pro keys are specific to the major version of QuickTime for which they are purchased and unlock additional features of the QuickTime Player application on macOS or Windows. The Pro key does not require any additional downloads; entering the registration code immediately unlocks the hidden features. QuickTime 7 is still available for download from Apple, but as of mid-2016, Apple stopped selling registration keys for the Pro version. Features enabled by the Pro license include, but are not limited  to: Mac OS X Snow Leopard includes QuickTime X. QuickTime Player X lacks cut, copy and paste and will only export to four formats, but its limited export feature is free. Users do not have an option to upgrade to a Pro version of QuickTime X, but those who have already purchased QuickTime 7 Pro and are upgrading to Snow Leopard from a previous version of Mac OS X will have QuickTime 7 stored in the Utilities or user defined folder. Otherwise, users will have to install QuickTime 7 from the "Optional Installs" directory of the Snow Leopard DVD after  installing the OS. Mac OS X Lion and later also include QuickTime X. No installer for QuickTime 7 is included with these software packages, but users can download the QuickTime 7 installer from the Apple support site. QuickTime X on later versions of macOS support cut, copy and paste functions similarly to the way QuickTime 7 Pro did; the interface has been significantly modified to simplify these operations, however. On September 24, 2018, Apple ended support for QuickTime 7 and QuickTime Pro, and updated many download and support pages on their website to state that QuickTime 7 "will not be  compatible with future macOS releases." QuickTime framework. The QuickTime framework provides the following: As of early 2008, the framework hides many older codecs listed below from the user although the option to "Show legacy encoders" exists in QuickTime Preferences to use them. The framework supports the following file types and codecs natively: Due to macOS Mojave being the last version to include support for 32-bit APIs and Apple's plans to drop 32-bit application support in future macOS releases, many codecs will no longer be supported in newer macOS releases, starting with macOS Catalina, which was released on  October 7, 2019. PictureViewer. PictureViewer is a component of QuickTime for Microsoft Windows and the Mac OS 8 and Mac OS 9 operating systems. It is used to view picture files from the still image formats that QuickTime supports. In macOS, it is replaced by Preview. As of version 7.7.9, the Windows version requires one to go to their "Windows Uninstall Or Change A Program" screen to "modify" their installation of QuickTime 7 to include the "Legacy QuickTime Feature" of "QuickTime PictureViewer." File formats. The native file format for QuickTime video, QuickTime File Format, specifies a multimedia container file that  contains one or more tracks, each of which stores a particular type of data: audio, video, effects, or text (e.g. for subtitles). Each track either contains a digitally encoded media stream (using a specific format) or a data reference to the media stream located in another file. The ability to contain abstract data references for the media data, and the separation of the media data from the media offsets and the track edit lists means that QuickTime is particularly suited for editing, as it is capable of importing and editing in place (without data copying). Other file formats that QuickTime  supports natively (to varying degrees) include AIFF, WAV, DV-DIF, MP3, and MPEG program stream. With additional QuickTime Components, it can also support ASF, DivX Media Format, Flash Video, Matroska, Ogg, and many others. QuickTime and MPEG-4. On February 11, 1998, the ISO approved the QuickTime file format as the basis of the MPEG‑4 file format. The MPEG-4 file format specification was created on the basis of the QuickTime format specification published in 2001. The MP4 (codice_1) file format was published in 2001 as the revision of the MPEG-4 Part 1: Systems specification published in 1999 (ISO/IEC 14496-1:2001 ). In 2003, the first version of MP4 format was revised and replaced by MPEG-4 Part 14: MP4 file format (ISO/IEC 14496-14:2003). The MP4 file format was generalized into the ISO Base Media File Format ISO/IEC 14496-12:2004, which defines a general structure for time-based media files. It in turn is used as the basis for other multimedia file formats (for example 3GP, Motion JPEG 2000). A list of all registered extensions for ISO Base Media File Format is published on the official registration authority website www.mp4ra.org. This registration authority for code-points in "MP4 Family" files  is Apple Computer Inc. and it is named in Annex D (informative) in MPEG-4 Part 12. By 2000, MPEG-4 formats became industry standards, first appearing with support in QuickTime 6 in 2002. Accordingly, the MPEG-4 container is designed to capture, edit, archive, and distribute media, unlike the simple file-as-stream approach of MPEG-1 and MPEG-2. Profile support. QuickTime 6 added limited support for MPEG-4, specifically encoding and decoding using Simple Profile (SP). Advanced Simple Profile (ASP) features, like B-frames, were unsupported (in contrast with, for example, encoders such as XviD or 3ivx). QuickTime 7 supports the H.264 encoder  and decoder. Container benefits. Because both MOV and MP4 containers can use the same MPEG-4 codecs, they are mostly interchangeable in a QuickTime-only environment. MP4, being an international standard, has more support. This is especially true on hardware devices, such as the Sony PSP and various DVD players, on the software side, most DirectShow / Video for Windows codec packs include a MP4 parser, but not one for MOV. In QuickTime Pro's MPEG-4 Export dialog, an option called "Passthrough" allows a clean export to MP4 without affecting the audio or video streams. QuickTime 7 now supports multi-channel AAC -LC and HE-AAC audio (used, for example, in the high-definition trailers on Apple's site), for both .MOV and .MP4 containers. History. Apple released the first version of QuickTime on December 2, 1991 as a multimedia add-on for System 6 and later. The lead developer of QuickTime, Bruce Leak, ran the first public demonstration at the May 1991 Worldwide Developers Conference, where he played Apple's famous 1984 advertisement in a window at 320×240 pixels resolution. QuickTime 1.x. The original video codecs included: The first commercial project produced using QuickTime 1.0 was the CD-ROM From Alice  to Ocean. The first publicly visible use of QuickTime was Ben & Jerry's interactive factory tour (dubbed "The Rik & Joe Show" after its in-house developers). "The Rik and Joe Show" was demonstrated onstage at MacWorld in San Francisco when John Sculley announced QuickTime. Apple released QuickTime 1.5 for Mac OS in the latter part of 1992. This added the SuperMac-developed Cinepak vector-quantization video codec (initially known as Compact Video). It could play video at 320×240 resolution at 30 frames per second on a 25 MHz Motorola 68040 CPU. It also added "text" tracks, which allowed for captioning , lyrics and other potential uses. Apple contracted San Francisco Canyon Company to port QuickTime to the Windows platform. Version 1.0 of QuickTime for Windows provided only a subset of the full QuickTime API, including only movie playback functions driven through the standard movie controller. QuickTime 1.6 came out the following year. Version 1.6.2 first incorporated the "QuickTime PowerPlug" which replaced some components with PowerPC-native code when running on PowerPC Macs. QuickTime 2.x. Apple released QuickTime 2.0 for System Software 7 in June 1994—the only version never released for free. It added support for music tracks, which contained the  equivalent of MIDI data and which could drive a sound-synthesis engine built into QuickTime itself (using a limited set of instrument sounds licensed from Roland), or any external MIDI-compatible hardware, thereby producing sounds using only small amounts of movie data. Following Bruce Leak's departure to Web TV, the leadership of the QuickTime team was taken over by Peter Hoddie. QuickTime 2.0 for Windows appeared in November 1994 under the leadership of Paul Charlton. As part of the development effort for cross-platform QuickTime, Charlton (as architect and technical lead), along with ace individual contributor Michael Kellner and  a small highly effective team including Keith Gurganus, ported a subset of the Macintosh Toolbox to Intel and other platforms (notably, MIPS and SGI Unix variants) as the enabling infrastructure for the QuickTime Media Layer (QTML) which was first demonstrated at the Apple Worldwide Developers Conference (WWDC) in May 1996. The QTML later became the foundation for the Carbon API which allowed legacy Macintosh applications to run on the Darwin kernel in Mac OS X. The next versions, 2.1 and 2.5, reverted to the previous model of giving QuickTime away for free. They improved the music support and added sprite  tracks which allowed the creation of complex animations with the addition of little more than the static sprite images to the size of the movie. QuickTime 2.5 also fully integrated QuickTime VR 2.0.1 into QuickTime as a QuickTime extension. On January 16, 1997, Apple released the QuickTime MPEG Extension (PPC only) as an add-on to QuickTime 2.5, which added software MPEG-1 playback capabilities to QuickTime. Lawsuit against San Francisco Canyon. In 1994, Apple filed suit against software developer San Francisco Canyon for intellectual property infringement and breach of contract. Apple alleged that San Francisco Canyon had helped develop Video  for Windows using several hundred lines of unlicensed QuickTime source code. They were contracted by Intel to help make Video for Windows better use system resources on Intel processors, which was subsequently unilaterally removed. Microsoft and Intel were added to the lawsuit in 1995. The suit ended in a settlement in 1997. QuickTime 3.x. The release of QuickTime 3.0 for Mac OS on March 30, 1998 introduced the now-standard revenue model of releasing the software for free, but with additional features of the Apple-provided MoviePlayer application that end-users could only unlock by buying a QuickTime Pro license  code. Since the "Pro" features were the same as the existing features in QuickTime 2.5, any previous user of QuickTime could continue to use an older version of the central MoviePlayer application for the remaining lifespan of Mac OS to 2002; indeed, since these additional features were limited to MoviePlayer, any other QuickTime-compatible application remained unaffected. QuickTime 3.0 added support for graphics importer components that could read images from GIF, JPEG, TIFF and other file formats, and video output components which served primarily to export movie data via FireWire. Apple also licensed several third-party technologies for inclusion in  QuickTime 3.0, including the Sorenson Video codec for advanced video compression, the QDesign Music codec for substantial audio compression, and the complete Roland Sound Canvas instrument set and GS Format extensions for improved playback of MIDI music files. It also added video "effects" which programmers could apply in real-time to video tracks. Some of these effects would even respond to mouse clicks by the user, as part of the new movie interaction support (known as wired movies). QuickTime interactive. During the development cycle for QuickTime 3.0, part of the engineering team was working on a more advanced version of  QuickTime to be known as QuickTime interactive or QTi. Although similar in concept to the wired movies feature released as part of QuickTime 3.0, QuickTime interactive was much more ambitious. It allowed any QuickTime movie to be a fully interactive and programmable container for media. A special track type was added that contained an interpreter for a custom programming language based on 68000 assembly language. This supported a comprehensive user interaction model for mouse and keyboard event handling based in part on the AML language from the Apple Media Tool. The QuickTime interactive movie was to have been the playback  format for the next generation of HyperCard authoring tool. Both the QuickTime interactive and the HyperCard 3.0 projects were canceled in order to concentrate engineering resources on streaming support for QuickTime 4.0, and the projects were never released to the public. QuickTime 4.x. Apple released QuickTime 4.0 on June 8, 1999 for Mac OS 7.5.5 through 8.6 (later Mac OS 9) and Windows 95, Windows 98, and Windows NT. Three minor updates (versions 4.0.1, 4.0.2, and 4.0.3) followed. It introduced features that most users now consider basic: On December 17, 1999, Apple provided QuickTime 4.1, this version's first major  update. Two minor versions (4.1.1 and 4.1.2) followed. The most notable improvements in the 4.1.x family were: QuickTime 5.x. QuickTime 5 was one of the shortest-lived versions of QuickTime, released in April 2001 and superseded by QuickTime 6 a little over a year later. This version was the last to have greater capabilities under Mac OS 9 than under Mac OS X, and the last version of QuickTime to support Mac OS versions 7.5.5 through 8.5.1 on a PowerPC Mac and Windows 95. Version 5.0 was initially only released for Mac OS and Mac OS X on April 14 , 2001, and version 5.0.1 followed shortly thereafter on April 23, 2001, supporting the classic Mac OS, Mac OS X, and Windows. Three more updates to QuickTime 5 (versions 5.0.2, 5.0.4, and 5.0.5) were released over its short lifespan. QuickTime 5 delivered the following enhancements: QuickTime 6.x. On July 15, 2002, Apple released QuickTime 6.0, providing the following features: QuickTime 6 was initially available for Mac OS 8.6 – 9.x, Mac OS X (10.1.5 minimum), and Windows 98, Me, 2000, and XP. Development of QuickTime 6 for Mac OS slowed considerably in early 2003, after the release of Mac OS X v10.2  in August 2002. QuickTime 6 for Mac OS continued on the 6.0.x path, eventually stopping with version 6.0.3. QuickTime 6.1 & 6.1.1 for Mac OS X v10.1 and Mac OS X v10.2 (released October 22, 2002) and QuickTime 6.1 for Windows (released March 31, 2003) offered ISO-Compliant MPEG-4 file creation and fixed the CAN-2003-0168 vulnerability. Apple released QuickTime 6.2 exclusively for Mac OS X on April 29, 2003 to provide support for iTunes 4, which allowed AAC encoding for songs in the iTunes library. (iTunes was not available for Windows until October 2003.) On June 3, 2003, Apple released  QuickTime 6.3, delivering the following: QuickTime 6.4, released on October 16, 2003 for Mac OS X v10.2, Mac OS X v10.3, and Windows, added the following: On December 18, 2003, Apple released QuickTime 6.5, supporting the same systems as version 6.4. Versions 6.5.1 and 6.5.2 followed on April 28, 2004 and October 27, 2004. These versions would be the last to support Windows 98 and Me. The 6.5 family added the following features: QuickTime 6.5.3 was released on October 12, 2005 for Mac OS X v10.2.8 after the release of QuickTime 7.0, fixing a number of security issues. QuickTime 7.x . Initially released on April 29, 2005 in conjunction with Mac OS X v10.4 (for version 10.3.9 and 10.4.x), QuickTime 7.0 featured the following: After a couple of preview Windows releases, Apple released 7.0.2 as the first stable release on September 7, 2005 for Windows 2000 and Windows XP. Version 7.0.4, released on January 10, 2006 was the first universal binary version. But it suffered numerous bugs, including a buffer overrun, which is more problematic to most users. Apple dropped support for Windows 2000 with the release of QuickTime 7.2 on July 11, 2007. The last version available for Windows 2000 , 7.1.6, contains numerous security vulnerabilities. References to this version have been removed from the QuickTime site, but it can be downloaded from Apple's support section. Apple has not indicated that they will be providing any further security updates for older versions. QuickTime 7.2 is the first version for Windows Vista. Apple dropped support for Flash content in QuickTime 7.3, breaking content that relied on Flash for interactivity, or animation tracks. Security concerns seem to be part of the decision. Flash flv files can still be played in QuickTime if the free Perian plugin is added. In QuickTime 7.3, a  processor that supports SSE is required. QuickTime 7.4 does not require SSE. Unlike versions 7.2 and 7.3, QuickTime 7.4 cannot be installed on Windows XP without service packs or with Service Pack 1/1A installed (its setup program checks if Service Pack 2 is installed). QuickTime 7.5 was released on June 10, 2008. QuickTime 7.5.5 was released on September 9, 2008, which requires Mac OS X v10.4 or higher, dropping 10.3 support. QuickTime 7.6 was released on January 21, 2009. QuickTime 7.7 was released on August 3, 2011. QuickTime 7.6.6 is available for OS X, 10.6.3 Snow Leopard until 10.14  Mojave, as 10.15 Catalina will only support 64-bit applications. There is a 7.7 release of QuickTime 7 for OS X, but it is only for Leopard 10.5. QuickTime 7.7.6 is the last release for Windows XP. As it's since version 7.4, they can be installed here only when Service Pack 2 or 3 is installed. QuickTime 7.7.9 is the last Windows release of QuickTime. Apple stopped supporting QuickTime on Windows afterwards. Safari 12, released on September 17, 2018 for macOS Sierra and macOS High Sierra (and the default browser included on macOS Mojave released on September 24, 2018 ), which drops support for NPAPI plug-ins (except for Adobe Flash) dropped its support for QuickTime 7's web plugin. On September 24, 2018, Apple dropped support for the macOS version of QuickTime 7. This effectively marked the end of the technology in Apple's codec and web development. Starting with macOS Catalina, QuickTime 7 applications, image, audio and video codecs will no longer be compatible with macOS or supported by Apple. QuickTime X (QuickTime Player v10.x). QuickTime X (pronounced "QuickTime Ten") was initially demonstrated at WWDC on June 8, 2009, and shipped with Mac OS X v10.6. It includes  visual chapters, conversion, sharing to YouTube, video editing, capture of video and audio streams, screen recording, GPU acceleration, and live streaming. But it removed support for various widely used formats, in particular the omission of MIDI caused significant inconvenience and trouble to many musicians and their potential audiences. In addition, a screen recorder is featured which records whatever is on the screen. However it is not possible to capture certain Digital rights management protected content. This includes iTunes/Apple TV video purchases, or any content protected by Apple's FairPlay DRM technology. While Safari uses FairPlay, Google Chrome, and Firefox  use Widevine for DRM, whose content is not protected from QuickTime screen capturing. The reason for the jump in numbering from 7 to 10 (X) was to indicate a similar break with the previous versions of the product that Mac OS X indicated. QuickTime X is fundamentally different from previous versions, in that it is provided as a Cocoa (Objective-C) framework and breaks compatibility with the previous QuickTime 7 C-based APIs that were previously used. QuickTime X was completely rewritten to implement modern audio video codecs in 64-bit. QuickTime X is a combination of two technologies: QuickTime  Kit Framework (QTKit) and QuickTime X Player. QTKit is used by QuickTime player to display media. QuickTime X does not implement all of the functionality of the previous QuickTime as well as some of the codecs. When QuickTime X attempts to operate with a 32-bit codec or perform an operation not supported by QuickTime X, it will start a 32-bit helper process to perform the requested operation. The website "Ars Technica" revealed that QuickTime X uses QuickTime 7.x via QTKit to run older codecs that have not made the transition to 64-bit. QuickTime X does not support  .SRT subtitle files. It has been suggested using the program Subler to interleave the MP4 and SRT files will fix this oversight, which can be downloaded at Bitbucket. QuickTime 7 may still be required to support older formats on Snow Leopard such as QTVR, interactive QuickTime movies, and MIDI files. In such cases, a compatible version of QuickTime 7 is included on Snow Leopard installation disc and may be installed side-by-side with QuickTime X. Users who have a Pro license for QuickTime 7 can then activate their license. A Snow Leopard compatible version of QuickTime 7 may also  be downloaded from Apple Support website. The software got an increment with the release of Mavericks, and as of August 2018, the current version is v10.5. It contains more sharing options (email, YouTube, Facebook, Flickr etc.), more export options (including web export in multiple sizes, and export for iPhone 4/iPad/Apple TV (but not Apple TV 2). It also includes a new way of fast forwarding through a video and mouse support for scrolling. Starting with macOS Catalina, Apple only provides QuickTime X, as QuickTime 7 was never updated to 64-bit, affecting many applications, image, audio, and video  formats utilizing QuickTime 7, and compatibility with these codecs in QuickTime X. Creating software that uses QuickTime. QuickTime X. QuickTime X previously provided the QTKit Framework on Mac OS 10.6 until 10.14. Since the release of macOS 10.15, AVKit and AVFoundation are used instead (due to the removal of 32-bit audio and video codecs, as well as image formats and APIs supported by QuickTime 7). Previous versions. QuickTime consists of two major subsystems: the Movie Toolbox and the Image Compression Manager. The Movie Toolbox consists of a general API for handling time-based data, while the Image Compression Manager  provides services for dealing with compressed raster data as produced by video and photo codecs. Developers can use the QuickTime software development kit (SDK) to develop multimedia applications for Mac or Windows with the C programming language or with the Java programming language (see QuickTime for Java), or, under Windows, using COM/ActiveX from a language supporting this. The COM/ActiveX option was introduced as part of QuickTime 7 for Windows and is intended for programmers who want to build standalone Windows applications using high-level QuickTime movie playback and control with some import, export, and editing capabilities. This is  considerably easier than mastering the original QuickTime C API. QuickTime 7 for Mac introduced the QuickTime Kit (aka QTKit), a developer framework that is intended to replace previous APIs for Cocoa developers. This framework is for Mac only, and exists as Objective-C abstractions around a subset of the C interface. Mac OS X v10.5 extends QTKit to full 64-bit support. The QTKit allows multiplexing between QuickTime X and QuickTime 7 behind the scenes so that the user need not worry about which version of QuickTime they need to use. Bugs and vulnerabilities. QuickTime 7.4 was found to disable  Adobe's video compositing program, After Effects. This was due to the DRM built into version 7.4 since it allowed movie rentals from iTunes. QuickTime 7.4.1 resolved this issue. Versions 4.0 through 7.3 contained a buffer overflow bug which could compromise the security of a PC using either the QuickTime Streaming Media client, or the QuickTime player itself. The bug was fixed in version 7.3.1. QuickTime 7.5.5 and earlier are known to have a list of significant vulnerabilities that allow a remote attacker to execute arbitrary code or cause a denial of service (out-of-bounds memory access and application  crash) on a targeted system. The list includes six types of buffer overflow, data conversion, signed vs. unsigned integer mismatch, and uninitialized memory pointer. QuickTime 7.6 has been found to disable Mac users' ability to play certain games, such as "Civilization IV" and "The Sims 2". There are fixes available from the publisher, Aspyr. QuickTime 7 lacks support for H.264 Sample Aspect Ratio. QuickTime X does not have this limitation, but many Apple products (such as Apple TV) still use the older QuickTime 7 engine. iTunes previously utilized QuickTime 7, but as of October 2019, iTunes no longer utilizes the  older QuickTime 7 engine. QuickTime 7.7.x on Windows fails to encode H.264 on multi-core systems with more than approximately 20 threads, e.g. HP Z820 with 2× 8-core CPUs. A suggested solution is to disable hyper-threading/limit CPU cores. Encoding speed and stability depends on the scaling of the player window. On April 14, 2016, Christopher Budd of Trend Micro announced that Apple has ceased all security patching of QuickTime for Windows, and called attention to two Zero Day Initiative advisories, ZDI-16-241