Recherche avancée

Médias (91)

Autres articles (29)

  • Modifier la date de publication

    21 juin 2013, par

    Comment changer la date de publication d’un média ?
    Il faut au préalable rajouter un champ "Date de publication" dans le masque de formulaire adéquat :
    Administrer > Configuration des masques de formulaires > Sélectionner "Un média"
    Dans la rubrique "Champs à ajouter, cocher "Date de publication "
    Cliquer en bas de la page sur Enregistrer

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • Contribute to translation

    13 avril 2011

    You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
    To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
    MediaSPIP is currently available in French and English (...)

Sur d’autres sites (7079)

  • FFmpeg - Putting segments of same video together

    11 juin 2020, par parthlr

    I am trying to take different segments of the same video and put them together in a new video, essentially cutting out the parts in between the segments. I have built on the answer to this question that I asked before to try and do this. I figured that with putting together segments of the same video, I would have to subtract the first dts of the segment in order for it to start perfectly after the previous segment.

    



    However, when I attempt to do this, I once again get the error Application provided invalid, non monotonically increasing dts to muxer in stream 0. This error is both for stream 0 and 1 (video and audio). It seems that I receive this error for only the first packet in each segment.

    



    On top of that, the output file plays the segments in the correct order, but the video freezes for about a second when there is a transition from one segment to the next. I have a feeling that this is because the dts of each packet is not set properly and as a result the segment is encoded about a second after it should be.

    



    This is the code that I have written :

    



    Video and ClipSequence structs :

    



    typedef struct Video {
    char* filename;
    AVFormatContext* inputContext;
    AVFormatContext* outputContext;
    AVCodec* videoCodec;
    AVCodec* audioCodec;
    AVStream* inputStream;
    AVStream* outputStream;
    AVCodecContext* videoCodecContext_I; // Input
    AVCodecContext* audioCodecContext_I; // Input
    AVCodecContext* videoCodecContext_O; // Output
    AVCodecContext* audioCodecContext_O; // Output
    int videoStream;
    int audioStream;
    SwrContext* swrContext;
} Video;

typedef struct ClipSequence {
    VideoList* videos;
    AVFormatContext* outputContext;
    AVStream* outputStream;
    int64_t lastpts, lastdts;
    int64_t currentpts, currentdts;
} ClipSequence;


    



    Decoding and encoding (same for audio) :

    



    int decodeVideoSequence(ClipSequence* sequence, Video* video, AVPacket* packet) {
    int response = avcodec_send_packet(video->videoCodecContext_I, packet);
    if (response < 0) {
        printf("[ERROR] Failed to send video packet to decoder\n");
        return response;
    }
    AVFrame* frame = av_frame_alloc();
    while (response >= 0) {
        response = avcodec_receive_frame(video->videoCodecContext_I, frame);
        if (response == AVERROR(EAGAIN) || response == AVERROR_EOF) {
            break;
        } else if (response < 0) {
            printf("[ERROR] Failed to receive video frame from decoder\n");
            return response;
        }
        if (response >= 0) {
            // Do stuff and encode

            // Subtract first dts from the current dts
            sequence->v_currentdts = packet->dts - sequence->v_firstdts;

            if (encodeVideoSequence(sequence, video, frame) < 0) {
                printf("[ERROR] Failed to encode new video\n");
                return -1;
            }
        }
        av_frame_unref(frame);
    }
    return 0;
}

