Recherche avancée

Médias (29)

Mot : - Tags -/Musique

Autres articles (107)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

Sur d’autres sites (11713)

  • How can I rotate AND flip horizontally a video in ffmpeg ?

    11 novembre 2022, par Tarsila Costalonga

    I am using these commands but it doesn't seem to respect the one that flips. It only rotates the media, but doesn't flip.
How can I rotate to four directions (0, 90, 180 and 270) and mirror horizontally the video ?

    


    enter image description here

    


  • ffmpeg encoding leaves me with blank space at the end where the video pauses and there is nothing ahead

    6 novembre 2022, par Nisarg Desai

    I 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)


    


  • Android player, FFMPEG, JNI

    14 septembre 2022, par Nikita Pavlenko

    Can I use std::async with jni or I should throughstd::thread or pthread_create ? Because i'm writing android player with my C++ lib that uses std::async for demuxing, video and audio. I saw that every call CallVoidMethod(of course with attach and detach thread) create new thread (thread id in Java methods is increased). And in some time a big error occurres

    


    A/e.androidplaye: java_vm_ext.cc:594] JNI DETECTED ERROR IN APPLICATION: thread Thread[2,tid=3420,Native,Thread*=0xb400007bd4470c00,peer=0x12cc1510,"Thread-8687"] using JNIEnv* from thread Thread[3,tid=3419,Native,Thread*=0xb400007aadc2e400,peer=0x12d00000,"Thread-8688"]&#xA;    java_vm_ext.cc:594]     in call to CallVoidMethodV&#xA;A/e.androidplaye: runtime.cc:675] Runtime aborting...&#xA;    runtime.cc:675] Dumping all threads without mutator lock held&#xA;    runtime.cc:675] All threads:&#xA;    runtime.cc:675] DALVIK THREADS (23):&#xA;    runtime.cc:675] "Thread-8687" prio=10 tid=2 Runnable&#xA;    runtime.cc:675]   | group="" sCount=0 ucsCount=0 flags=0 obj=0x12d80000 self=0xb400007bd4470c00&#xA;    runtime.cc:675]   | sysTid=3420 nice=-10 cgrp=default sched=0/0 handle=0x7aa4166cb0&#xA;    runtime.cc:675]   | state=R schedstat=( 6040359820 215025421 9416 ) utm=498 stm=105 core=1 HZ=100&#xA;    runtime.cc:675]   | stack=0x7aa406f000-0x7aa4071000 stackSize=991KB&#xA;    runtime.cc:675]   | held mutexes= "abort lock" "mutator lock"(shared held)&#xA;    runtime.cc:675]   native: #00 pc 00000000005376cc  /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream >&amp;, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)&#x2B;128) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #01 pc 00000000006f0e24  /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream >&amp;, bool, BacktraceMap*, bool) const&#x2B;236) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #02 pc 00000000006fe6b0  /apex/com.android.art/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)&#x2B;208) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #03 pc 0000000000364174  /apex/com.android.art/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)&#x2B;440) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #04 pc 00000000006fce50  /apex/com.android.art/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream >&amp;, bool)&#x2B;280) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #05 pc 00000000006d7ec4  /apex/com.android.art/lib64/libart.so (art::AbortState::Dump(std::__1::basic_ostream >&amp;) const&#x2B;212) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #06 pc 00000000006d2b24  /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)&#x2B;1016) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #07 pc 0000000000016ea8  /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void>&amp;&amp;)::$_3::__invoke(char const*)&#x2B;80) (BuildId: b77c57f68a484ed93d5a7eda59d83bf9)&#xA;    runtime.cc:675]   native: #08 pc 0000000000016450  /apex/com.android.art/lib64/libbase.so (android::base::LogMessage::~LogMessage()&#x2B;352) (BuildId: b77c57f68a484ed93d5a7eda59d83bf9)&#xA;    runtime.cc:675]   native: #09 pc 0000000000445224  /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)&#x2B;1612) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #10 pc 0000000000329258  /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)&#x2B;108) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #11 pc 000000000048d59c  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...) (.__uniq.99033978352804627313491551960229047428)&#x2B;144) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #12 pc 0000000000453ad0  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&amp;, bool, char const*, art::(anonymous namespace)::JniValueType*) (.__uniq.99033978352804627313491551960229047428)&#x2B;4648) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #13 pc 0000000000475e2c  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CheckCallArgs(art::ScopedObjectAccess&amp;, art::(anonymous namespace)::ScopedCheck&amp;, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, art::InvokeType, art::(anonymous namespace)::VarArgs const*) (.__uniq.99033978352804627313491551960229047428)&#x2B;76) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;A/e.androidplaye: runtime.cc:675]   native: #14 pc 0000000000474d4c  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, std::__va_list, art::Primitive::Type, art::InvokeType) (.__uniq.99033978352804627313491551960229047428)&#x2B;268) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #15 pc 00000000005ca9ec  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, std::__va_list) (.__uniq.99033978352804627313491551960229047428.llvm.5591279935177935698)&#x2B;72) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #16 pc 0000000000024ad4  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (_JNIEnv::CallVoidMethod(_jobject*, _jmethodID*, ...)&#x2B;172) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;    runtime.cc:675]   native: #17 pc 000000000002173c  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (ffmpeg::AndroidPlayer::handleAudioFrame(ffmpeg::Frame const&amp;)&#x2B;184) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;    runtime.cc:675]   native: #18 pc 0000000000028488  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (???) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;    runtime.cc:675]   native: #19 pc 00000000000283c0  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (???) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;    runtime.cc:675]   native: #20 pc 000000000002835c  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (std::__ndk1::__bind_return<void> >, std::__ndk1::tuple, __is_valid_bind_return<void> >, std::__ndk1::tuple >::value>::type std::__ndk1::__bind<void> const&amp;>::operator()(ffmpeg::Frame const&amp;)&#x2B;76) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;    runtime.cc:675]   native: #21 pc 00000000000282ec  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (???) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;    runtime.cc:675]   native: #22 pc 0000000000028288  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (void std::__ndk1::__invoke_void_return_wrapper<void>::__call const&amp;>&amp;, ffmpeg::Frame const&amp;>(std::__ndk1::__bind<void> const&amp;>&amp;, ffmpeg::Frame const&amp;)&#x2B;48) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;    runtime.cc:675]   native: #23 pc 0000000000028234  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (???) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;A/e.androidplaye: runtime.cc:675]   native: #24 pc 000000000002725c  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 174000) (std::__ndk1::__function::__func const&amp;>, std::__ndk1::allocator const&amp;> >, void (ffmpeg::Frame const&amp;)>::operator()(ffmpeg::Frame const&amp;)&#x2B;48) (BuildId: 2f8cba1fdcec13c03a15bf3de18a4ddd1c91325d)&#xA;    runtime.cc:675]   native: #25 pc 000000000004039c  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (???) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #26 pc 000000000003b1f8  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (std::__ndk1::function<void>::operator()(ffmpeg::Frame const&amp;) const&#x2B;44) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #27 pc 0000000000039dd4  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (ffmpeg::Player::playAudio()&#x2B;164) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #28 pc 000000000003db90  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (???) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #29 pc 000000000003db1c  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (???) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #30 pc 000000000003dacc  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (???) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #31 pc 000000000003da10  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (???) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #32 pc 000000000003e6cc  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (???) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #33 pc 000000000003e5e0  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (???) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #34 pc 000000000003df50  /data/app/~~kWvaZj7JOt9YyFawweYvtw==/com.example.androidplayer-_Vqw2zfb57LpijMAPW6U4w==/base.apk (offset 380000) (???) (BuildId: 9a9d303cb440eed7364800d0ead0962a65175480)&#xA;    runtime.cc:675]   native: #35 pc 00000000000efb14  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)&#x2B;264) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #36 pc 000000000008c35c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread&#x2B;68) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   (no managed stack frames)&#xA;    runtime.cc:675] &#xA;    runtime.cc:675] "main" prio=10 tid=1 Native&#xA;    runtime.cc:675]   | group="" sCount=1 ucsCount=0 flags=1 obj=0x71915d18 self=0xb400007bd4472800&#xA;    runtime.cc:675]   | sysTid=3241 nice=-10 cgrp=default sched=0/0 handle=0x7bd5ac64f8&#xA;    runtime.cc:675]   | state=S schedstat=( 20358355629 2398850818 13099 ) utm=1560 stm=474 core=5 HZ=100&#xA;    runtime.cc:675]   | stack=0x7ff2616000-0x7ff2618000 stackSize=8188KB&#xA;    runtime.cc:675]   | held mutexes=&#xA;    runtime.cc:675]   native: #00 pc 0000000000086f90  /apex/com.android.runtime/lib64/bionic/libc.so (syscall&#x2B;32) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;A/e.androidplaye: runtime.cc:675]   native: #01 pc 000000000047cc80  /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)&#x2B;140) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #02 pc 00000000005c8cac  /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::FindClass(_JNIEnv*, char const*) (.__uniq.99033978352804627313491551960229047428.llvm.5591279935177935698)&#x2B;1096) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #03 pc 000000000011aae0  /system/lib64/libandroid_runtime.so (android::NativeDisplayEventReceiver::dispatchVsync(long, android::PhysicalDisplayId, unsigned int, android::VsyncEventData)&#x2B;80) (BuildId: f73b7e7fab15dc5b96680181e111fb8f)&#xA;    runtime.cc:675]   native: #04 pc 00000000000af3f0  /system/lib64/libgui.so (android::DisplayEventDispatcher::handleEvent(int, int, void*)&#x2B;204) (BuildId: 3f01a4a30b5fa3a4804b8361ddccc4a3)&#xA;    runtime.cc:675]   native: #05 pc 0000000000018184  /system/lib64/libutils.so (android::Looper::pollInner(int)&#x2B;916) (BuildId: 16796d84bdcf185b2112267dbd820c19)&#xA;    runtime.cc:675]   native: #06 pc 0000000000017d84  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)&#x2B;116) (BuildId: 16796d84bdcf185b2112267dbd820c19)&#xA;    runtime.cc:675]   native: #07 pc 0000000000154668  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)&#x2B;48) (BuildId: f73b7e7fab15dc5b96680181e111fb8f)&#xA;    runtime.cc:675]   at android.os.MessageQueue.nativePollOnce(Native method)&#xA;    runtime.cc:675]   at android.os.MessageQueue.next(MessageQueue.java:337)&#xA;    runtime.cc:675]   at android.os.Looper.loopOnce(Looper.java:168)&#xA;    runtime.cc:675]   at android.os.Looper.loop(Looper.java:299)&#xA;    runtime.cc:675]   at android.app.ActivityThread.main(ActivityThread.java:8250)&#xA;    runtime.cc:675]   at java.lang.reflect.Method.invoke(Native method)&#xA;    runtime.cc:675]   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)&#xA;    runtime.cc:675]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045)&#xA;    runtime.cc:675] &#xA;    runtime.cc:675] "Signal Catcher" prio=10 tid=4 WaitingInMainSignalCatcherLoop&#xA;    runtime.cc:675]   | group="" sCount=1 ucsCount=0 flags=1 obj=0x13340270 self=0xb400007b1f611800&#xA;    runtime.cc:675]   | sysTid=3247 nice=-20 cgrp=default sched=0/0 handle=0x7b209aecb0&#xA;    runtime.cc:675]   | state=S schedstat=( 300521 0 2 ) utm=0 stm=0 core=6 HZ=100&#xA;    runtime.cc:675]   | stack=0x7b208b7000-0x7b208b9000 stackSize=991KB&#xA;    runtime.cc:675]   | held mutexes=&#xA;    runtime.cc:675]   native: #00 pc 00000000000db77c  /apex/com.android.runtime/lib64/bionic/libc.so (__rt_sigtimedwait&#x2B;12) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #01 pc 000000000009a1b8  /apex/com.android.runtime/lib64/bionic/libc.so (sigwait64&#x2B;92) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #02 pc 000000000057420c  /apex/com.android.art/lib64/libart.so (art::SignalCatcher::WaitForSignal(art::Thread*, art::SignalSet&amp;)&#x2B;108) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #03 pc 0000000000573e1c  /apex/com.android.art/lib64/libart.so (art::SignalCatcher::Run(void*)&#x2B;228) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #04 pc 00000000000efb14  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)&#x2B;264) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #05 pc 000000000008c35c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread&#x2B;68) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   (no managed stack frames)&#xA;    runtime.cc:675] &#xA;    runtime.cc:675] "perfetto_hprof_listener" prio=10 tid=7 Native (still starting up)&#xA;    runtime.cc:675]   | group="" sCount=1 ucsCount=0 flags=1 obj=0x0 self=0xb400007b138a8800&#xA;    runtime.cc:675]   | sysTid=3248 nice=-20 cgrp=default sched=0/0 handle=0x7b208b0cb0&#xA;    runtime.cc:675]   | state=S schedstat=( 175052 0 3 ) utm=0 stm=0 core=6 HZ=100&#xA;A/e.androidplaye: runtime.cc:675]   | stack=0x7b207b9000-0x7b207bb000 stackSize=991KB&#xA;    runtime.cc:675]   | held mutexes=&#xA;    runtime.cc:675]   native: #00 pc 00000000000daad8  /apex/com.android.runtime/lib64/bionic/libc.so (read&#x2B;8) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #01 pc 000000000001d840  /apex/com.android.art/lib64/libperfetto_hprof.so (void* std::__1::__thread_proxy >, ArtPlugin_Initialize::$_34> >(void*)&#x2B;260) (BuildId: d60314cb99f035c98d20ab286d52fc6d)&#xA;    runtime.cc:675]   native: #02 pc 00000000000efb14  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)&#x2B;264) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #03 pc 000000000008c35c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread&#x2B;68) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   (no managed stack frames)&#xA;    runtime.cc:675] &#xA;    runtime.cc:675] "ADB-JDWP Connection Control Thread" prio=10 tid=8 WaitingInMainDebuggerLoop&#xA;    runtime.cc:675]   | group="" sCount=1 ucsCount=0 flags=1 obj=0x133402e8 self=0xb400007b1f64d800&#xA;    runtime.cc:675]   | sysTid=3249 nice=-20 cgrp=default sched=0/0 handle=0x7b207b2cb0&#xA;    runtime.cc:675]   | state=S schedstat=( 935055 0 13 ) utm=0 stm=0 core=4 HZ=100&#xA;    runtime.cc:675]   | stack=0x7b206bb000-0x7b206bd000 stackSize=991KB&#xA;    runtime.cc:675]   | held mutexes=&#xA;    runtime.cc:675]   native: #00 pc 00000000000dbe3c  /apex/com.android.runtime/lib64/bionic/libc.so (__ppoll&#x2B;12) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #01 pc 00000000000973b4  /apex/com.android.runtime/lib64/bionic/libc.so (poll&#x2B;96) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #02 pc 00000000000099e4  /apex/com.android.art/lib64/libadbconnection.so (adbconnection::AdbConnectionState::RunPollLoop(art::Thread*)&#x2B;724) (BuildId: c4c03b03ed50414e876ae23cd04eae7e)&#xA;    runtime.cc:675]   native: #03 pc 00000000000080ac  /apex/com.android.art/lib64/libadbconnection.so (adbconnection::CallbackFunction(void*)&#x2B;1320) (BuildId: c4c03b03ed50414e876ae23cd04eae7e)&#xA;    runtime.cc:675]   native: #04 pc 00000000000efb14  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)&#x2B;264) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #05 pc 000000000008c35c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread&#x2B;68) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   (no managed stack frames)&#xA;    runtime.cc:675] &#xA;    runtime.cc:675] "Jit thread pool worker thread 0" prio=5 tid=9 Native&#xA;    runtime.cc:675]   | group="" sCount=1 ucsCount=0 flags=1 obj=0x13340360 self=0xb400007b138c4000&#xA;    runtime.cc:675]   | sysTid=3250 nice=9 cgrp=default sched=0/0 handle=0x7b206b4cb0&#xA;    runtime.cc:675]   | state=S schedstat=( 1384418878 710723029 1368 ) utm=118 stm=20 core=1 HZ=100&#xA;    runtime.cc:675]   | stack=0x7b205b5000-0x7b205b7000 stackSize=1023KB&#xA;    runtime.cc:675]   | held mutexes=&#xA;    runtime.cc:675]   native: #00 pc 0000000000086f90  /apex/com.android.runtime/lib64/bionic/libc.so (syscall&#x2B;32) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #01 pc 000000000047cc80  /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)&#x2B;140) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #02 pc 000000000047cb18  /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)&#x2B;120) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #03 pc 0000000000619810  /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()&#x2B;136) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #04 pc 00000000006196f0  /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)&#x2B;160) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;A/e.androidplaye: runtime.cc:675]   native: #05 pc 00000000000efb14  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)&#x2B;264) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #06 pc 000000000008c35c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread&#x2B;68) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   (no managed stack frames)&#xA;    runtime.cc:675] &#xA;    runtime.cc:675] "HeapTaskDaemon" prio=5 tid=10 Native&#xA;    runtime.cc:675]   | group="" sCount=1 ucsCount=0 flags=1 obj=0x13340d60 self=0xb400007b138d5800&#xA;    runtime.cc:675]   | sysTid=3256 nice=4 cgrp=default sched=0/0 handle=0x7b205aecb0&#xA;    runtime.cc:675]   | state=S schedstat=( 12936736517 2503386925 3722 ) utm=1074 stm=219 core=4 HZ=100&#xA;    runtime.cc:675]   | stack=0x7b204ab000-0x7b204ad000 stackSize=1039KB&#xA;    runtime.cc:675]   | held mutexes=&#xA;    runtime.cc:675]   native: #00 pc 0000000000086f90  /apex/com.android.runtime/lib64/bionic/libc.so (syscall&#x2B;32) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #01 pc 000000000047cc80  /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)&#x2B;140) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #02 pc 000000000056bbb8  /apex/com.android.art/lib64/libart.so (art::gc::Heap::TrimIndirectReferenceTables(art::Thread*)&#x2B;1364) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #03 pc 000000000056b468  /apex/com.android.art/lib64/libart.so (art::gc::Heap::Trim(art::Thread*)&#x2B;68) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #04 pc 000000000056b3cc  /apex/com.android.art/lib64/libart.so (art::gc::Heap::HeapTrimTask::Run(art::Thread*)&#x2B;32) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #05 pc 000000000046ce28  /apex/com.android.art/lib64/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)&#x2B;56) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   at dalvik.system.VMRuntime.runHeapTasks(Native method)&#xA;    runtime.cc:675]   at java.lang.Daemons$HeapTaskDaemon.runInternal(Daemons.java:609)&#xA;    runtime.cc:675]   at java.lang.Daemons$Daemon.run(Daemons.java:140)&#xA;    runtime.cc:675]   at java.lang.Thread.run(Thread.java:1012)&#xA;    runtime.cc:675] &#xA;    runtime.cc:675] "ReferenceQueueDaemon" prio=5 tid=11 Waiting&#xA;    runtime.cc:675]   | group="" sCount=1 ucsCount=0 flags=1 obj=0x133403d8 self=0xb400007b138d7400&#xA;    runtime.cc:675]   | sysTid=3259 nice=4 cgrp=default sched=0/0 handle=0x7b204a4cb0&#xA;    runtime.cc:675]   | state=S schedstat=( 2230226662 207087138 1228 ) utm=26 stm=196 core=4 HZ=100&#xA;    runtime.cc:675]   | stack=0x7b203a1000-0x7b203a3000 stackSize=1039KB&#xA;    runtime.cc:675]   | held mutexes=&#xA;    runtime.cc:675]   native: #00 pc 0000000000086f90  /apex/com.android.runtime/lib64/bionic/libc.so (syscall&#x2B;32) (BuildId: 94065bf91428f6ae9fb310c478171302)&#xA;    runtime.cc:675]   native: #01 pc 000000000047cc80  /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)&#x2B;140) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   native: #02 pc 0000000000486588  /apex/com.android.art/lib64/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr, long, int, bool, art::ThreadState)&#x2B;2520) (BuildId: 56e704c544e6c624201be2ab4933e853)&#xA;    runtime.cc:675]   at java.lang.Object.wait(Native method)&#xA;    runtime.cc:675]   - waiting on &lt;0x0483c441> (a java.lang.Class)&#xA;    runtime.cc:675]   at java.lang.Object.wait(Object.java:442)&#xA;    runtime.cc:675]   at java.lang.Object.wait(Object.java:568)&#xA;    runtime.cc:675]   at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:232)&#xA;    runtime.cc:675]   - locked &lt;0x0483c441> (a java.lang.Class)&#xA;    runtime.cc:675]   at java.lang.Daemons$Daemon.run(Daemons.java:140)&#xA;    runtime.cc:675]   at java.lang.Thread.run(Thread.java:1012)&#xA;    runtime.cc:675] &#xA;...(this part i missed because so big)&#xA;W/e.androidplaye: Suspending all threads took: 10.935ms&#xA;A/e.androidplaye: runtime.cc:683] JNI DETECTED ERROR IN APPLICATION: thread Thread[2,tid=3420,Native,Thread*=0xb400007bd4470c00,peer=0x12cc1510,"Thread-8687"] using JNIEnv* from thread Thread[3,tid=3419,Native,Thread*=0xb400007aadc2e400,peer=0x12d00000,"Thread-8688"]&#xA;    runtime.cc:683]     in call to CallVoidMethodV&#xA;A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 3420 (Thread-8687), pid 3241 (e.androidplayer)&#xA;</void></void></void></void></void></void></void>

    &#xA;