Recherche avancée

Médias (1)

Mot : - Tags -/intégration

Autres articles (83)

  • Organiser par catégorie

    17 mai 2013, par

    Dans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
    Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
    Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...)

  • Récupération d’informations sur le site maître à l’installation d’une instance

    26 novembre 2010, par

    Utilité
    Sur le site principal, une instance de mutualisation est définie par plusieurs choses : Les données dans la table spip_mutus ; Son logo ; Son auteur principal (id_admin dans la table spip_mutus correspondant à un id_auteur de la table spip_auteurs)qui sera le seul à pouvoir créer définitivement l’instance de mutualisation ;
    Il peut donc être tout à fait judicieux de vouloir récupérer certaines de ces informations afin de compléter l’installation d’une instance pour, par exemple : récupérer le (...)

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

Sur d’autres sites (8270)

  • node.js ffmpeg spawn child_process unexpected data output and not possible to kill or stop

    1er septembre 2021, par PLNR

    
I'm rather new to backend stuff, so please excuse, if my question is trivial.
    
For an Intranet project, I want to present a video element in a webpage (React, HLS.js Player) with the possibility reload the stream in case it hung.
    
The video sources are mpeg-ts streams delivered as udp multicast.
    
A small node.js / express server should handle the ffmpeg commands, to transcode the multicast to hls to display them in a browser.
    

    
My Problem is, that I am unable to stop the process...
    
I've tried to SIGINT, SIGTERM the process with it's pid, but the encoding is just going on.

    


    Here is the code I wrote for transcoding so far :

    


    const express = require("express");
const { spawn, exec } = require("child_process");
const cors = require("cors");
const process = require("process")

let ls;
let pid;

const app = express();

app.use(cors());

app.get('/cam/:source', (body) => {
    const cam = body.params.source;
    console.log(cam);

    let source = "udp://239.1.1.1:4444";
    let stream = "/var/www/html/streams/tmp/cam1.m3u8"


    stream = spawn("ffmpeg", ["-re", "-i", source, "-c:v", "libx264", "-crf", "21", "-preset", "veryfast", "-c:a", "aac", "-b:a", "128k", "-ac", "2", "-f", "hls", "-hls_list_size", "5", "-hls_flags", "delete_segments", stream], {detached: true});

    pid = stream.pid;

    stream.stdout.on("data", data => {
        console.log(`stdout: ${data}`);
    });

    stream.stderr.on("data", data => {
        console.log(`stderr: ${data}`);
        console.log("pid: ", pid);
    });

    stream.on("error", error => {
        console.log(`error: ${error.message}`);
    });

    stream.on("close", code => {
        console.log(`child process exited with code ${code}`);
    });
})

app.get('/cam/quit', () => {
    process.kill(pid, 'SIGINT')
})

app.listen(5000, ()=> {
    console.log('Listening');
})


    


    On requesting the /cam/quit i would expect the process to stop... but it doesn't.
    
I've tried :

    


    app.get('/cam/quit', () => {
    process.kill(pid, 'SIGINT')
})


    


    app.get('/cam/quit', () => {
    process.kill(stream.pid, 'SIGINT')
})


    


    app.get('/cam/quit', () => {
    stream.kill(pid, 'SIGINT')
})


    


    app.get('/cam/quit', () => {
    stream.kill(0, 'SIGINT')
})


    


    But none of this worked... do I miss something ? Is there something I need to change ?

    


    Problem 2 - Output :
    
The output is emitted on stderr... even the process is working as expected.
    
This is maybe only cosmetics, but it makes me wondering.
    
Here is the terminal output :

    


    [nodemon] starting `node server.js`
Listening
camera stream reloaded
stderr: ffmpeg version 4.3.2-0+deb11u1ubuntu1 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10 (Ubuntu 10.2.1-20ubuntu1)
  configuration: --prefix=/usr --extra-version=0+deb11u1ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --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-librsvg --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-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100

pid:  4206
stderr: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'udp://239.1.1.1':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 
pid:  4206
stderr: 1970-01-01T00:00:00.000000Z
    encoder         : Lavf52.54.0
  Duration: 01:55:59.20, start: 0.000000, bitrate: 1436 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 720x384 [SAR 1:1 DAR 15:8], 1272 kb/s, 25 fps, 25 tbr, 25 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, stereo, fltp, 159 kb/s (default)
    Metadata:
      creation_time   : 1970-01-01T00:00:00.000000Z
      handler_name    : SoundHandler