int encodeVideoSequence(ClipSequence* sequence, Video* video, AVFrame* frame) {
    AVPacket* packet = av_packet_alloc();
    if (!packet) {
        printf("[ERROR] Could not allocate memory for video output packet\n");
        return -1;
    }
    int response = avcodec_send_frame(video->videoCodecContext_O, frame);
    if (response < 0) {
        printf("[ERROR] Failed to send video frame for encoding\n");
        return response;
    }
    while (response >= 0) {
        response = avcodec_receive_packet(video->videoCodecContext_O, packet);
        if (response == AVERROR(EAGAIN) || response == AVERROR_EOF) {
            break;
        } else if (response < 0) {
            printf("[ERROR] Failed to receive video packet from encoder\n");
            return response;
        }
        // Update dts and pts of video
        packet->duration = VIDEO_PACKET_DURATION;
        int64_t cts = packet->pts - packet->dts;
        packet->dts = sequence->v_currentdts + sequence->v_lastdts + packet->duration;
        packet->pts = packet->dts + cts;
        packet->stream_index = video->videoStream;
        response = av_interleaved_write_frame(sequence->outputContext, packet);
        if (response < 0) {
            printf("[ERROR] Failed to write video packet\n");
            break;
        }
    }
    av_packet_unref(packet);
    av_packet_free(&packet);
    return 0;
}


    



    Cutting the video from a specific range of frames :

    



    int cutVideo(ClipSequence* sequence, Video* video, int startFrame, int endFrame) {
    printf("[WRITE] Cutting video from frame %i to %i\n", startFrame, endFrame);
    // Seeking stream is set to 0 by default and for testing purposes
    if (findPacket(video->inputContext, startFrame, 0) < 0) {
        printf("[ERROR] Failed to find packet\n");
    }
    AVPacket* packet = av_packet_alloc();
    if (!packet) {
        printf("[ERROR] Could not allocate packet for cutting video\n");
        return -1;
    }
    int currentFrame = startFrame;
    bool v_firstframe = true;
    bool a_firstframe = true;
    while (av_read_frame(video->inputContext, packet) >= 0 && currentFrame <= endFrame) {
        if (packet->stream_index == video->videoStream) {
            // Only count video frames since seeking is based on 60 fps video frames
            currentFrame++;
            // Store the first dts
            if (v_firstframe) {
                v_firstframe = false;
                sequence->v_firstdts = packet->dts;
            }
            if (decodeVideoSequence(sequence, video, packet) < 0) {
                printf("[ERROR] Failed to decode and encode video\n");
                return -1;
            }
        } else if (packet->stream_index == video->audioStream) {
            if (a_firstframe) {
                a_firstframe = false;
                sequence->a_firstdts = packet->dts;
            }
            if (decodeAudioSequence(sequence, video, packet) < 0) {
                printf("[ERROR] Failed to decode and encode audio\n");
                return -1;
            }
        }
        av_packet_unref(packet);
    }
    sequence->v_lastdts += sequence->v_currentdts;
    sequence->a_lastdts += sequence->a_currentdts;
    return 0;
}


    



    Finding correct place in video to start :

    



    int findPacket(AVFormatContext* inputContext, int frameIndex, int stream) {
    int64_t timebase;
    if (stream < 0) {
        timebase = AV_TIME_BASE;
    } else if (stream >= 0) {
        timebase = (inputContext->streams[stream]->time_base.den) / inputContext->streams[stream]->time_base.num;
    }
    int64_t seekTarget = timebase * frameIndex / VIDEO_DEFAULT_FPS;
    if (av_seek_frame(inputContext, stream, seekTarget, AVSEEK_FLAG_ANY) < 0) {
        printf("[ERROR] Failed to find keyframe from frame index %i\n", frameIndex);
        return -1;
    }
    return 0;
}


    



    UPDATE :

    



    I have achieved the desired result, but not in the way that I wanted to. I took each segment and encoded them to a separate video file. Then, I took those separate videos and encoded them into one sequence of videos. However, this isn't the optimal method of achieving what I want. It's definitely a lot slower and I have written a lot more code than I believe I should have. I still don't know what the issue is to my original problem, and I would greatly appreciate any help.

    


  • FFMPEG stuck at 00:00:00 speed=0x for a long time at the beginning

    4 juin 2020, par lagmoellertim

    I'm currently writing a script that can remove silence from any video. I'm doing this using ffmpeg and a complex_filter script.

    



    Since most of my videos are pretty long (>1.5h), ffmpeg is called multiple times with a different complex_filter, each editing a part of the video (about 8 minutes long each) and combining those parts at the end.

    



    The input file for all these separate parts is always the original 1.5h video clip.

    



    The problem I keep getting is that for videos starting not directly at the start (first part works fine, second part starting at minute 8 takes longer, third part starting at minute 16 even longer, ... you get the point), this shows up and gets displayed for quite a long time, until it finally works with its normal speed :

    



    frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x

    



    Here is the ffmpeg script I use

    



    ffmpeg -i video.mp4 -vsync 1 -async 1 -safe 0 -filter_complex_script /path/to/complex_filter -y -map '[vout]' -map '[aout]' video_parts/infb4_3.mp4

    



    I also tried adding -ss 00:24:00 before or behind the -i input, but I did not notice any speed improvement.

    



    And here the complex_filter of one part of the video, starting at minute 24 and ending at minute 32 :

    



    [0:v]trim=start=1440:end=1440.655,setpts=PTS-STARTPTS[v0];
