
Recherche avancée
Autres articles (102)
-
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
Librairies et binaires spécifiques au traitement vidéo et sonore
31 janvier 2010, parLes logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
Binaires complémentaires et facultatifs flvtool2 : (...) -
Contribute to translation
13 avril 2011You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
MediaSPIP is currently available in French and English (...)
Sur d’autres sites (7639)
-
ffmpeg encoding leaves me with blank space at the end where the video pauses and there is nothing ahead
6 novembre 2022, par Nisarg DesaiI was trying to slice some of the video being played and clip it in mpv.net using a .lua script which uses ffmpeg to encode the webm output. ffmpeg sometimes leaves some seconds blank and without any video/audio ahead while clipping from source. Is there any solution to this ?


The code for the script is given below (was taken from here https://github.com/occivink/mpv-scripts) :


local utils = require "mp.utils"
local msg = require "mp.msg"
local options = require "mp.options"

local ON_WINDOWS = (package.config:sub(1,1) ~= "/")

local start_timestamp = nil
local profile_start = ""

-- implementation detail of the osd message
local timer = nil
local timer_duration = 2

-- folder creation if it doesnt exist
function exists(file)
 local ok, err, code = os.rename(file, file)
 if not ok then
 if code == 13 then
 return true
 end
 end
 return ok, err
end

--- Check if a directory exists in this path
function create_dir(path)
 local dir = "\"" .. path .. "\""
 if not exists(path .."/") then
 os.execute("mkdir " .. dir)
 end
end

function append_table(lhs, rhs)
 for i = 1,#rhs do
 lhs[#lhs+1] = rhs[i]
 end
 return lhs
end

function file_exists(name)
 local f = io.open(name, "r")
 if f ~= nil then
 io.close(f)
 return true
 else
 return false
 end
end

function get_extension(path)
 local candidate = string.match(path, "%.([^.]+)$")
 if candidate then
 for _, ext in ipairs({ "mkv", "webm", "mp4", "avi" }) do
 if candidate == ext then
 return candidate
 end
 end
 end
 return "mkv"
end

function get_output_string(dir, format, input, extension, title, from, to, profile)
 local res = utils.readdir(dir)
 if not res then
 return nil
 end
 local files = {}
 for _, f in ipairs(res) do
 files[f] = true
 end
 local output = format
 output = string.gsub(output, "$f", function() return input end)
 output = string.gsub(output, "$t", function() return title end)
 output = string.gsub(output, "$s", function() return seconds_to_time_string(from, true) end)
 output = string.gsub(output, "$e", function() return seconds_to_time_string(to, true) end)
 output = string.gsub(output, "$d", function() return seconds_to_time_string(to-from, true) end)
 output = string.gsub(output, "$x", function() return extension end)
 output = string.gsub(output, "$p", function() return profile end)
 if ON_WINDOWS then
 output = string.gsub(output, "[/\\|<>?:\"*]", "_")
 end
 if not string.find(output, "$n") then
 return files[output] and nil or output
 end
 local i = 1
 while true do
 local potential_name = string.gsub(output, "$n", tostring(i))
 if not files[potential_name] then
 return potential_name
 end
 i = i + 1
 end
end

function get_video_filters()
 local filters = {}
 for _, vf in ipairs(mp.get_property_native("vf")) do
 local name = vf["name"]
 name = string.gsub(name, '^lavfi%-', '')
 local filter
 if name == "crop" then
 local p = vf["params"]
 filter = string.format("crop=%d:%d:%d:%d", p.w, p.h, p.x, p.y)
 elseif name == "mirror" then
 filter = "hflip"
 elseif name == "flip" then
 filter = "vflip"
 elseif name == "rotate" then
 local rotation = vf["params"]["angle"]
 -- rotate is NOT the filter we want here
 if rotation == "90" then
 filter = "transpose=clock"
 elseif rotation == "180" then
 filter = "transpose=clock,transpose=clock"
 elseif rotation == "270" then
 filter = "transpose=cclock"
 end
 end
 filters[#filters + 1] = filter
 end
 return filters
end

function get_input_info(default_path, only_active)
 local accepted = {
 video = true,
 audio = not mp.get_property_bool("mute"),
 sub = mp.get_property_bool("sub-visibility")
 }
 local ret = {}
 for _, track in ipairs(mp.get_property_native("track-list")) do
 local track_path = track["external-filename"] or default_path
 if not only_active or (track["selected"] and accepted[track["type"]]) then
 local tracks = ret[track_path]
 if not tracks then
 ret[track_path] = { track["ff-index"] }
 else
 tracks[#tracks + 1] = track["ff-index"]
 end
 end
 end
 return ret
end

function seconds_to_time_string(seconds, full)
 local ret = string.format("%02d:%02d.%03d"
 , math.floor(seconds / 60) % 60
 , math.floor(seconds) % 60
 , seconds * 1000 % 1000
 )
 if full or seconds > 3600 then
 ret = string.format("%d:%s", math.floor(seconds / 3600), ret)
 end
 return ret
end

function start_encoding(from, to, settings)
 local args = {
 settings.ffmpeg_command,
 "-loglevel", "panic", "-hide_banner",
 }
 local append_args = function(table) args = append_table(args, table) end

 local path = mp.get_property("path")
 local is_stream = not file_exists(path)
 if is_stream then
 path = mp.get_property("stream-path")
 end

 local track_args = {}
 local start = seconds_to_time_string(from, false)
 local input_index = 0
 for input_path, tracks in pairs(get_input_info(path, settings.only_active_tracks)) do
 append_args({
 "-ss", start,
 "-i", input_path,
 })
 if settings.only_active_tracks then
 for _, track_index in ipairs(tracks) do
 track_args = append_table(track_args, { "-map", string.format("%d:%d", input_index, track_index)})
 end
 else
 track_args = append_table(track_args, { "-map", tostring(input_index)})
 end
 input_index = input_index + 1
 end

 append_args({"-to", tostring(to-from)})
 append_args(track_args)

 -- apply some of the video filters currently in the chain
 local filters = {}
 if settings.preserve_filters then
 filters = get_video_filters()
 end
 if settings.append_filter ~= "" then
 filters[#filters + 1] = settings.append_filter
 end
 if #filters > 0 then
 append_args({ "-filter:v", table.concat(filters, ",") })
 end

 -- split the user-passed settings on whitespace
 for token in string.gmatch(settings.codec, "[^%s]+") do
 args[#args + 1] = token
 end

 -- path of the output
 local output_directory = mp.get_property("options/screenshot-directory")
 -- local checkbool = exists(output_directory.."/")
 -- mp.osd_message("" .. type(checkbool), timer_duration)
 -- if not checkbool then 
 -- os.execute("mkdir" .. output_directory)
 -- end
 if output_directory == "" then
 if is_stream then
 output_directory = "."
 else
 output_directory, _ = utils.split_path(path)
 end
 else
 output_directory = string.gsub(output_directory, "^~", os.getenv("HOME") or "~")
 end
 local input_name = mp.get_property("filename/no-ext") or "encode"
 local title = mp.get_property("media-title")
 local extension = get_extension(path)
 local output_name = get_output_string(output_directory, settings.output_format, input_name, extension, title, from, to, settings.profile)
 if not output_name then
 mp.osd_message("Invalid path " .. output_directory)
 return
 end
 args[#args + 1] = utils.join_path(output_directory, output_name)

 if settings.print then
 local o = ""
 -- fuck this is ugly
 for i = 1, #args do
 local fmt = ""
 if i == 1 then
 fmt = "%s%s"
 elseif i >= 2 and i <= 4 then
 fmt = "%s"
 elseif args[i-1] == "-i" or i == #args or args[i-1] == "-filter:v" then
 fmt = "%s '%s'"
 else
 fmt = "%s %s"
 end
 o = string.format(fmt, o, args[i])
 end
 print(o)
 end
 if settings.detached then
 utils.subprocess_detached({ args = args })
 else
 local res = utils.subprocess({ args = args, max_size = 0, cancellable = false })
 if res.status == 0 then
 mp.osd_message("Finished encoding succesfully")
 else
 mp.osd_message("Failed to encode, check the log")
 end
 end
end

function clear_timestamp()
 timer:kill()
 start_timestamp = nil
 profile_start = ""
 mp.remove_key_binding("encode-ESC")
 mp.remove_key_binding("encode-ENTER")
 mp.osd_message("", 0)
end

function set_timestamp(profile)
 if not mp.get_property("path") then
 mp.osd_message("No file currently playing")
 return
 end
 if not mp.get_property_bool("seekable") then
 mp.osd_message("Cannot encode non-seekable media")
 return
 end
 create_dir(mp.get_property("options/screenshot-directory"))
 if not start_timestamp or profile ~= profile_start then
 profile_start = profile
 start_timestamp = mp.get_property_number("time-pos")
 local msg = function()
 mp.osd_message(
 string.format("encode [%s]: waiting for end timestamp", profile or "default"),
 timer_duration
 )
 end
 msg()
 timer = mp.add_periodic_timer(timer_duration, msg)
 mp.add_forced_key_binding("ESC", "encode-ESC", clear_timestamp)
 mp.add_forced_key_binding("ENTER", "encode-ENTER", function() set_timestamp(profile) end)
 else
 local from = start_timestamp
 local to = mp.get_property_number("time-pos")
 if to <= from then
 mp.osd_message("Second timestamp cannot be before the first", timer_duration)
 timer:kill()
 timer:resume()
 return
 end
 clear_timestamp()
 mp.osd_message(string.format("Encoding from %s to %s"
 , seconds_to_time_string(from, false)
 , seconds_to_time_string(to, false)
 ), timer_duration)
 -- include the current frame into the extract
 local fps = mp.get_property_number("container-fps") or 30
 to = to + 1 / fps / 2
 local settings = {
 detached = false,
 container = "",
 only_active_tracks = false,
 preserve_filters = true,
 append_filter = "",
 codec = "-c:v libvpx-vp9 -lossless 1 -b:v 1000k -deadline good",
 output_format = "$f_$n.webm",
 output_directory = "",
 ffmpeg_command = "ffmpeg",
 print = true,
 }
 if profile then
 options.read_options(settings, profile)
 if settings.container ~= "" then
 msg.warn("The 'container' setting is deprecated, use 'output_format' now")
 settings.output_format = settings.output_format .. "." .. settings.container
 end
 settings.profile = profile
 else
 settings.profile = "default"
 end 
 start_encoding(from, to, settings)
 end
end

mp.add_key_binding(nil, "set-timestamp", set_timestamp)



-
Is Google Analytics Accurate ? 6 Important Caveats
8 novembre 2022, par Erin -
Xubuntu ffmpeg screen capturing very slow when no display connected
8 décembre 2022, par fre_derI use ffmpeg on an Intel Nuc with Xubuntu 22.04 (XFCE4, lightdm), with x11grab for screen capturing the desktop, and sending output to a multicast UDP stream (which is shown on different IPTV sets in the network).
The system uses autologin, and autostarts Firefox in kiosk mode, rendering a html5 video.


Everything works fine when a display is attached, but from the moment the hdmi cable is detached, the output video is extremely slow (very shaky, looks like 1 fps, audio is OK although it has occasional hickups).


CPU and memory usage doesn't seem to be affected whether a display is attached or not.


This runs fine on Xubuntu 18.04, although there might be small config changes that I'm not aware of.


To be able to display output when no display is attached, I created a VIRTUAL1 display :


xrandr -d :0 --verbose --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr -d :0 --verbose --addmode VIRTUAL1 "1920x1080_60.00"



my /usr/share/X11/xorg.conf.d/20-intel.conf looks like :


Section "Device"
 Identifier "Intel Graphics"
 Driver "intel"
 Option "VirtualHeads" "1"
 Option "TearFree" "true"
 Option "TripleBuffer" "true"
 Option "DRI" "false"
EndSection



The ffmpeg command :


ffmpeg -r 25 -thread_queue_size 512 -f x11grab -s 1920x1080 -i :0 -thread_queue_size 512 -f alsa -i default -c:a mp2 -f mpegts udp://239.255.255.8:50000?pkt_size=1316



(during trial/error I tested various ffmpeg command line options to no avail)


Output with hdmi cable attached :


ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
 built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
 configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
 WARNING: library configuration mismatch
 avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libaribb24 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-libsmbclient
 libavutil 56. 70.100 / 56. 70.100
 libavcodec 58.134.100 / 58.134.100
 libavformat 58. 76.100 / 58. 76.100
 libavdevice 58. 13.100 / 58. 13.100
 libavfilter 7.110.100 / 7.110.100
 libswscale 5. 9.100 / 5. 9.100
 libswresample 3. 9.100 / 3. 9.100
 libpostproc 55. 9.100 / 55. 9.100
[x11grab @ 0x55f1fdfa18c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, x11grab, from ':0':
 Duration: N/A, start: 1670501458.257764, bitrate: 1658880 kb/s
 Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1920x1080, 1658880 kb/s, 25 fps, 1000k tbr, 1000k tbn, 1000k tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'default':
 Duration: N/A, start: 1670501459.560180, bitrate: 1536 kb/s
 Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
 Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
 Stream #1:0 -> #0:1 (pcm_s16le (native) -> mp2 (native))
Press [q] to stop, [?] for help
Output #0, mpegts, to 'udp://239.255.255.8:50000?pkt_size=1316':
 Metadata:
 encoder : Lavf58.76.100
 Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, progressive), 1920x1080, q=2-31, 200 kb/s, 25 fps, 90k tbn
 Metadata:
 encoder : Lavc58.134.100 mpeg2video
 Side data:
 cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
 Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
 Metadata:
 encoder : Lavc58.134.100 mp2
frame= 1041 fps= 25 q=31.0 Lsize= 12451kB time=00:00:41.56 bitrate=2454.3kbits/s speed=1.01x
video:9955kB audio:1920kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 4.847125%
Exiting normally, received signal 2.



Output without hdmi cable attached :


ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
 built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
 configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
 WARNING: library configuration mismatch
 avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libaribb24 --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc --enable-libsmbclient
 libavutil 56. 70.100 / 56. 70.100
 libavcodec 58.134.100 / 58.134.100
 libavformat 58. 76.100 / 58. 76.100
 libavdevice 58. 13.100 / 58. 13.100
 libavfilter 7.110.100 / 7.110.100
 libswscale 5. 9.100 / 5. 9.100
 libswresample 3. 9.100 / 3. 9.100
 libpostproc 55. 9.100 / 55. 9.100
[x11grab @ 0x56325816a8c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, x11grab, from ':0':
 Duration: N/A, start: 1670501334.907900, bitrate: 1658880 kb/s
 Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1920x1080, 1658880 kb/s, 25 fps, 1000k tbr, 1000k tbn, 1000k tbc
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, alsa, from 'default':
 Duration: N/A, start: 1670501336.193971, bitrate: 1536 kb/s
 Stream #1:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
 Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
 Stream #1:0 -> #0:1 (pcm_s16le (native) -> mp2 (native))
Press [q] to stop, [?] for help
Output #0, mpegts, to 'udp://239.255.255.8:50000?pkt_size=1316':
 Metadata:
 encoder : Lavf58.76.100
 Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, progressive), 1920x1080, q=2-31, 200 kb/s, 25 fps, 90k tbn
 Metadata:
 encoder : Lavc58.134.100 mpeg2video
 Side data:
 cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
 Stream #0:1: Audio: mp2, 48000 Hz, stereo, s16, 384 kb/s
 Metadata:
 encoder : Lavc58.134.100 mp2
frame= 1020 fps= 26 q=31.0 Lsize= 11802kB time=00:00:40.72 bitrate=2374.3kbits/s speed=1.02x
video:9378kB audio:1873kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 4.892235%
Exiting normally, received signal 2.



xrandr output with display connected (if no display connected then DP1 just says disconnected as the other outputs)


Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
DP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 530mm x 300mm
 1920x1080 60.00*+ 74.97 50.00 59.94
 1920x1080i 60.00 50.00 59.94
 1680x1050 59.88
 1280x1024 75.02 60.02
 1440x900 59.90
 1280x960 60.00
 1280x720 60.00 50.00 59.94
 1024x768 75.03 70.07 60.00
 832x624 74.55
 800x600 72.19 75.00 60.32 56.25
 720x576 50.00
 720x480 60.00 59.94
 640x480 75.00 72.81 66.67 60.00 59.94
 720x400 70.08
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
DP4 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
 1920x1080_60.00 59.96*
VIRTUAL2 disconnected (normal left inverted right x axis y axis)