pid:  4206
stderr: Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help

pid:  4206
stderr: [libx264 @ 0x5616b38b5440] using SAR=1/1

pid:  4206
stderr: [libx264 @ 0x5616b38b5440] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2

pid:  4206
stderr: [libx264 @ 0x5616b38b5440] profile High, level 3.0, 4:2:0, 8-bit

pid:  4206
stderr: [libx264 @ 0x5616b38b5440] 264 - core 160 r3011 cde9a93 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=6 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf mbtree=1 crf=21.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, hls, to '/var/www/html/streams/tmp/aft.m3u8':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
    Stream #0:0(und): Video: h264 (libx264), yuv420p, 720x384 [SAR 1:1 DAR 15:8], q=-1--1, 25 fps, 90k tbn, 25 tbc (default)
    Metadata:
      creation_time   : 1970-01-01T00:00:00.000000Z
      handler_name    : VideoHandler
      encoder         : Lavc58.91.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
    Stream #0:1(und): Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      creation_time   : 1970-01-01T00:00:00.000000Z
      handler_name    : SoundHandler
      encoder         : Lavc58.91.100 aac

pid:  4206
stderr: frame=    8 fps=0.0 q=0.0 size=N/A time=00:00:00.46 bitrate=N/A speed=0.931x    
pid:  4206
stderr: frame=   21 fps= 21 q=26.0 size=N/A time=00:00:00.96 bitrate=N/A speed=0.95x    
pid:  4206
stderr: frame=   33 fps= 22 q=26.0 size=N/A time=00:00:01.49 bitrate=N/A speed=0.982x    
pid:  4206
stderr: frame=   46 fps= 23 q=26.0 size=N/A time=00:00:02.00 bitrate=N/A speed=0.989x    
pid:  4206
stderr: frame=   58 fps= 23 q=26.0 size=N/A time=00:00:02.49 bitrate=N/A speed=0.986x    
pid:  4206


    


    and so on...
    

    
Any help would be highly appreciated !
    
