Recherche avancée

Médias (3)

Mot : - Tags -/plugin

Autres articles (94)

  • Mise à jour de la version 0.1 vers 0.2

    24 juin 2013, par

    Explications des différents changements notables lors du passage de la version 0.1 de MediaSPIP à la version 0.3. Quelles sont les nouveautés
    Au niveau des dépendances logicielles Utilisation des dernières versions de FFMpeg (>= v1.2.1) ; Installation des dépendances pour Smush ; Installation de MediaInfo et FFprobe pour la récupération des métadonnées ; On n’utilise plus ffmpeg2theora ; On n’installe plus flvtool2 au profit de flvtool++ ; On n’installe plus ffmpeg-php qui n’est plus maintenu au (...)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

Sur d’autres sites (7558)

  • FFMPEG HTTP Stream error, failed : Connection refused

    17 juillet 2022, par Halo Gass

    I tried to stream a video frame from opencv to network using MPEG-Dash, HLS, or RTSP via FFMPEG, but everytime I tried everything, it always throw "Connection Error, Connection Refused" even streaming to 127.0.0.1.

    


    Here the code for testing :

    


    import subprocess
import cv2
rtmp_url = "rtmp://127.0.0.1:1935/stream/pupils_trace"

# webcamera is 0, also you can set a video file name instead, for example "/home/user/demo.mp4"
path = 0
cap = cv2.VideoCapture(path)

# gather video info to ffmpeg
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# command and params for ffmpeg
command = ['ffmpeg',
           '-y',
           '-f', 'rawvideo',
           '-vcodec', 'rawvideo',
           '-pix_fmt', 'bgr24',
           '-s', "{}x{}".format(width, height),
           '-r', str(fps),
           '-i', '-',
           '-c:v', 'libx264',
           '-pix_fmt', 'yuv420p',
           '-preset', 'ultrafast',
           '-f', 'flv',
           rtmp_url]

# using subprocess and pipe to fetch frame data
p = subprocess.Popen(command, stdin=subprocess.PIPE)


