Recherche avancée

Médias (0)

Mot : - Tags -/formulaire

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (103)

  • XMP PHP

    13 mai 2011, par

    Dixit Wikipedia, XMP signifie :
    Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
    Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
    XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)

  • HTML5 audio and video support

    13 avril 2011, par

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

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (13017)

  • RTP Timestamps Are Not Monotonically increasing

    25 août 2019, par Fr0sty

    I am finding it a bit difficult trying to understand whether or not the hack around with FFmpeg and OpenCV really provided a RTP timestamp. My last post helped a little bit but got me stuck in trying to validate the timestamps obtained through this work around by modifying ffmpeg and opencv.

    FFmpeg version : 4.1.0
    OpenCV version : 3.4.1

    import cv2
    import time
    from datetime import datetime, date

    uri = 'rtsp://admin:password@192.168.1.66:554/Streaming/Channels/101'
    cap = cv2.VideoCapture(uri)
    '''One is the offset between the two epochs. Unix uses an epoch located at 1/1/1970-00:00h (UTC) and NTP uses 1/1/1900-00:00h.
    This leads to an offset equivalent to 70 years in seconds (there are 17 leap years between the two dates so the offset is'''
    time_offset = 2208988800 # (70*365 + 17)*86400 = 2208988800 (in seconds)
    # offset = 3775484294
    days = 43697
    pdat = "1900-01-01 00:00:00:00"
    mdat = "2019-08-23 22:02:44:00" # str(datetime.now()) + str(datetime.now().time())
    pdate = datetime.strptime(pdat, "%Y-%m-%d %H:%M:%S:%f").date()
    mdate = datetime.strptime(mdat, "%Y-%m-%d %H:%M:%S:%f").date()
    delta = (mdate - pdate).days
    offset = delta * 86400
    def time_delta(s):
       return (s - time_offset)

    while True:
       frame_exists, curr_frame = cap.read()
       if frame_exists:
           seconds = cap.getRTPTimeStampSeconds()
           fraction = cap.getRTPTimeStampFraction()
           timestamp = cap.getRTPTimeStampTs()
           unix_offset = seconds - time_offset
           msec = int((int(fraction) / 0xFFFFFFFF) * 1000.0)
           ts = float(str(unix_offset) + "." + str(msec))
           # print("Timestamp per Frame:%i" % timestamp)
           print((datetime.fromtimestamp(float(ts) + offset)))
    cap.release()

    My Output :

    On August 23, 2019 at 22:02

    ...
    2019-08-23 13:59:52.781000
    2019-08-23 13:59:52.726000
    2019-08-23 13:59:52.671000
    2019-08-23 13:59:52.616000
    2019-08-23 13:59:52.561000
    2019-08-23 13:59:52.506000
    2019-08-23 13:59:52.451000
    2019-08-23 13:59:52.396000
    2019-08-23 13:59:52.342000
    2019-08-23 13:59:52.287000
    2019-08-23 13:59:52.232000
    2019-08-23 13:59:52.177000
    2019-08-23 13:59:52.122000
    2019-08-23 13:59:52.067000
    2019-08-23 13:59:52.012000
    2019-08-23 13:59:53.570000
    2019-08-23 13:59:53.020000
    2019-08-23 13:59:53.847000
    2019-08-23 13:59:53.792000

    I’ve noticed how the time increments weirdly (that’s not suppose to happen in the real, current time), such as the last two lines and a few others in between in the output. A bit flabbergasted as to what went wrong. Also trying this out on multiple IP cameras, with each showing a different timestamp probably related to when they were turned on.

  • ffmpeg m4a/m4b/mp4 output file's "Time" value is incorrect when read into iTunes

    2 juin 2019, par PistoletPierre

    I’m using ffmpeg to convert audiobooks to m4a/m4b/mp4. All seems to work until trying to play them in iTunes. It plays in VLC, QuickTime, and MacOS’s Quicklook without issue.

    "So why are you posting here ? This isn’t an iTunes forum."

    I’m hoping this is iTunes being picky about file formats and that I can add some magic argument to my ffmpeg command and have it spit out something that iTunes can read.

    Below is the bash function I’m using to do the conversion. I’ve tried m4a/mp4/m4b as values for TEMP_FILE_EXTENSION and tried opening the intermediate file as well. It’s always the same corrupted "Time" value when you put it in iTunes.

    dedrm_audible () {
     # Check for AtomicParsley, ffmpeg, and 3 args
     if (! type AtomicParsley >/dev/null 2>/dev/null) || (! type ffmpeg >/dev/null 2>/dev/null) || [ ! $# -eq 3 ]; then
       echo "Usage:"
       echo "    dedrm_audible <path to="to"> <activation bytes="bytes"> <path to="to" output="output" file="file">"
       echo "    Note: AtomicParsley and ffmpeg must be in PATH variable"
       return
     fi
     local ORIGINAL_PWD="$(pwd)"
     local TEMP_DIR="/tmp/audible"
     local AUDIOBOOK_FILE="$1"
     local ACTIVATION_BYTES="$2"
     local OUTPUT_FILE="$3"
     local FULL_AUDIOBOOK_PATH="$(realpath "${AUDIOBOOK_FILE}")"
     local OUTPUT_PATH="$(realpath "${OUTPUT_FILE}")"
     local TEMP_FILE_EXTENSION="m4a"

     mkdir -p "${TEMP_DIR}"
     cd "${TEMP_DIR}"

     # Extract the book cover
     ffmpeg -activation_bytes "${ACTIVATION_BYTES}" -i "${FULL_AUDIOBOOK_PATH}" -vcodec copy artwork.png
     # Convert the audio
     ffmpeg -activation_bytes "${ACTIVATION_BYTES}" -i "${FULL_AUDIOBOOK_PATH}" -vn -c:a copy -v debug output.${TEMP_FILE_EXTENSION}
     # Add the cover to the new file
     AtomicParsley output.${TEMP_FILE_EXTENSION} --artwork artwork.png --overWrite

     # Put it where you want it and clean up
     cp output.${TEMP_FILE_EXTENSION} "${OUTPUT_PATH}"
     rm artwork.png
     rm output.${TEMP_FILE_EXTENSION}
     cd "${ORIGINAL_PWD}"
    }
    </path></activation></path>

    It goes off without a hitch. The new file is there waiting for me, with all the metadata including the cover when I do a "Get Info" or "Quick look" on it (I’m on MacOS). But when opening it and trying to play it in iTunes, the "time" field is way off and it immediately skips to the next song/audiobook in the queue.

    Attempts to convert it within iTunes fail immediately - too quickly to see what’s happening. The errors in the console simply say "Assert failure :" (with nothing after the colon).

    edit : Tommy answered the question. Here’s a working bash function :

    dedrm_audible () {
     # Check for AtomicParsley, ffmpeg, and 3 args
     if (! type AtomicParsley >/dev/null 2>/dev/null) || (! type ffmpeg >/dev/null 2>/dev/null) || [ ! $# -eq 3 ]; then
       echo "Usage:"
       echo "    dedrm_audible <path to="to"> <activation bytes="bytes"> <path to="to" output="output" file="file">"
       echo "    Note: AtomicParsley and ffmpeg must be in PATH variable"
       return
     fi
     local ORIGINAL_PWD="$(pwd)"
     local TEMP_DIR="/tmp/audible"
     local AUDIOBOOK_FILE="$1"
     local ACTIVATION_BYTES="$2"
     local OUTPUT_FILE="$3"
     # Alternative to realpath (since I read somewhere that it's not there by default on some systems): OUTPUT_PATH="$( cd "$( dirname "$OUTPUT_FILE" )" &amp;&amp; pwd )"
     local FULL_AUDIOBOOK_PATH="$(realpath "${AUDIOBOOK_FILE}")"
     local AUDIOBOOK_NAME="${$(basename "${FULL_AUDIOBOOK_PATH}")%.aax}.m4a"
     local OUTPUT_PATH="$(realpath "${OUTPUT_FILE}")"
     local TEMP_FILE_EXTENSION="m4a"

     mkdir -p "${TEMP_DIR}"
     cd "${TEMP_DIR}"

     cp "${FULL_AUDIOBOOK_PATH}" "${AUDIOBOOK_NAME}"

     # Extract the book cover
     ffmpeg -activation_bytes "${ACTIVATION_BYTES}" -i "${AUDIOBOOK_NAME}" -vcodec copy artwork.png
     # Convert the audio
     ffmpeg -activation_bytes "${ACTIVATION_BYTES}" -i "${AUDIOBOOK_NAME}" -vn -c:a copy -v debug output.${TEMP_FILE_EXTENSION}
     # Add the cover to the new file
     AtomicParsley output.${TEMP_FILE_EXTENSION} --artwork artwork.png --overWrite

     # Put it where you want it and clean up
     mv output.${TEMP_FILE_EXTENSION} "${OUTPUT_PATH}"
     rm artwork.png
     rm "${AUDIOBOOK_NAME}"
     cd "${ORIGINAL_PWD}"
    }
    </path></activation></path>
  • Mix additional audio file with video(+audio) in ffmpeg

    21 mai 2019, par Serg

    I’m trying to mix additional audio file with video which has also audio within. But the problem is that I already have complex ffmpeg command and don’t know how to combine them together.

    This is my existing ffmpeg command which uses some offsets and replaces additional audio file with embedded one (audio inside video) and also overlays few gauges and watermark to the video.

    ffmpeg -y
    -ss 00:00:01:213 -i videoFile.mp4
    -ss 00:00:03:435 -i audioFile.wav
    -i watermark.png
    -framerate 6 -i gauge1_path/img-%04d.png
    -framerate 1 -i gauge2_path/img-%04d.png
    -framerate 2 -i gauge3_path/img-%04d.png
    -framerate 2 -i gauge4_path/img-%04d.png
    -framerate 2 -i gauge5_path/img-%04d.png
    -framerate 2 -i gauge6_path/img-%04d.png
    -filter_complex [0][2]overlay=(21):(H-h-21)[ovr0];
    [ovr0][3]overlay=(W-w-21):(H-h-21)[ovr1];
    [ovr1][4]overlay=(W-w-21):(H-h-333)[ovr2];
    [ovr2][5]overlay=(W-w-21):(H-h-418)[ovr3];
    [ovr3][6]overlay=(W-w-21):(H-h-503)[ovr4];
    [ovr4][7]overlay=(W-w-21):(H-h-588)[ovr5];
    [ovr5][8]overlay=(W-w-21):(H-h-673)
    -map 0:v -map 1:a -c:v libx264 -preset ultrafast -crf 23 -t 00:5:10:000 output.mp4

    Now I would like to use ffmpeg's amix in order to mix both audios instead of replacing them, if possible with ability to set volumes. But official documentation amix says nothing about volume.

    Separately both seems to work ok.

    ffmpeg -y -i video.mp4 -i audio.mp3 -filter_complex [0][1]amix=inputs=2[a] -map 0:v -map [a] -c:v copy output.mp4

    and

    ffmpeg -y -i video.mp4 -i audio.mp3 -i watermark.png -filter_complex [0][2]overlay=(21):(H-h-21)[ovr0] -map [ovr0]:v -map 1:a -c:v libx264 -preset ultrafast -crf 23 output.mp4

    but together

    ffmpeg -y -i video.mp4 -i audio.mp3 -i watermark.png -filter_complex [0][1]amix=inputs=2[a];[a][2]overlay=(21):(H-h-21)[ovr0] -map [ovr0]:v -map [a] -c:v libx264 -preset ultrafast -crf 23 output.mp4

    I’m getting an error :

    ffmpeg version N-93886-gfbdb3aa179 Copyright (c) 2000-2019 the FFmpeg developers
     built with gcc 8.3.1 (GCC) 20190414
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
     libavutil      56. 28.100 / 56. 28.100
     libavcodec     58. 52.101 / 58. 52.101
     libavformat    58. 27.103 / 58. 27.103
     libavdevice    58.  7.100 / 58.  7.100
     libavfilter     7. 53.101 /  7. 53.101
     libswscale      5.  4.101 /  5.  4.101
     libswresample   3.  4.100 /  3.  4.100
     libpostproc    55.  4.100 / 55.  4.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
     Metadata:
       major_brand     : isom
       minor_version   : 512
       compatible_brands: isomiso2avc1mp41
       creation_time   : 1970-01-01T00:00:00.000000Z
       encoder         : Lavf53.24.2
     Duration: 00:00:29.57, start: 0.000000, bitrate: 1421 kb/s
       Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1032 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
       Metadata:
         creation_time   : 1970-01-01T00:00:00.000000Z
         handler_name    : VideoHandler
       Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 383 kb/s (default)
       Metadata:
         creation_time   : 1970-01-01T00:00:00.000000Z
         handler_name    : SoundHandler
    [mp3 @ 0000015e2f934ec0] Estimating duration from bitrate, this may be inaccurate
    Input #1, mp3, from 'audio.mp3':
     Duration: 00:00:45.33, start: 0.000000, bitrate: 128 kb/s
       Stream #1:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s
    Input #2, png_pipe, from 'watermark.png':
     Duration: N/A, bitrate: N/A
       Stream #2:0: Video: png, rgb24(pc), 100x56 [SAR 3779:3779 DAR 25:14], 25 tbr, 25 tbn, 25 tbc
    [Parsed_amix_0 @ 0000015e2ff2e940] Media type mismatch between the 'Parsed_amix_0' filter output pad 0 (audio) and the 'Parsed_overlay_1' filter input pad 0 (video)
    [AVFilterGraph @ 0000015e2f91c600] Cannot create the link amix:0 -> overlay:0
    Error initializing complex filters.
    Invalid argument

    So my question : whether it’s possible to combine amix and overlay together and how and in which order they should be used ? Or should I look something different because amix unable to set volume levels ?

    Thanks in advance !