[v0]setpts=0.1667*PTS[vf0];
[0:a]atrim=start=1440:end=1440.655,asetpts=PTS-STARTPTS[a0];
[a0]atempo=6.0,volume=0.5[af0];
[0:v]trim=start=1440.655:end=1442.745,setpts=PTS-STARTPTS[v1];
[0:a]atrim=start=1440.655:end=1442.745,asetpts=PTS-STARTPTS[a1];
[0:v]trim=start=1442.745:end=1443.115,setpts=PTS-STARTPTS[v2];
[v2]setpts=0.1667*PTS[vf2];
[0:a]atrim=start=1442.745:end=1443.115,asetpts=PTS-STARTPTS[a2];
[a2]atempo=6.0,volume=0.5[af2];
[0:v]trim=start=1443.115:end=1444.005,setpts=PTS-STARTPTS[v3];
[0:a]atrim=start=1443.115:end=1444.005,asetpts=PTS-STARTPTS[a3];
[0:v]trim=start=1444.005:end=1444.295,setpts=PTS-STARTPTS[v4];
[v4]setpts=0.1667*PTS[vf4];
[0:a]atrim=start=1444.005:end=1444.295,asetpts=PTS-STARTPTS[a4];
[a4]atempo=6.0,volume=0.5[af4];
[0:v]trim=start=1444.295:end=1449.925,setpts=PTS-STARTPTS[v5];
[0:a]atrim=start=1444.295:end=1449.925,asetpts=PTS-STARTPTS[a5];
[0:v]trim=start=1449.925:end=1450.295,setpts=PTS-STARTPTS[v6];
[v6]setpts=0.1667*PTS[vf6];
[0:a]atrim=start=1449.925:end=1450.295,asetpts=PTS-STARTPTS[a6];
[a6]atempo=6.0,volume=0.5[af6];
[0:v]trim=start=1450.295:end=1453.225,setpts=PTS-STARTPTS[v7];
[0:a]atrim=start=1450.295:end=1453.225,asetpts=PTS-STARTPTS[a7];
[0:v]trim=start=1453.225:end=1453.965,setpts=PTS-STARTPTS[v8];
[v8]setpts=0.1667*PTS[vf8];
[0:a]atrim=start=1453.225:end=1453.965,asetpts=PTS-STARTPTS[a8];
[a8]atempo=6.0,volume=0.5[af8];
[0:v]trim=start=1453.965:end=1458.755,setpts=PTS-STARTPTS[v9];
[0:a]atrim=start=1453.965:end=1458.755,asetpts=PTS-STARTPTS[a9];
[0:v]trim=start=1458.755:end=1459.815,setpts=PTS-STARTPTS[v10];
[v10]setpts=0.1667*PTS[vf10];
[0:a]atrim=start=1458.755:end=1459.815,asetpts=PTS-STARTPTS[a10];
[a10]atempo=6.0,volume=0.5[af10];
[0:v]trim=start=1459.815:end=1464.805,setpts=PTS-STARTPTS[v11];
[0:a]atrim=start=1459.815:end=1464.805,asetpts=PTS-STARTPTS[a11];
[0:v]trim=start=1464.805:end=1466.665,setpts=PTS-STARTPTS[v12];
[v12]setpts=0.1667*PTS[vf12];
[0:a]atrim=start=1464.805:end=1466.665,asetpts=PTS-STARTPTS[a12];
[a12]atempo=6.0,volume=0.5[af12];
[0:v]trim=start=1466.665:end=1469.615,setpts=PTS-STARTPTS[v13];
[0:a]atrim=start=1466.665:end=1469.615,asetpts=PTS-STARTPTS[a13];
[0:v]trim=start=1469.615:end=1470.075,setpts=PTS-STARTPTS[v14];
[v14]setpts=0.1667*PTS[vf14];
[0:a]atrim=start=1469.615:end=1470.075,asetpts=PTS-STARTPTS[a14];
[a14]atempo=6.0,volume=0.5[af14];
[0:v]trim=start=1470.075:end=1474.435,setpts=PTS-STARTPTS[v15];
[0:a]atrim=start=1470.075:end=1474.435,asetpts=PTS-STARTPTS[a15];
[0:v]trim=start=1474.435:end=1474.725,setpts=PTS-STARTPTS[v16];
[v16]setpts=0.1667*PTS[vf16];
[0:a]atrim=start=1474.435:end=1474.725,asetpts=PTS-STARTPTS[a16];
[a16]atempo=6.0,volume=0.5[af16];
[0:v]trim=start=1474.725:end=1476.765,setpts=PTS-STARTPTS[v17];
[0:a]atrim=start=1474.725:end=1476.765,asetpts=PTS-STARTPTS[a17];
[0:v]trim=start=1476.765:end=1479.525,setpts=PTS-STARTPTS[v18];
[v18]setpts=0.1667*PTS[vf18];
[0:a]atrim=start=1476.765:end=1479.525,asetpts=PTS-STARTPTS[a18];
[a18]atempo=6.0,volume=0.5[af18];
[0:v]trim=start=1479.525:end=1483.705,setpts=PTS-STARTPTS[v19];
[0:a]atrim=start=1479.525:end=1483.705,asetpts=PTS-STARTPTS[a19];
[0:v]trim=start=1483.705:end=1484.165,setpts=PTS-STARTPTS[v20];
[v20]setpts=0.1667*PTS[vf20];
[0:a]atrim=start=1483.705:end=1484.165,asetpts=PTS-STARTPTS[a20];
[a20]atempo=6.0,volume=0.5[af20];
[0:v]trim=start=1484.165:end=1485.605,setpts=PTS-STARTPTS[v21];
[0:a]atrim=start=1484.165:end=1485.605,asetpts=PTS-STARTPTS[a21];
[0:v]trim=start=1485.605:end=1486.315,setpts=PTS-STARTPTS[v22];
[v22]setpts=0.1667*PTS[vf22];
[0:a]atrim=start=1485.605:end=1486.315,asetpts=PTS-STARTPTS[a22];
[a22]atempo=6.0,volume=0.5[af22];
[0:v]trim=start=1486.315:end=1489.055,setpts=PTS-STARTPTS[v23];
[0:a]atrim=start=1486.315:end=1489.055,asetpts=PTS-STARTPTS[a23];
[0:v]trim=start=1489.055:end=1489.485,setpts=PTS-STARTPTS[v24];
[v24]setpts=0.1667*PTS[vf24];
[0:a]atrim=start=1489.055:end=1489.485,asetpts=PTS-STARTPTS[a24];
[a24]atempo=6.0,volume=0.5[af24];
[0:v]trim=start=1489.485:end=1491.375,setpts=PTS-STARTPTS[v25];
[0:a]atrim=start=1489.485:end=1491.375,asetpts=PTS-STARTPTS[a25];
[0:v]trim=start=1491.375:end=1491.955,setpts=PTS-STARTPTS[v26];
[v26]setpts=0.1667*PTS[vf26];
[0:a]atrim=start=1491.375:end=1491.955,asetpts=PTS-STARTPTS[a26];
[a26]atempo=6.0,volume=0.5[af26];
[0:v]trim=start=1491.955:end=1493.325,setpts=PTS-STARTPTS[v27];
[0:a]atrim=start=1491.955:end=1493.325,asetpts=PTS-STARTPTS[a27];
[0:v]trim=start=1493.325:end=1493.785,setpts=PTS-STARTPTS[v28];
[v28]setpts=0.1667*PTS[vf28];
[0:a]atrim=start=1493.325:end=1493.785,asetpts=PTS-STARTPTS[a28];
[a28]atempo=6.0,volume=0.5[af28];
[0:v]trim=start=1493.785:end=1498.195,setpts=PTS-STARTPTS[v29];
[0:a]atrim=start=1493.785:end=1498.195,asetpts=PTS-STARTPTS[a29];
[0:v]trim=start=1498.195:end=1498.935,setpts=PTS-STARTPTS[v30];
[v30]setpts=0.1667*PTS[vf30];
[0:a]atrim=start=1498.195:end=1498.935,asetpts=PTS-STARTPTS[a30];
[a30]atempo=6.0,volume=0.5[af30];
[0:v]trim=start=1498.935:end=1500.385,setpts=PTS-STARTPTS[v31];
[0:a]atrim=start=1498.935:end=1500.385,asetpts=PTS-STARTPTS[a31];
[0:v]trim=start=1500.385:end=1500.675,setpts=PTS-STARTPTS[v32];
[v32]setpts=0.1667*PTS[vf32];
[0:a]atrim=start=1500.385:end=1500.675,asetpts=PTS-STARTPTS[a32];
[a32]atempo=6.0,volume=0.5[af32];
[0:v]trim=start=1500.675:end=1503.665,setpts=PTS-STARTPTS[v33];
[0:a]atrim=start=1500.675:end=1503.665,asetpts=PTS-STARTPTS[a33];
[0:v]trim=start=1503.665:end=1504.675,setpts=PTS-STARTPTS[v34];
[v34]setpts=0.1667*PTS[vf34];
[0:a]atrim=start=1503.665:end=1504.675,asetpts=PTS-STARTPTS[a34];
[a34]atempo=6.0,volume=0.5[af34];
[0:v]trim=start=1504.675:end=1509.405,setpts=PTS-STARTPTS[v35];
[0:a]atrim=start=1504.675:end=1509.405,asetpts=PTS-STARTPTS[a35];
[0:v]trim=start=1509.405:end=1511.155,setpts=PTS-STARTPTS[v36];
[v36]setpts=0.1667*PTS[vf36];
[0:a]atrim=start=1509.405:end=1511.155,asetpts=PTS-STARTPTS[a36];
[a36]atempo=6.0,volume=0.5[af36];
[0:v]trim=start=1511.155:end=1518.295,setpts=PTS-STARTPTS[v37];
[0:a]atrim=start=1511.155:end=1518.295,asetpts=PTS-STARTPTS[a37];
[0:v]trim=start=1518.295:end=1520.185,setpts=PTS-STARTPTS[v38];
[v38]setpts=0.1667*PTS[vf38];
[0:a]atrim=start=1518.295:end=1520.185,asetpts=PTS-STARTPTS[a38];
[a38]atempo=6.0,volume=0.5[af38];
[0:v]trim=start=1520.185:end=1526.105,setpts=PTS-STARTPTS[v39];
[0:a]atrim=start=1520.185:end=1526.105,asetpts=PTS-STARTPTS[a39];
[0:v]trim=start=1526.105:end=1526.765,setpts=PTS-STARTPTS[v40];
[v40]setpts=0.1667*PTS[vf40];
[0:a]atrim=start=1526.105:end=1526.765,asetpts=PTS-STARTPTS[a40];
[a40]atempo=6.0,volume=0.5[af40];
[0:v]trim=start=1526.765:end=1528.765,setpts=PTS-STARTPTS[v41];
[0:a]atrim=start=1526.765:end=1528.765,asetpts=PTS-STARTPTS[a41];
[0:v]trim=start=1528.765:end=1529.255,setpts=PTS-STARTPTS[v42];
[v42]setpts=0.1667*PTS[vf42];
[0:a]atrim=start=1528.765:end=1529.255,asetpts=PTS-STARTPTS[a42];
[a42]atempo=6.0,volume=0.5[af42];
[0:v]trim=start=1529.255:end=1531.465,setpts=PTS-STARTPTS[v43];
[0:a]atrim=start=1529.255:end=1531.465,asetpts=PTS-STARTPTS[a43];
[0:v]trim=start=1531.465:end=1531.955,setpts=PTS-STARTPTS[v44];
[v44]setpts=0.1667*PTS[vf44];
[0:a]atrim=start=1531.465:end=1531.955,asetpts=PTS-STARTPTS[a44];
[a44]atempo=6.0,volume=0.5[af44];
[0:v]trim=start=1531.955:end=1533.535,setpts=PTS-STARTPTS[v45];
[0:a]atrim=start=1531.955:end=1533.535,asetpts=PTS-STARTPTS[a45];
[0:v]trim=start=1533.535:end=1533.955,setpts=PTS-STARTPTS[v46];
[v46]setpts=0.1667*PTS[vf46];
[0:a]atrim=start=1533.535:end=1533.955,asetpts=PTS-STARTPTS[a46];
[a46]atempo=6.0,volume=0.5[af46];
[0:v]trim=start=1533.955:end=1535.275,setpts=PTS-STARTPTS[v47];
[0:a]atrim=start=1533.955:end=1535.275,asetpts=PTS-STARTPTS[a47];
[0:v]trim=start=1535.275:end=1536.015,setpts=PTS-STARTPTS[v48];
[v48]setpts=0.1667*PTS[vf48];
[0:a]atrim=start=1535.275:end=1536.015,asetpts=PTS-STARTPTS[a48];
[a48]atempo=6.0,volume=0.5[af48];
[0:v]trim=start=1536.015:end=1539.725,setpts=PTS-STARTPTS[v49];
[0:a]atrim=start=1536.015:end=1539.725,asetpts=PTS-STARTPTS[a49];
[0:v]trim=start=1539.725:end=1540.935,setpts=PTS-STARTPTS[v50];
[v50]setpts=0.1667*PTS[vf50];
[0:a]atrim=start=1539.725:end=1540.935,asetpts=PTS-STARTPTS[a50];
[a50]atempo=6.0,volume=0.5[af50];
[0:v]trim=start=1540.935:end=1543.765,setpts=PTS-STARTPTS[v51];
[0:a]atrim=start=1540.935:end=1543.765,asetpts=PTS-STARTPTS[a51];
[0:v]trim=start=1543.765:end=1544.145,setpts=PTS-STARTPTS[v52];
[v52]setpts=0.1667*PTS[vf52];
[0:a]atrim=start=1543.765:end=1544.145,asetpts=PTS-STARTPTS[a52];
[a52]atempo=6.0,volume=0.5[af52];
[0:v]trim=start=1544.145:end=1545.775,setpts=PTS-STARTPTS[v53];
[0:a]atrim=start=1544.145:end=1545.775,asetpts=PTS-STARTPTS[a53];
[0:v]trim=start=1545.775:end=1546.035,setpts=PTS-STARTPTS[v54];
[v54]setpts=0.1667*PTS[vf54];
[0:a]atrim=start=1545.775:end=1546.035,asetpts=PTS-STARTPTS[a54];
[a54]atempo=6.0,volume=0.5[af54];
[0:v]trim=start=1546.035:end=1547.455,setpts=PTS-STARTPTS[v55];
[0:a]atrim=start=1546.035:end=1547.455,asetpts=PTS-STARTPTS[a55];
[0:v]trim=start=1547.455:end=1547.775,setpts=PTS-STARTPTS[v56];
[v56]setpts=0.1667*PTS[vf56];
[0:a]atrim=start=1547.455:end=1547.775,asetpts=PTS-STARTPTS[a56];
[a56]atempo=6.0,volume=0.5[af56];
[0:v]trim=start=1547.775:end=1550.145,setpts=PTS-STARTPTS[v57];
[0:a]atrim=start=1547.775:end=1550.145,asetpts=PTS-STARTPTS[a57];
[0:v]trim=start=1550.145:end=1550.785,setpts=PTS-STARTPTS[v58];
[v58]setpts=0.1667*PTS[vf58];
[0:a]atrim=start=1550.145:end=1550.785,asetpts=PTS-STARTPTS[a58];
[a58]atempo=6.0,volume=0.5[af58];
[0:v]trim=start=1550.785:end=1555.925,setpts=PTS-STARTPTS[v59];
[0:a]atrim=start=1550.785:end=1555.925,asetpts=PTS-STARTPTS[a59];