while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("frame read failed")
        break

    # YOUR CODE FOR PROCESSING FRAME HERE

    # write to pipe
    p.stdin.write(frame.tobytes())


    


    and below is the log :

    


    ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers&#xA;  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)&#xA;  configuration: --prefix=/usr --extra-version=0ubuntu0.1 --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-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --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-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --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-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared&#xA;  libavutil      56. 31.100 / 56. 31.100&#xA;  libavcodec     58. 54.100 / 58. 54.100&#xA;  libavformat    58. 29.100 / 58. 29.100&#xA;  libavdevice    58.  8.100 / 58.  8.100&#xA;  libavfilter     7. 57.100 /  7. 57.100&#xA;  libavresample   4.  0.  0 /  4.  0.  0&#xA;  libswscale      5.  5.100 /  5.  5.100&#xA;  libswresample   3.  5.100 /  3.  5.100&#xA;  libpostproc    55.  5.100 / 55.  5.100&#xA;Input #0, rawvideo, from &#x27;pipe:&#x27;:&#xA;  Duration: N/A, start: 0.000000, bitrate: 221184 kb/s&#xA;    Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, 221184 kb/s, 10 tbr, 10 tbn, 10 tbc&#xA;[tcp @ 0x556bea198680] Connection to tcp://127.0.0.1:1935 failed: Connection refused&#xA;[rtmp @ 0x556bea1a2640] Cannot open connection tcp://127.0.0.1:1935&#xA;rtmp://127.0.0.1:1935/stream/pupils_trace: Connection refused&#xA;Traceback (most recent call last):&#xA;  File "testing.py", line 42, in <module>&#xA;    p.stdin.write(frame.tobytes())&#xA;</module>

    &#xA;

    Here what I tried (All of it always "Connection Refused")

    &#xA;

      &#xA;
    1. Running the code directly
    2. &#xA;

    3. Running the code using sudo
    4. &#xA;

    5. Run with 'sudo su'
    6. &#xA;

    7. Allow the port used in ufw
    8. &#xA;

    9. Disable ufw
    10. &#xA;

    11. I tried executing command directly in terminal, also throws "connection refused"
    12. &#xA;

    13. using 127.0.0.1 or "localhost" or 0.0.0.0 or my local IP, everything throws connection error
    14. &#xA;

    15. Tried UDP and TCP
    16. &#xA;

    &#xA;

    Anyone can help me ?&#xA;Thanks

    &#xA;

  • how to get precise video bit rate in a .ts file ?

    26 juillet 2022, par Wang Yilan

    I often use ffprobe to get video bitrates and audio bitrates, but when I used ffprobe to get video bitrate of a .ts file, it seemed get wrong answers :

    &#xA;

    > ffprobe ts-5s/abs-Life_of_PI-01-05s-0.95-1.5-0.15.ts&#xA;ffprobe version N-107320-g3354f8695c Copyright (c) 2007-2022 the FFmpeg developers&#xA;  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)&#xA;  configuration: --enable-version3 --enable-libvmaf --enable-libx264 --enable-libx265 --enable-libvpx --enable-x86asm --enable-shared --disable-static --enable-gpl --enable-postproc --enable-hardcoded-tables --enable-pthreads --enable-pic --enable-zlib --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-lcjson&#xA;  libavutil      57. 27.100 / 57. 27.100&#xA;  libavcodec     59. 36.100 / 59. 36.100&#xA;  libavformat    59. 26.100 / 59. 26.100&#xA;  libavdevice    59.  6.100 / 59.  6.100&#xA;  libavfilter     8. 41.100 /  8. 41.100&#xA;  libswscale      6.  6.100 /  6.  6.100&#xA;  libswresample   4.  6.100 /  4.  6.100&#xA;  libpostproc    56.  5.100 / 56.  5.100&#xA;Input #0, mpegts, from &#x27;ts-5s/abs-Life_of_PI-01-05s-0.95-1.5-0.15.ts&#x27;:&#xA;  Duration: 00:00:05.02, start: 1.472511, bitrate: 1423 kb/s&#xA;  Program 1&#xA;    Metadata:&#xA;      service_name    : Service01&#xA;      service_provider: FFmpeg&#xA;  Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x688, 23.98 fps, 23.98 tbr, 90k tbn&#xA;  Stream #0:1[0x101](und): Audio: mp2 ([3][0][0][0] / 0x0003), 44100 Hz, stereo, fltp, 384 kb/s&#xA;

    &#xA;

    it seemed that the bitrate is 1423k,but when I used bitrate viewer to get this result, it is 952k :&#xA;enter image description here

    &#xA;

    And 1423k-384k=1039k, it cannot match the result of bitrate-viewer, neither.

    &#xA;

    So my question are :

    &#xA;

      &#xA;
    1. what result is the correct result of this .ts file ?
    2. &#xA;

    3. Can I get this result in batches ? (using terminal commands or others)
    4. &#xA;

    &#xA;

    many thanks.

    &#xA;

  • Minimal sample of muxing two streams with no reencoding (av_interleaved_write_frame fails)

    19 juillet 2022, par Alvein

    What I'm trying to do : having two files, one is video-only and the other is audio-only, with identical durations, I want to "join" them in a single container.

    &#xA;

    I previously made a routine which just copied all the streams inside a container to another one. No reencoding, etc. This works perfectly :

    &#xA;

    while(true) {&#xA;    pkIn=av_packet_alloc();&#xA;    if(NULL==pkIn) {&#xA;        fprintf(stderr,"av_packet_alloc() failed");&#xA;        break;&#xA;    }&#xA;    iError=av_read_frame(fcIn,pkIn);&#xA;    if(0>iError)&#xA;        if(AVERROR_EOF==iError)&#xA;            break;&#xA;        else {&#xA;            fprintf(stderr,"av_read_frame() failed");&#xA;            break;&#xA;        }&#xA;    stIn=fcIn->streams[pkIn->stream_index];&#xA;    stOut=fcOut->streams[pkIn->stream_index];&#xA;    log_packet(fcIn,pkIn,"in");&#xA;    av_packet_rescale_ts(pkIn,stIn->time_base,stOut->time_base);&#xA;    pkIn->pos=-1;&#xA;    log_packet(fcOut,pkIn,"out");&#xA;    iError=av_interleaved_write_frame(fcOut,pkIn);&#xA;    if(0>iError) {&#xA;        fprintf(stderr,"av_interleaved_write_frame() failed");&#xA;        break;&#xA;    }&#xA;    av_packet_free(&amp;pkIn);&#xA;}&#xA;

    &#xA;

    I just did the analogy and tried to do the same, but taking each stream from a distinct container, like this :

    &#xA;

    while(true) {&#xA;    if(!bVideoInEOF) {&#xA;        pkVideoIn=av_packet_alloc();&#xA;        if(NULL==pkVideoIn) {&#xA;            fprintf(stderr,"av_packet_alloc(video in) failed");&#xA;            break;&#xA;        }&#xA;        iError=av_read_frame(fcVideoIn,pkVideoIn);&#xA;        if(0>iError)&#xA;            if(AVERROR_EOF==iError)&#xA;                bVideoInEOF=true;&#xA;            else {&#xA;                fprintf(stderr,"av_read_frame(video in) failed");&#xA;                break;&#xA;            }&#xA;        if(!bVideoInEOF) {&#xA;            log_packet(fcVideoIn,pkVideoIn,"video in");&#xA;            av_packet_rescale_ts(pkVideoIn,stVideoIn->time_base,stVideoOut->time_base);&#xA;            pkVideoIn->pos=-1;&#xA;            pkVideoIn->stream_index=stVideoOut->index; // Edit (2022-07-19)&#xA;            log_packet(fcVideoIn,pkVideoIn,"video out");&#xA;            iError=av_interleaved_write_frame(fcOut,pkVideoIn);&#xA;            if(0>iError) {&#xA;                fprintf(stderr,"av_interleaved_write_frame(video out) failed");&#xA;                break;&#xA;            }&#xA;        }&#xA;        av_packet_free(&amp;pkVideoIn);&#xA;    }&#xA;    if(!bAudioInEOF) {&#xA;        pkAudioIn=av_packet_alloc();&#xA;        if(NULL==pkAudioIn) {&#xA;            fprintf(stderr,"av_packet_alloc(audio in) failed");&#xA;            break;&#xA;        }&#xA;        iError=av_read_frame(fcAudioIn,pkAudioIn);&#xA;        if(0>iError)&#xA;            if(AVERROR_EOF==iError)&#xA;                bAudioInEOF=true;&#xA;            else {&#xA;                fprintf(stderr,"av_read_frame(audio in) failed");&#xA;                break;&#xA;            }&#xA;        if(!bAudioInEOF) {&#xA;            log_packet(fcAudioIn,pkAudioIn,"audio in");&#xA;            av_packet_rescale_ts(pkAudioIn,stAudioIn->time_base,stAudioOut->time_base);&#xA;            pkAudioIn->pos=-1;&#xA;            pkAudioIn->stream_index=stAudioOut->index; // Edit (2022-07-19)&#xA;            log_packet(fcAudioIn,pkAudioIn,"audio out");&#xA;            iError=av_interleaved_write_frame(fcOut,pkAudioIn);&#xA;            if(0>iError) {&#xA;                fprintf(stderr,"av_interleaved_write_frame(audio out) failed");&#xA;                break;&#xA;            }&#xA;        }&#xA;        av_packet_free(&amp;pkAudioIn);&#xA;    }&#xA;    if(bVideoInEOF&amp;&amp;bAudioInEOF)&#xA;        break;&#xA;}&#xA;

    &#xA;

    I know the previous code looks like redundant but I wanted to leave both streams "processing" separated the way you understand my plans.

    &#xA;

    Anyway, that code ends quickly with "av_interleaved_write_frame(audio out) failed".

    &#xA;

    The error detail is "Invalid argument", and the debugger shows this :

    &#xA;

    &#xA;

    Application provided invalid, non monotonically increasing dts to&#xA;muxer in stream 0.

    &#xA;

    &#xA;

    If I disable any of the main blocks "if(!bVideoInEOF)" / "if(!bAudioInEOF)", the file is written successfully, with the obvious lack of the disabled stream.

    &#xA;

    I'm new into using this library so probably I'm doing something really stupid, or missing something obvious.

    &#xA;

    Suggestions ?

    &#xA;

    Edit (2022-07-19) :

    &#xA;

    By checking the logs, I noticed I was writing every frame to the stream #0. Hence, the horrible jumps in PTS/DTS.

    &#xA;

    Code edited by adding the corresponding "...->stream_index=" before each call to av_interleaved_write_frame().

    &#xA;

    ...

    &#xA;

    Though it works, I still think my code is far from perfect. Comments are welcome.

    &#xA;