Many thanks in advance

    


  • VB.NET FFMPEG Stops

    18 mars 2012, par Mcqueen_23

    Hi evryone i'm trying to convert files using ffmpeg

    my codes only fetched


    — -Skip--- Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Enrique Iglesias - Tonight.mp4' : Metadata : major_brand : mp42 minor_version : 0 compatible_brands : isommp42 creation_time : 2011-03-20 19:07:02 Duration : 00:03:50.05, start : 0.000000, bitrate : 219 kb/s Stream #0.0(und) : Video : h264, yuv420p, 480x360 [PAR 1:1 DAR 4:3], 117 kb/s, 29.97 fps, 59.75 tbr, 1k tbn, 59.83 tbc Metadata : creation_time : 1970-01-01 00:00:00 Stream #0.1(und) : Audio : aac, 44100 Hz, stereo, s16, 95 kb/s Metadata : creation_time : 2011-03-20 19:07:03 Output #0, mp3, to 'Enrique Iglesias - Tonight.mp3' : Metadata : major_brand : mp42 minor_version : 0 compatible_brands : isommp42 TDEN : 2011-03-20 19:07:02 TSSE : Lavf52.94.0 Stream #0.0(und) : Audio : libmp3lame, 44100 Hz, stereo, s16, 64 kb/s Metadata : creation_time : 2011-03-20 19:07:03

    and cannot i cannot get the next lines ung Proccess.ErrorDataReceived event

    Here are my Codes

       Public Structure ItemStruct
           Public ID, URL, FileName, FileExt, ConvertExt, ConvertQuery As String
           Public FileSize As Int64
           Public Method, status As Method
           Public prog_bar As ProgressBar
           Public DeleteOrigin, TrimStart, TrimEnd As Boolean
       End Structure

       Friend Class Converter
           Public busy As Boolean = False
           Private _Item As ItemStruct
           Public Event ProgressChange(ByVal id As String, ByVal percent As Integer, ByVal etr As TimeSpan)
           Public Event ConvertFinish(ByVal id As String)
           Private m As Threading.Thread
           Private WithEvents timer As New Timer With {.Interval = 100}

           Public Sub New()
           End Sub

           Public Sub New(ByVal item As ItemStruct)
               _Item = item
               m = New Threading.Thread(AddressOf Convert)
           End Sub

           Public Sub Start()
               m.Start()
               timer.Start()
           End Sub

           Private duration As Decimal = 0.0F
           Private current As Decimal = 0.0F
           Private varIsSet As Boolean = False
           Private Sub Convert()
               Dim cmd As String = _Item.ConvertQuery
               Dim inputName As String = _Item.URL
               Dim fName As String = _Item.FileName & _Item.FileExt
               Dim dir As String = _Item.URL.Replace(fName, "")
               Dim ouputName As String = dir & _Item.FileName & "." & _Item.ConvertExt
               cmd = Replace(cmd, "--i", inputName)
               cmd = Replace(cmd, "--o", ouputName)
               cmd = cmd.Remove(0, 6)
               cmd = cmd.Trim
               Dim proc As New Process
               With proc.StartInfo
                   .FileName = Path.Combine(Application.StartupPath, "ffmpeg.exe")
                   .Arguments = cmd
                   proc.EnableRaisingEvents = False
                   .UseShellExecute = False
                   .CreateNoWindow = True
                   .RedirectStandardError = True
                   .RedirectStandardOutput = True
                   .RedirectStandardInput = True
                   AddHandler proc.ErrorDataReceived, AddressOf UpdateData
                   proc.Start()
                   proc.BeginErrorReadLine()
               End With
           End Sub

           Public Sub Cancel()
               m.Abort()
           End Sub

           Private Sub UpdateData(ByVal sender As Object, ByVal e As DataReceivedEventArgs)
               Dim s As String = e.Data
               If s.Contains("Duration: ") Then
                   duration = GetDuration(s)
               ElseIf s.Contains("frame=") Then
                   current = GetTime(s)
               Else
                   Dim proc As Process = DirectCast(sender, Process)
                   Dim m As Match = Regex.Match(s, "^File\ '(.*?)'\ already\ exists", RegexOptions.IgnoreCase)
                   If m.Success Then
                       Dim w As StreamWriter = proc.StandardInput
                       If MessageBox.Show("File '" & m.Groups(1).ToString & "' already exists." & vbNewLine & "Do you want to Overwrite existing file?", "Overwrite", MessageBoxButtons.YesNo) = DialogResult.Yes Then
                           w.WriteLine("y")
                       Else
                           w.WriteLine("n")
                       End If
                   End If

                   'RaiseEvent ConvertFinish(_Item.ID)
                   'proc.WaitForExit()
                   'proc.Close()
               End If
               Debug.Print(s)
               If Not duration And Not current Then varIsSet = False Else varIsSet = True
           End Sub

           Private Function GetDuration(ByVal s As String) As Double
               Dim m As Match = Regex.Match(s, "Duration: ((.*?), (.*))")
               If m.Success Then
                   Dim duration As String = m.Groups(2).ToString
                   Return TimeSpan.Parse(duration).TotalSeconds
               End If
               Return Nothing
           End Function

           Private Function GetTime(ByVal s As String) As Double
               Dim m As Match = Regex.Match(s, "(.*) time=(.*) bitrate")
               If m.Success Then
                   Dim currentTime As String = m.Groups(2).ToString
                   Return TimeSpan.Parse(currentTime).TotalSeconds
               End If
               Return Nothing
           End Function

           Private Sub timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles timer.Tick
               If varIsSet Then
                   Dim etr As TimeSpan = TimeSpan.FromSeconds(CInt(current / duration))
                   etr = New TimeSpan(etr.Hours, etr.Minutes, etr.Seconds)
                   RaiseEvent ProgressChange(_Item.ID, CInt((current / duration) * 100 * 100), etr)
               End If
           End Sub
       End Class
  • Flutter | Retrieve ffprobe data

    23 juin 2021, par YourLogarithm

    I'm using flutter_ffmpeg package, specifically I'm trying to retrieve information regarding the chapter marks from a .m4b file which is an audiobook. By using this method :

    


    _flutterFFmpeg.executeWithArguments(['-i', widget.book.path, '-print_format', 'json', '-show_chapters', '-loglevel', 'error']);


    


    I was able to output this data as a JSON map in the console. The thing is, I need to use this data inside my application, is there a way to get access to those chapters as a variable using another approach, or maybe to access this data directly from the console log printed by the method shown earlier.