Recherche avancée

Médias (91)

Autres articles (1)

  • 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 (...)

Sur d’autres sites (502)

  • CANNOT LINK EXECUTABLE error with required libs loaded. How to link them properly ? [duplicate]

    11 septembre 2019, par dentex

    edit : I’m aware of the possible duplicate, but the answer it’s not directly applicable. I’m using ProcessBuilder and not Runtime.getRuntime().exec :

    public int execProcess(List<string> cmds, ShellUtils.ShellCallback sc) {    
       StringBuilder cmdlog = new StringBuilder();
       for (String cmd : cmds) {
            cmdlog.append(' ');
       }
       Utils.logger("v", cmdlog.toString(), DEBUG_TAG);

       ProcessBuilder pb = new ProcessBuilder();
       pb.directory(mBinFileDir);
       pb.command(cmds);

       Process process = null;
       int exitVal = 1; // Default error
       try {
           process = pb.start();

           StreamGobbler errorGobbler = new
           StreamGobbler(process.getErrorStream(), "ERROR", sc);

           StreamGobbler outputGobbler = new
           StreamGobbler(process.getInputStream(), "OUTPUT", sc);

           errorGobbler.start();
           outputGobbler.start();

           exitVal = process.waitFor();

           sc.processComplete(exitVal);

        } catch (Exception e) {
            Log.e(DEBUG_TAG, "Error executing ffmpeg command!", e);
        } finally {
            if (process != null) {
                Utils.logger("w", "destroyng process", DEBUG_TAG);
                process.destroy();
            }
       }
       return exitVal;
    }
    </string>

    I have two versions on FFmpeg compiled for android : with and without liblame enabled.

    When I load in /data/data/&lt;>/app_bin/ the FFmpeg binary compiled with NO lame support, it extracts audio from video without an issue. But when I use the one with lame support enabled, I get the error below into the log.

    Required libs, also compiled for android, are correctly loaded when shipped into the libs project folder with System.loadLibrary("lame").

    I was wondering if there is something else to do in order to properly make the FFmpeg binary find the libs.
    Those are the same libs given to the NDK to build the FFmpeg binary.

    D/dalvikvm(13741): Trying to load lib /data/app-lib/&lt;>/liblame.so 0x40ffed08
    D/dalvikvm(13741): Added shared lib /data/app-lib/&lt;>/liblame.so 0x40ffed08
    D/dalvikvm(13741): No JNI_OnLoad found in /data/app-lib/&lt;>/liblame.so 0x40ffed08, skipping init
    D/FfmpegController(13741): Trying to chmod '/data/data/&lt;>/app_bin/ffmpeg' to: 755
    V/FfmpegController(13741): /data/data/&lt;>/app_bin/ffmpeg -y -i /storage/sdcard0/Download/video.webm -vn -acodec copy /storage/sdcard0/Download/audio.ogg
    >>>>>> ---------- &lt;&lt;&lt;&lt;&lt;&lt;
    D/DownloadsService(13741): soinfo_link_image(linker.cpp:1673): could not load library "liblame.so" needed by "/data/data/&lt;>/app_bin/ffmpeg"; caused by load_library(linker.cpp:771): library "liblame.so" not foundCANNOT LINK EXECUTABLE
    >>>>>> ---------- &lt;&lt;&lt;&lt;&lt;&lt;
    I/DownloadsService(13741): FFmpeg process exit value: 255

    I’m not attaching code because it’s fairly straightforward :

    • download the FFmpeg binary (it’s not shipped with the app) ;
    • copy the binary from the download folder to /data/data/&lt;>/app_bin/ ;
    • chmod 755 ;
    • execute from there and read the output.

    Please comment if something else is required.

  • CANNOT LINK EXECUTABLE error with required libs loaded. How to link them properly ? [duplicate]

    4 avril 2013, par dentex

    edit : I'm aware of the possible duplicate, but the answer it's not directly applicable. I'm using ProcessBuilder and not Runtime.getRuntime().exec :

    public int execProcess(List<string> cmds, ShellUtils.ShellCallback sc) {    
       StringBuilder cmdlog = new StringBuilder();
       for (String cmd : cmds) {
            cmdlog.append(&#39; &#39;);
       }
       Utils.logger("v", cmdlog.toString(), DEBUG_TAG);

       ProcessBuilder pb = new ProcessBuilder();
       pb.directory(mBinFileDir);
       pb.command(cmds);

       Process process = null;
       int exitVal = 1; // Default error
       try {
           process = pb.start();

           StreamGobbler errorGobbler = new
           StreamGobbler(process.getErrorStream(), "ERROR", sc);

           StreamGobbler outputGobbler = new
           StreamGobbler(process.getInputStream(), "OUTPUT", sc);

           errorGobbler.start();
           outputGobbler.start();

           exitVal = process.waitFor();

           sc.processComplete(exitVal);

        } catch (Exception e) {
            Log.e(DEBUG_TAG, "Error executing ffmpeg command!", e);
        } finally {
            if (process != null) {
                Utils.logger("w", "destroyng process", DEBUG_TAG);
                process.destroy();
            }
       }
       return exitVal;
    }
    </string>

    I have two versions on FFmpeg compiled for android : with and without liblame enabled.

    When I load in /data/data/&lt;>/app_bin/ the FFmpeg binary compiled with NO lame support, it extracts audio from video without an issue. But when I use the one with lame support enabled, I get the error below into the log.

    Required libs, also compiled for android, are correctly loaded when shipped into the libs project folder with System.loadLibrary("lame").

    I was wondering if there is something else to do in order to properly make the FFmpeg binary find the libs.
    Those are the same libs given to the NDK to build the FFmpeg binary.

    D/dalvikvm(13741): Trying to load lib /data/app-lib/&lt;>/liblame.so 0x40ffed08
    D/dalvikvm(13741): Added shared lib /data/app-lib/&lt;>/liblame.so 0x40ffed08
    D/dalvikvm(13741): No JNI_OnLoad found in /data/app-lib/&lt;>/liblame.so 0x40ffed08, skipping init
    D/FfmpegController(13741): Trying to chmod &#39;/data/data/&lt;>/app_bin/ffmpeg&#39; to: 755
    V/FfmpegController(13741): /data/data/&lt;>/app_bin/ffmpeg -y -i /storage/sdcard0/Download/video.webm -vn -acodec copy /storage/sdcard0/Download/audio.ogg
    >>>>>> ---------- &lt;&lt;&lt;&lt;&lt;&lt;
    D/DownloadsService(13741): soinfo_link_image(linker.cpp:1673): could not load library "liblame.so" needed by "/data/data/&lt;>/app_bin/ffmpeg"; caused by load_library(linker.cpp:771): library "liblame.so" not foundCANNOT LINK EXECUTABLE
    >>>>>> ---------- &lt;&lt;&lt;&lt;&lt;&lt;
    I/DownloadsService(13741): FFmpeg process exit value: 255

    I'm not attaching code because it's fairly straightforward :

    • download the FFmpeg binary (it's not shipped with the app) ;
    • copy the binary from the download folder to /data/data/&lt;>/app_bin/ ;
    • chmod 755 ;
    • execute from there and read the output.

    Please comment if something else is required.

  • lavfi : replace link.closed by link.status.

    24 septembre 2015, par Nicolas George
    lavfi : replace link.closed by link.status.
    

    The status field can carry any error code instead of just EOF.
    Also only update it through a wrapper function and provide a timestamp.
    Update the few filters that used it directly.

    • [DH] libavfilter/avfilter.c
    • [DH] libavfilter/avfilter.h
    • [DH] libavfilter/buffersink.c
    • [DH] libavfilter/f_interleave.c
    • [DH] libavfilter/internal.h
    • [DH] libavfilter/split.c
    • [DH] libavfilter/trim.c
    • [DH] libavfilter/vf_extractplanes.c