Difference between revisions of "Video Codecs"
Wiki-admin (talk | contribs) |
|||
(78 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | We advise users to contact the Technical Support Group to discuss which codec and export settings are best suited for your video stimuli. This page functions only as reference. |
+ | |||
+ | For a guide on recording your screen, see [[Screen Recording with OBS]]. | ||
+ | |||
+ | == Information == | ||
+ | === Codecs === | ||
+ | To find out what video codecs are and why they are used, grab a cup of coffee (or other non-alcoholic beverage of choice) and reserve about 45 minutes of your life to watch this comprehensive video: [https://vimeo.com/104554788 How Codecs Work (Vimeo)]. | ||
+ | |||
+ | === Bitrate === | ||
+ | |||
+ | When compressing a video, you will be asked to enter a 'bitrate'. This is what determines how much information is stored for every second of video. The more information, the higher the quality of the video. The tradeoff is file size. The more information, the larger the file. So setting a bitrate is striking a balance between limiting the file size without losing too much quality. The smarter the compression format, the easier this is to achieve. | ||
+ | |||
+ | If you are using H.264 compression, you can calculate a ballpark estimate for your target bitrate using the Kush gauge, a helpful formula written by a guy named Kush: | ||
+ | Target Bitrate (kbps) = Frame Width (px) * Frame Height (px) * Frame Rate (fps) * Motion Factor * 0.07 / 1000 | ||
+ | "Motion Factor" is an arbitrary value (typically 1, 2 or 4) that you can assign to your video based on the amount of (fast) movement in the video. Higher amounts of movement require a higher amount of information to be stored in order to prevent quality loss. | ||
+ | Example calculation for a typical 720p video: | ||
+ | 1280 * 720 * 25 * 2 * 0.07 / 1000 = 3225.6 kbps (= 3.2 Mbps) | ||
+ | |||
+ | Bitrate can be set to Constant (CBR) or Variable (VBR). A variable bitrate can help decreasing file size when your video has a combination of high and low amounts of movement, as it will optimize the distribution of information storage for those parts in your video. The downside is that your video player has to sometimes suddenly decode a lot more information than the previous frame, potentially causing laggy playback. For this reason, we advise using a constant bitrate. | ||
+ | |||
+ | === HEVC === | ||
+ | High Efficiency Video Coding (HEVC, also known as H.265) is the successor to H.264. Together with AVC, VP9 and AV1, it is one of the latest standards that yield significantly better compression rates than H.264. However, support is still far from universal and you may experience performance issues in some programs or on some devices. Therefore, we do not advise storing your videos in these formats unless it is for archival purposes only. | ||
+ | |||
+ | == Software support == | ||
{| class="wikitable" | {| class="wikitable" | ||
+ | |- | ||
+ | ! scope="row" | | ||
+ | ! scope="row" colspan="3" | Recommended formats | ||
+ | ! scope="row" colspan="2" | Non-Recommended formats | ||
|- | |- | ||
− | | | + | | Codec |
− | + | | style="text-align: center;" | VP8/VP9 | |
− | + | | style="text-align: center;" | Theora | |
+ | | style="text-align: center;" colspan="2" | H.264 | ||
+ | | style="text-align: center;" | XVID | ||
|- | |- | ||
| Container | | Container | ||
− | + | | .webm .mkv | |
− | + | | .ogv .ogg | |
+ | | .mp4 | ||
+ | | colspan="2" | .avi | ||
|- | |- | ||
− | ! | + | | Advantage |
− | + | | Open Source | |
+ | | Open Source | ||
+ | | Industry Standard | ||
+ | | colspan="2" | Works in Presentation | ||
+ | |- | ||
+ | ! Software | ||
+ | |- | ||
+ | | Chrome/Firefox/Opera | ||
+ | | style="background-color:#9F9;" | Yes | ||
+ | | style="background-color:#9F9;" | Yes | ||
+ | | style="background-color:#9F9;" | Yes | ||
+ | | | ||
+ | | style="background-color:#F99;" | No | ||
|- | |- | ||
| VLC | | VLC | ||
+ | | style="background-color:#9F9;" | Yes | ||
+ | | style="background-color:#9F9;" | Yes | ||
+ | | style="background-color:#9F9;" | Yes | ||
| style="background-color:#9F9;" | Yes | | style="background-color:#9F9;" | Yes | ||
| style="background-color:#9F9;" | Yes | | style="background-color:#9F9;" | Yes | ||
|- | |- | ||
− | | Presentation | + | | PsychoPy |
− | | style="background-color:# | + | | style="background-color:#9F9;" | Yes<sup>1</sup> |
+ | | style="background-color:#9F9;" | Yes<sup>1</sup> | ||
+ | | style="background-color:#9F9;" | Yes<sup>1</sup> | ||
+ | | style="background-color:#FFF;" | | ||
+ | | style="background-color:#FFF;" | | ||
+ | |- | ||
+ | | Neurobs Presentation | ||
+ | | style="background-color:#F99;" | No | ||
+ | | style="background-color:#F99;" | No | ||
+ | | style="background-color:#F99;" | No | ||
+ | |||
+ | | style="background-color:#9F9;" | Yes<sup>2</sup> | ||
| style="background-color:#9F9;" | Yes | | style="background-color:#9F9;" | Yes | ||
|} | |} | ||
− | <sup>1</sup> | + | <sup>1</sup> Windows version requires careful installation, ask the TSG for help.<br/> |
+ | <sup>2</sup> Recommended output for Presentation only. See documentation below for conversion options.<br/> | ||
+ | Note: This list is incomplete and will be updated as soon as we have tested all the common and recommended video formats with all supported stimuli software. | ||
+ | |||
+ | == Neurobs Presentation == | ||
+ | |||
+ | Neurobs Presentation does not support the .mp4 container, so you will have to convert your H.264 encoded .mp4 videos to the .avi container. We recommend doing this with [[FFmpeg]]. | ||
+ | |||
+ | Neurobs recommends using MP4Cam2AVI Easy Converter<ref>http://www.neurobs.com/wiki/Presentation/Video#Video_Encoding</ref>. Be sure to uncheck 'preview On' before opening your files, because the program might crash otherwise. | ||
+ | |||
+ | {{Warn|There are performance issues with playing videos in Presentation. Please contact the TSG if you plan to use videos in your Presentation experiment.}} | ||
== Downloads == | == Downloads == | ||
+ | === Converters === | ||
+ | We recommend using [[FFmpeg]] for encoding/converting your videos. If you prefer using a GUI for converting to mp4, Handbrake is a decent option. | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! scope="col" | Name | ||
+ | ! scope="col" | Download Location | ||
+ | ! scope="col" | Supported formats | ||
+ | ! scope="col" | Supported containers | ||
+ | |- | ||
+ | | [[FFmpeg]] || https://ffmpeg.org/ || various || any | ||
+ | |- | ||
+ | | Handbrake || https://handbrake.fr/ || H.264, MPEG-4, MPEG-2, VP3 || mp4, mkv | ||
+ | |- | ||
+ | | MP4Cam2AVI Easy Converter || http://sourceforge.net/projects/mp4cam2avi || H.264 || avi, mp4 | ||
+ | |} | ||
− | === Codec Packs === | + | <!-- |
+ | === Codec Packs === | ||
+ | Note: Below is just a list of several codec packs. Please '''do not attempt to install all packs together''', but only choose the one(s) your playback-software requires. | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! scope="col" | Name | ! scope="col" | Name | ||
! scope="col" | Download Location | ! scope="col" | Download Location | ||
+ | |- | ||
+ | | Libavcodec || https://libav.org/ | ||
|- | |- | ||
| LAV Filters || https://github.com/Nevcairiel/LAVFilters/releases | | LAV Filters || https://github.com/Nevcairiel/LAVFilters/releases | ||
|- | |- | ||
| K-Lite Codec Pack || http://www.codecguide.com/download_kl.htm | | K-Lite Codec Pack || http://www.codecguide.com/download_kl.htm | ||
− | |||
− | |||
|- | |- | ||
| FFDshow || http://sourceforge.net/projects/ffdshow-tryout/ | | FFDshow || http://sourceforge.net/projects/ffdshow-tryout/ | ||
|} | |} | ||
+ | --> | ||
+ | === Codec Viewer === | ||
+ | Want to know how a video was encoded? You can use MediaInfo (open-source, at https://mediaarea.net/en/MediaInfo) to gain insight into the video and audio codecs, bit rates, resolution, frame rate, etc. | ||
=== Media Players === | === Media Players === | ||
Line 56: | Line 143: | ||
| Gstreamer (Matlab) || http://gstreamer.freedesktop.org/ | | Gstreamer (Matlab) || http://gstreamer.freedesktop.org/ | ||
|} | |} | ||
+ | |||
+ | ==References== | ||
+ | <references /> |
Latest revision as of 16:19, 21 March 2024
We advise users to contact the Technical Support Group to discuss which codec and export settings are best suited for your video stimuli. This page functions only as reference.
For a guide on recording your screen, see Screen Recording with OBS.
Information
Codecs
To find out what video codecs are and why they are used, grab a cup of coffee (or other non-alcoholic beverage of choice) and reserve about 45 minutes of your life to watch this comprehensive video: How Codecs Work (Vimeo).
Bitrate
When compressing a video, you will be asked to enter a 'bitrate'. This is what determines how much information is stored for every second of video. The more information, the higher the quality of the video. The tradeoff is file size. The more information, the larger the file. So setting a bitrate is striking a balance between limiting the file size without losing too much quality. The smarter the compression format, the easier this is to achieve.
If you are using H.264 compression, you can calculate a ballpark estimate for your target bitrate using the Kush gauge, a helpful formula written by a guy named Kush:
Target Bitrate (kbps) = Frame Width (px) * Frame Height (px) * Frame Rate (fps) * Motion Factor * 0.07 / 1000
"Motion Factor" is an arbitrary value (typically 1, 2 or 4) that you can assign to your video based on the amount of (fast) movement in the video. Higher amounts of movement require a higher amount of information to be stored in order to prevent quality loss. Example calculation for a typical 720p video:
1280 * 720 * 25 * 2 * 0.07 / 1000 = 3225.6 kbps (= 3.2 Mbps)
Bitrate can be set to Constant (CBR) or Variable (VBR). A variable bitrate can help decreasing file size when your video has a combination of high and low amounts of movement, as it will optimize the distribution of information storage for those parts in your video. The downside is that your video player has to sometimes suddenly decode a lot more information than the previous frame, potentially causing laggy playback. For this reason, we advise using a constant bitrate.
HEVC
High Efficiency Video Coding (HEVC, also known as H.265) is the successor to H.264. Together with AVC, VP9 and AV1, it is one of the latest standards that yield significantly better compression rates than H.264. However, support is still far from universal and you may experience performance issues in some programs or on some devices. Therefore, we do not advise storing your videos in these formats unless it is for archival purposes only.
Software support
Recommended formats | Non-Recommended formats | ||||
---|---|---|---|---|---|
Codec | VP8/VP9 | Theora | H.264 | XVID | |
Container | .webm .mkv | .ogv .ogg | .mp4 | .avi | |
Advantage | Open Source | Open Source | Industry Standard | Works in Presentation | |
Software | |||||
Chrome/Firefox/Opera | Yes | Yes | Yes | No | |
VLC | Yes | Yes | Yes | Yes | Yes |
PsychoPy | Yes1 | Yes1 | Yes1 | ||
Neurobs Presentation | No | No | No | Yes2 | Yes |
1 Windows version requires careful installation, ask the TSG for help.
2 Recommended output for Presentation only. See documentation below for conversion options.
Note: This list is incomplete and will be updated as soon as we have tested all the common and recommended video formats with all supported stimuli software.
Neurobs Presentation
Neurobs Presentation does not support the .mp4 container, so you will have to convert your H.264 encoded .mp4 videos to the .avi container. We recommend doing this with FFmpeg.
Neurobs recommends using MP4Cam2AVI Easy Converter[1]. Be sure to uncheck 'preview On' before opening your files, because the program might crash otherwise.
There are performance issues with playing videos in Presentation. Please contact the TSG if you plan to use videos in your Presentation experiment. |
Downloads
Converters
We recommend using FFmpeg for encoding/converting your videos. If you prefer using a GUI for converting to mp4, Handbrake is a decent option.
Name | Download Location | Supported formats | Supported containers |
---|---|---|---|
FFmpeg | https://ffmpeg.org/ | various | any |
Handbrake | https://handbrake.fr/ | H.264, MPEG-4, MPEG-2, VP3 | mp4, mkv |
MP4Cam2AVI Easy Converter | http://sourceforge.net/projects/mp4cam2avi | H.264 | avi, mp4 |
Codec Viewer
Want to know how a video was encoded? You can use MediaInfo (open-source, at https://mediaarea.net/en/MediaInfo) to gain insight into the video and audio codecs, bit rates, resolution, frame rate, etc.
Media Players
Name | Download Location |
---|---|
VLC | https://www.videolan.org/ |
Noldus Mainconcept Codec (Noldus Media Recorder) | Media:Noldus MainConcept Codec Package 8.5.26.zip |
AVBin (Psychopy) | http://avbin.github.io/AVbin/Home/Home.html |
Gstreamer (Matlab) | http://gstreamer.freedesktop.org/ |