Recherche avancée

Médias (1)

Mot : - Tags -/Rennes

Autres articles (112)

  • Les vidéos

    21 avril 2011, par

    Comme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
    Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
    Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Possibilité de déploiement en ferme

    12 avril 2011, par

    MediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
    Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...)

Sur d’autres sites (13634)

  • Code can not read property 1 of undefined [closed]

    25 mai 2023, par Jesse Copas

    I'm a very new programmer and am working on a Tdarr plugin in JS.
Everything works fine until a 4k file tries to get transcoded and it fails with this log

    


    2023-05-24T19:09:54.906Z ZoBKWMMKG:Node\[hidden-hog\]:Worker\[tall-tuna\]:{"pluginInputs":{"BitRate":"4000","ResolutionSelection":"1080p","Container":"mkv","AudioType":"AAC","FrameRate":"24"}}

2023-05-24T19:09:54.907Z ZoBKWMMKG:Node\[hidden-hog\]:Worker\[tall-tuna\]:Error TypeError: Cannot read property '1' of undefined


    


    It's saying that it's unable to read property 1 of undefined and I'm looked and looked and looked and can't find what it is referring to. Hoping to get another set of eyes on it
The plugin Code is here

    


    /* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
/* eslint-disable no-restricted-globals */
const details = () => ({
  id: 'Tdarr_Plugin_Jeso_AV1_HandBrake_Transcode',
  Stage: 'Pre-processing',
  Name: 'AV1 HandBrake Transcoder',
  Type: 'Video',
  Operation: 'Transcode',
  Description: 'Transcodes to AV1 at the selected Bitrate. This is best used with Remux Files.',
  Version: '2.1.3',
  Tags: 'HandBrake,configurable',
  Inputs: [
    {
      name: 'BitRate',
      type: 'string',
      defaultValue: '4000',
      inputUI: {
        type: 'text',
      },
      tooltip: `
        ~ Requested Bitrate ~ \\n
        Put in the Bitrate you want to process to in Kbps. For example 4000Kbps is 4Mbps. `,
    },
    {
      name: 'ResolutionSelection',
      type: 'string',
      defaultValue: '1080p',
      inputUI: {
        type: 'dropdown',
        options: [
          '8KUHD',
          '4KUHD',
          '1080p',
          '720p',
          '480p',
        ],
      },
      // eslint-disable-next-line max-len
      tooltip: 'Any Resolution larger than this will become this Resolution same as the bitrate if the Res is lower than the selected it will use the res of the file as to not cause bloating of file size.',
    },
    {
      name: 'Container',
      type: 'string',
      defaultValue: 'mkv',
      inputUI: {
        type: 'dropdown',
        options: [
          'mp4',
          'mkv',
        ],
      },
      tooltip: ` Container Type \\n\\n
          mkv or mp4.\\n`,
    },
    {
      name: 'AudioType',
      type: 'string',
      defaultValue: 'AAC',
      inputUI: {
        type: 'dropdown',
        options: [
          'AAC',
          'EAC3',
          'MP3',
          'Vorbis',
          'Flac16',
          'Flac24',
        ],
      },
      // eslint-disable-next-line max-len
      tooltip: 'Set Audio container type that you want to use',
    },
    {
      name: 'FrameRate',
      type: 'string',
      defaultValue: '24',
      inputUI: {
        type: 'text',
      },
      // eslint-disable-next-line max-len
      tooltip: 'If the files framerate is higher than 24 and you want to maintain that framerate you can do so here',
    },
  ],
});
const MediaInfo = {
  videoHeight: '',
  videoWidth: '',
  videoFPS: '',
  videoBR: '',
  videoBitDepth: '',
  overallBR: '',
  videoResolution: '',
}; // var MediaInfo
// Easier for our functions if response has global scope.
const response = {
  processFile: false,
  preset: '',
  container: '.mkv',
  handBrakeMode: true,
  FFmpegMode: false,
  reQueueAfter: true,
  infoLog: '',
}; // var response
// Finds the first video stream and populates some useful variables
function getMediaInfo(file) {
  let videoIdx = -1;
  for (let i = 0; i < file.ffProbeData.streams.length; i += 1) {
    const strstreamType = file.ffProbeData.streams[i].codec_type.toLowerCase();
    // Looking For Video
    // Check if stream is a video.
    if (videoIdx === -1 && strstreamType === 'video') {
      videoIdx = i;
      // get video streams resolution
      MediaInfo.videoResolution = `${file.ffProbeData.streams[i].height}x${file.ffProbeData.streams[i].width}`;
      MediaInfo.videoHeight = Number(file.ffProbeData.streams[i].height);
      MediaInfo.videoWidth = Number(file.ffProbeData.streams[i].width);
      MediaInfo.videoFPS = Number(file.mediaInfo.track[i + 1].FrameRate) || 25;
      // calulate bitrate from dimensions and fps of file
      MediaInfo.videoBR = (MediaInfo.videoHeight * MediaInfo.videoWidth * MediaInfo.videoFPS * 0.08).toFixed(0);
    }
  }
} // end  getMediaInfo()
// define resolution order from ResolutionSelection from biggest to smallest
const resolutionOrder = ['8KUHD', '4KUHD', '1080p', '720p', '480p'];
// define the width and height of each resolution from the resolution order
const resolutionsdimensions = {
  '8KUHD': '--width 7680 --height 4320',
  '4KUHD': '--width 3840 --height 2160',
  '1080p': '--width 1920 --height 1080',
  '720p': '--width 1280 --height 720',
  '480p': '--width 640 --height 480',
};
// eslint-disable-next-line no-unused-vars
const plugin = (file, librarySettings, inputs) => {
  // eslint-disable-next-line no-unused-vars
  const importFresh = require('import-fresh');
  // eslint-disable-next-line no-unused-vars
  const library = importFresh('../methods/library.js');
  // eslint-disable-next-line no-unused-vars
  const lib = require('../methods/lib')();
  // Get the selected resolution from the 'ResolutionSelection' variable
  const selectedResolution = inputs.ResolutionSelection;
  getMediaInfo(file);
  // use mediainfo to match height and width to a resolution on resolutiondimensions
  let dimensions = resolutionsdimensions[selectedResolution];
  // if the file is smaller than the selected resolution then use the file resolution
  if (MediaInfo.videoHeight < dimensions.split(' ')[3] || MediaInfo.videoWidth < dimensions.split(' ')[1]) {
    dimensions = `--width ${MediaInfo.videoWidth} --height ${MediaInfo.videoHeight}`;
    // eslint-disable-next-line brace-style
  }
  // read the bitrate of the video stream
  let videoBitRate = MediaInfo.videoBR;
  // if videoBitrate is over 1000000 devide by 100 to get the bitrate in Kbps
  if (videoBitRate > 1000000) {
    videoBitRate /= 100;
  } else { videoBitRate /= 1000; }
  // if VideoBitrate is smaller than selected bitrate then use the videoBitrate
  if (videoBitRate < inputs.BitRate) {
    // eslint-disable-next-line no-param-reassign
    inputs.BitRate = videoBitRate;
    // eslint-disable-next-line brace-style
  }
  // if VideoBitrate is larger than selected bitrate then use the selected bitrate
  else {
    // eslint-disable-next-line no-self-assign, no-param-reassign
    inputs.BitRate = inputs.BitRate;
  }

  //Skip Transcoding if File is already AV1
  if (file.ffProbeData.streams[0].codec_name === 'av1') {
    response.processFile = false;
    response.infoLog += 'File is already AV1 \n';
    return response;
  }
  // eslint-disable-next-line no-constant-condition
  if ((true) || file.forceProcessing === true) {
    // eslint-disable-next-line max-len
    response.preset = `--encoder svt_av1 -b ${inputs.BitRate} -r ${inputs.FrameRate} -E ${inputs.AudioType} -f ${inputs.Container} --no-optimize ${dimensions} --crop 0:0:0:0`;
    response.container = `.${inputs.Container}`;
    response.handbrakeMode = true;
    response.ffmpegMode = false;
    response.processFile = true;
    response.infoLog += `File is being transcoded at ${inputs.BitRate} Kbps to ${dimensions} as ${inputs.Container} \n`;
    return response;
  }
  response.infoLog += 'File is being transcoded using custom arguments \n';
  return response;
};
  };