... shortened so that stackoverflow accepts it ...

[0:v]trim=start=1893.715:end=1897.605,setpts=PTS-STARTPTS[v181];
[0:a]atrim=start=1893.715:end=1897.605,asetpts=PTS-STARTPTS[a181];
[0:v]trim=start=1897.605:end=1898.025,setpts=PTS-STARTPTS[v182];
[v182]setpts=0.1667*PTS[vf182];
[0:a]atrim=start=1897.605:end=1898.025,asetpts=PTS-STARTPTS[a182];
[a182]atempo=6.0,volume=0.5[af182];
[0:v]trim=start=1898.025:end=1900.455,setpts=PTS-STARTPTS[v183];
[0:a]atrim=start=1898.025:end=1900.455,asetpts=PTS-STARTPTS[a183];
[0:v]trim=start=1900.455:end=1903.985,setpts=PTS-STARTPTS[v184];
[v184]setpts=0.1667*PTS[vf184];
[0:a]atrim=start=1900.455:end=1903.985,asetpts=PTS-STARTPTS[a184];
[a184]atempo=6.0,volume=0.5[af184];
[0:v]trim=start=1903.985:end=1908.195,setpts=PTS-STARTPTS[v185];
[0:a]atrim=start=1903.985:end=1908.195,asetpts=PTS-STARTPTS[a185];
[0:v]trim=start=1908.195:end=1908.455,setpts=PTS-STARTPTS[v186];
[v186]setpts=0.1667*PTS[vf186];
[0:a]atrim=start=1908.195:end=1908.455,asetpts=PTS-STARTPTS[a186];
[a186]atempo=6.0,volume=0.5[af186];
[0:v]trim=start=1908.455:end=1911.655,setpts=PTS-STARTPTS[v187];
[0:a]atrim=start=1908.455:end=1911.655,asetpts=PTS-STARTPTS[a187];
[0:v]trim=start=1911.655:end=1916.495,setpts=PTS-STARTPTS[v188];
[v188]setpts=0.1667*PTS[vf188];
[0:a]atrim=start=1911.655:end=1916.495,asetpts=PTS-STARTPTS[a188];
[a188]atempo=6.0,volume=0.5[af188];
[0:v]trim=start=1916.495:end=1920,setpts=PTS-STARTPTS[v189];
[0:a]atrim=start=1916.495:end=1920,asetpts=PTS-STARTPTS[a189];
[vf0][af0][v1][a1][vf2][af2][v3][a3][vf4][af4][v5][a5][vf6][af6][v7][a7][vf8][af8][v9][a9][vf10][af10][v11][a11][vf12][af12][v13][a13][vf14][af14][v15][a15][vf16][af16][v17][a17][vf18][af18][v19][a19][vf20][af20][v21][a21][vf22][af22][v23][a23][vf24][af24][v25][a25][vf26][af26][v27][a27][vf28][af28][v29][a29] ... shortened here so that stackoverflow accepts it ... [v181][a181][vf182][af182][v183][a183][vf184][af184][v185][a185][vf186][af186][v187][a187][vf188][af188][v189][a189]concat=n=190:v=1:a=1[vout][aout]


    



    Thanks !

    


  • mfenc : Remove an unused include

    25 mai 2020, par Martin Storsjö
    mfenc : Remove an unused include
    

    This might have been used originally for the decoder parts of
    the MediaFoundation wrapper, which aren't merged yet.

    Signed-off-by : Martin Storsjö <martin@martin.st>

    • [DH] libavcodec/mfenc.c