module.exports.details = details;
module.exports.plugin = plugin;


    


    Tried transcoding 4k files down to 1080p but it fails due to that undefined error. All Res 1080p and lower that I have tried work correctly

    


    EDIT : I used Console.log and got this back

    


    [2023-05-24T23:29:51.001] [ERROR] Tdarr_Server - Error running MediaInfo 1&#xA;[2023-05-24T23:29:51.004] [ERROR] Tdarr_Server - RangeError: Maximum call stack size exceeded&#xA;    at x (<anonymous>:wasm-function[381]:0x15c4d)&#xA;    at <anonymous>:wasm-function[46]:0x5dc0&#xA;    at <anonymous>:wasm-function[652]:0x21cb9&#xA;    at <anonymous>:wasm-function[1023]:0x47018&#xA;    at <anonymous>:wasm-function[853]:0x37827&#xA;    at <anonymous>:wasm-function[3684]:0xf4884&#xA;    at <anonymous>:wasm-function[3516]:0xeb5b7&#xA;    at <anonymous>:wasm-function[1061]:0x487c9&#xA;    at <anonymous>:wasm-function[795]:0x3006d&#xA;    at <anonymous>:wasm-function[3628]:0xf01cc&#xA;[2023-05-24T23:29:51.006] [ERROR] Tdarr_Server - Error running MediaInfo 2&#xA;[2023-05-24T23:29:51.006] [ERROR] Tdarr_Server - RangeError: Maximum call stack size exceeded&#xA;    at x (<anonymous>:wasm-function[381]:0x15c4d)&#xA;    at <anonymous>:wasm-function[46]:0x5dc0&#xA;    at <anonymous>:wasm-function[652]:0x21cb9&#xA;    at <anonymous>:wasm-function[1023]:0x47018&#xA;    at <anonymous>:wasm-function[853]:0x37827&#xA;    at <anonymous>:wasm-function[3684]:0xf4884&#xA;    at <anonymous>:wasm-function[3516]:0xeb5b7&#xA;    at <anonymous>:wasm-function[1061]:0x487c9&#xA;    at <anonymous>:wasm-function[795]:0x3006d&#xA;    at <anonymous>:wasm-function[3628]:0xf01cc&#xA;[2023-05-24T23:29:58.220] [ERROR] Tdarr_Server - Error running MediaInfo 1&#xA;[2023-05-24T23:29:58.223] [ERROR] Tdarr_Server - RangeError: Maximum call stack size exceeded&#xA;    at x (<anonymous>:wasm-function[381]:0x15c4d)&#xA;    at <anonymous>:wasm-function[46]:0x5dc0&#xA;    at <anonymous>:wasm-function[652]:0x21cb9&#xA;    at <anonymous>:wasm-function[1023]:0x47018&#xA;    at <anonymous>:wasm-function[853]:0x37827&#xA;    at <anonymous>:wasm-function[3684]:0xf4884&#xA;    at <anonymous>:wasm-function[3516]:0xeb5b7&#xA;    at <anonymous>:wasm-function[1061]:0x487c9&#xA;    at <anonymous>:wasm-function[795]:0x3006d&#xA;    at <anonymous>:wasm-function[3628]:0xf01cc&#xA;[2023-05-24T23:29:58.224] [ERROR] Tdarr_Server - Error running MediaInfo 2&#xA;[2023-05-24T23:29:58.224] [ERROR] Tdarr_Server - RangeError: Maximum call stack size exceeded&#xA;    at x (<anonymous>:wasm-function[381]:0x15c4d)&#xA;    at <anonymous>:wasm-function[46]:0x5dc0&#xA;    at <anonymous>:wasm-function[652]:0x21cb9&#xA;    at <anonymous>:wasm-function[1023]:0x47018&#xA;    at <anonymous>:wasm-function[853]:0x37827&#xA;    at <anonymous>:wasm-function[3684]:0xf4884&#xA;    at <anonymous>:wasm-function[3516]:0xeb5b7&#xA;    at <anonymous>:wasm-function[1061]:0x487c9&#xA;    at <anonymous>:wasm-function[795]:0x3006d&#xA;    at <anonymous>:wasm-function[3628]:0xf01cc&#xA;</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous>

    &#xA;

  • Flask app using OpenCv crash when i start recording

    17 mai 2023, par Mulham Darwish

    I build this flask app to live stream security cameras and the live stream works with the screenshot function but when start recording it crash but few times same code it worked and saved the video here the code. with the html file using js.

    &#xA;

    from flask import Flask, render_template, Response, request&#xA;import cv2&#xA;import os&#xA;import time&#xA;import threading&#xA;import requests&#xA;&#xA;app = Flask(__name__)&#xA;&#xA;# Define the IP cameras&#xA;cameras = [&#xA;    {&#x27;url&#x27;: &#x27;rtsp://****:*****@******&#x27;, &#x27;name&#x27;: &#x27;Camera 1&#x27;},&#xA;    {&#x27;url&#x27;: &#x27;rtsp://****:*****@******&#x27;, &#x27;name&#x27;: &#x27;Camera 2&#x27;},&#xA;    {&#x27;url&#x27;: &#x27;rtsp://****:*****@******&#x27;, &#x27;name&#x27;: &#x27;Camera 3&#x27;},&#xA;    {&#x27;url&#x27;: &#x27;rtsp://****:*****@******&#x27;, &#x27;name&#x27;: &#x27;Camera 4&#x27;}&#xA;]&#xA;&#xA;# Create a VideoCapture object for each camera&#xA;capture_objs = [cv2.VideoCapture(cam[&#x27;url&#x27;]) for cam in cameras]&#xA;stop_events = {i: threading.Event() for i in range(len(cameras))}&#xA;# Define the directory to save the recorded videos&#xA;recording_dir = os.path.join(os.getcwd(), &#x27;recordings&#x27;)&#xA;&#xA;# Ensure the recording directory exists&#xA;if not os.path.exists(recording_dir):&#xA;    os.makedirs(recording_dir)&#xA;&#xA;# Define the function to capture and save a video&#xA;def record_video(camera_index, stop_recording):&#xA;    # Define the codec and file extension&#xA;    fourcc = cv2.VideoWriter_fourcc(*&#x27;mp4v&#x27;)&#xA;    file_extension = &#x27;.mp4&#x27;&#xA;&#xA;    # Get the current timestamp for the filename&#xA;    timestamp = time.strftime("%Y%m%d-%H%M%S")&#xA;&#xA;    # Define the filename and path&#xA;    filename = f&#x27;{cameras[camera_index]["name"]}_{timestamp}{file_extension}&#x27;&#xA;    filepath = os.path.join(recording_dir, filename)&#xA;&#xA;    # Create a VideoWriter object to save the video&#xA;    width = int(capture_objs[camera_index].get(cv2.CAP_PROP_FRAME_WIDTH))&#xA;    height = int(capture_objs[camera_index].get(cv2.CAP_PROP_FRAME_HEIGHT))&#xA;    fps = int(capture_objs[camera_index].get(cv2.CAP_PROP_FPS))&#xA;    video_writer = cv2.VideoWriter(filepath, fourcc, fps, (width, height))&#xA;&#xA;    # Capture frames and write them to the file&#xA;    while True:&#xA;        if stop_recording.is_set():&#xA;            break  # stop recording if stop_recording is set&#xA;        ret, frame = capture_objs[camera_index].read()&#xA;        if ret:&#xA;            video_writer.write(frame)&#xA;        else:&#xA;            break&#xA;&#xA;    # Release the VideoWriter object and the VideoCapture object&#xA;    video_writer.release()&#xA;    capture_objs[camera_index].release()&#xA;&#xA;@app.route(&#x27;/&#x27;)&#xA;def index():&#xA;    # Render the index page with the list of cameras&#xA;    return render_template(&#x27;index.html&#x27;, cameras=cameras)&#xA;&#xA;def generate(camera_index):&#xA;    # Generate frames from the video feed&#xA;    while True:&#xA;        ret, frame = capture_objs[camera_index].read()&#xA;        if not ret:&#xA;            break&#xA;&#xA;        # Encode the frame as JPEG&#xA;        _, jpeg = cv2.imencode(&#x27;.jpg&#x27;, frame)&#xA;&#xA;        # Yield the frame as a Flask response&#xA;        yield (b&#x27;--frame\r\n&#x27;&#xA;               b&#x27;Content-Type: image/jpeg\r\n\r\n&#x27; &#x2B; jpeg.tobytes() &#x2B; b&#x27;\r\n&#x27;)&#xA;&#xA;@app.route(&#x27;/video_feed&#x27;)&#xA;def video_feed():&#xA;    # Get the camera index from the request arguments&#xA;    camera_index = int(request.args.get(&#x27;camera_index&#x27;))&#xA;&#xA;    # Generate the video feed&#xA;    return Response(generate(camera_index),&#xA;                    mimetype=&#x27;multipart/x-mixed-replace; boundary=frame&#x27;)&#xA;&#xA;@app.route(&#x27;/record&#x27;, methods=[&#x27;POST&#x27;])&#xA;def record():&#xA;    # Get the camera index from the request form&#xA;    camera_index = int(request.form[&#x27;camera_index&#x27;])&#xA;&#xA;    stop_recording = stop_events[camera_index]  # get the stop_recording event for the camera&#xA;    thread = threading.Thread(target=record_video, args=(camera_index, stop_recording))&#xA;    thread.start()  # start a thread to record video&#xA;&#xA;    # Return a response indicating that the recording has started&#xA;    return &#x27;Recording started.&#x27;&#xA;&#xA;@app.route(&#x27;/stop_record&#x27;, methods=[&#x27;POST&#x27;])&#xA;def stop_record():&#xA;    # Get the camera index from the request form&#xA;    camera_index = int(request.form[&#x27;camera_index&#x27;])&#xA;&#xA;    # Set the stop_recording event for the corresponding camera thread&#xA;    stop_events[camera_index].set()&#xA;&#xA;    # Return a response indicating that recording has been stopped&#xA;    return &#x27;Recording stopped.&#x27;&#xA;&#xA;@app.route(&#x27;/screenshot&#x27;, methods=[&#x27;POST&#x27;])&#xA;def take_screenshot():&#xA;    # Take a screenshot of the video stream and save it as a file&#xA;    camera = capture_objs[int(request.form[&#x27;camera_id&#x27;])]&#xA;    success, frame = camera.read()&#xA;    if success:&#xA;        timestamp = time.strftime("%Y%m%d-%H%M%S")&#xA;        filename = f&#x27;screenshot_{timestamp}.jpg&#x27;&#xA;        cv2.imwrite(filename, frame)&#xA;        return &#x27;Screenshot taken and saved&#x27;&#xA;    else:&#xA;        return &#x27;Failed to take screenshot&#x27;&#xA;&#xA;if __name__ == &#x27;__main__&#x27;:&#xA;    app.run()&#xA;

    &#xA;

    I tried to update ffmpeg to the latest version and installed pip install opencv-python-headless and installed pip install opencv-python but most of the time i come to this crash code

    &#xA;

    * Serving Flask app &#x27;run&#x27;&#xA;* Debug mode: off&#xA;WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.&#xA; * Running on http://127.0.0.1:5000&#xA;Press CTRL&#x2B;C to quit&#xA;127.0.0.1 - - [17/May/2023 13:24:11] "GET / HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:11] "GET /video_feed?camera_index=0 HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:11] "GET /video_feed?camera_index=1 HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:11] "GET /video_feed?camera_index=2 HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:11] "GET /video_feed?camera_index=3 HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:44] "GET / HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:45] "GET /video_feed?camera_index=3 HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:45] "GET /video_feed?camera_index=0 HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:45] "GET /video_feed?camera_index=1 HTTP/1.1" 200 -&#xA;127.0.0.1 - - [17/May/2023 13:24:45] "GET /video_feed?camera_index=2 HTTP/1.1" 200 -&#xA;[h264 @ 0x5605285fc5c0] error while decoding MB 28 29, bytestream -9&#xA;[h264 @ 0x560529110040] error while decoding MB 15 37, bytestream -6&#xA;[h264 @ 0x560528624980] error while decoding MB 45 45, bytestream -23&#xA;[h264 @ 0x5605286f1900] error while decoding MB 50 34, bytestream -7&#xA;[h264 @ 0x5605285fc5c0] error while decoding MB 25 9, bytestream -17&#xA;[h264 @ 0x5605292b0080] error while decoding MB 28 41, bytestream -5&#xA;[h264 @ 0x560528660040] error while decoding MB 101 45, bytestream -17&#xA;[h264 @ 0x5605285fc5c0] error while decoding MB 42 44, bytestream -5&#xA;[h264 @ 0x5605286f1900] error while decoding MB 118 42, bytestream -9&#xA;[h264 @ 0x560529110040] error while decoding MB 92 43, bytestream -5&#xA;[h264 @ 0x560528660040] error while decoding MB 99 34, bytestream -11&#xA;[h264 @ 0x56052932b0c0] error while decoding MB 92 36, bytestream -13&#xA;[h264 @ 0x560528667ac0] error while decoding MB 44 54, bytestream -5&#xA;[h264 @ 0x560529110040] error while decoding MB 93 33, bytestream -7&#xA;[h264 @ 0x5605286dd880] error while decoding MB 27 37, bytestream -19&#xA;[h264 @ 0x560528660040] error while decoding MB 66 56, bytestream -9&#xA;127.0.0.1 - - [17/May/2023 13:36:45] "POST /record HTTP/1.1" 200 -&#xA;Assertion fctx->async_lock failed at libavcodec/pthread_frame.c:175&#xA;Aborted (core dumped)&#xA;

    &#xA;

  • Mingw-w64 - printf does not work

    27 décembre 2013, par Gosha U.

    First I wanted to modificate ffplay according to my requirments. Then I noticed that original ffplay from my build can't play some video files, but it didn't write any message to console. Then I noticed that ffmpeg also don't write any usage message when I run it without params. But it works. If I run it from terminal it's like running asynchronously ! The terminal just shows next row. I mean it asks for a next command. But the ffmpeg process is visible in task manager and it writes the output video file what I had requested !

    I created following souce file. I have modified the Makefile. So it have built the exe-file works just the same way. I have no idea how it can be.

    #include
    #include "cmdutils.h"

    const char program_name[] = "hello";
    const int program_birth_year = 2013;

    void show_help_default(const char *opt, const char *arg)
    {
       printf("zxcvbnm\n");
    }

    int main(int argc, char **argv)
    {
       printf("1234567890\n");
       return 0;
    }

    And after that I created real hello world app with MinGW-w64 and qmake without eny extra libs. And its printf does not work.

    I want to prevent this behavior.

    I want to make printf working in traditional manner.

    How I build FFmpeg :

    PKG_CONFIG_PATH=/home/developer/workspace/MinGW32fs/lib/pkgconfig/ \
    SDL_CONFIG=/home/developer/workspace/MinGW32fs/bin/sdl-config \
    ./configure \
     --prefix=/home/developer/workspace/MinGW32fs \
     --extra-ldflags="-L/home/developer/workspace/MinGW32fs/lib" \
     --extra-cflags="-I/home/developer/workspace/MinGW32fs/include" \
     --arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32-  \
     --pkg-config=pkg-config   --enable-libtheora --enable-libvorbis --enable-libvpx \
     --enable-outdev=sdl --enable-shared --disable-static \
     --disable-doc --disable-manpages --disable-podpages

    make