Recherche avancée

Médias (0)

Mot : - Tags -/signalement

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

Autres articles (100)

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

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

  • L’agrémenter visuellement

    10 avril 2011

    MediaSPIP est basé sur un système de thèmes et de squelettes. Les squelettes définissent le placement des informations dans la page, définissant un usage spécifique de la plateforme, et les thèmes l’habillage graphique général.
    Chacun peut proposer un nouveau thème graphique ou un squelette et le mettre à disposition de la communauté.

Sur d’autres sites (12395)

  • Decode a proprietary H264 network video stream

    10 mars 2023, par al_mukthar

    I have incoming byte streams probably encoded in H264 from a RTSP camera through a websocket in my spring boot application,

    


    I need to decode the incoming H264 streams to transmit the video to my frontend clients.
I have tried using javaCV/FFMpeg but nothing works.

    


    Any help would be appreciated

    


    this is the part of hex dump received through socket

    


    00000000: 01 00 00 00 04 48 32 36 34 00 00 00 24 38 65 34    .....H264...$8e4
00000010: 32 39 65 37 61 2D 32 66 34 66 2D 34 37 31 61 2D    29e7a-2f4f-471a-
00000020: 39 61 63 30 2D 66 66 62 38 64 64 37 63 37 64 37    9ac0-ffb8dd7c7d7
00000030: 32 00 00 00 D4 7B 22 49 73 49 6E 69 74 22 3A 66    2...T{"IsInit":f
00000040: 61 6C 73 65 2C 22 49 73 41 75 64 69 6F 22 3A 66    alse,"IsAudio":f
00000050: 61 6C 73 65 2C 22 54 6F 74 61 6C 53 65 63 6F 6E    alse,"TotalSecon
00000060: 64 73 22 3A 30 2E 30 36 2C 22 46 72 61 6D 65 54    ds":0.06,"FrameT
00000070: 69 6D 65 22 3A 22 32 30 32 33 2D 30 32 2D 32 33    ime":"2023-02-23
00000080: 54 30 34 3A 32 31 3A 35 33 2E 35 33 31 5A 22 2C    T04:21:53.531Z",
00000090: 22 53 65 71 75 65 6E 63 65 49 64 22 3A 31 2C 22    "SequenceId":1,"
000000a0: 42 61 73 65 44 65 63 6F 64 65 54 69 6D 65 22 3A    BaseDecodeTime":
000000b0: 32 36 35 38 37 2C 22 4D 65 64 69 61 54 69 6D 65    26587,"MediaTime
000000c0: 22 3A 32 36 35 38 37 2C 22 49 73 46 72 61 6D 65    ":26587,"IsFrame
000000d0: 48 69 64 64 65 6E 22 3A 66 61 6C 73 65 2C 22 49    Hidden":false,"I
000000e0: 73 4B 65 79 46 72 61 6D 65 22 3A 66 61 6C 73 65    sKeyFrame":false
000000f0: 2C 22 49 64 22 3A 34 34 35 2C 22 47 65 6E 65 72    ,"Id":445,"Gener
00000100: 61 74 69 6F 6E 22 3A 31 7D 00 00 3F 50 00 00 00    ation":1}..?P...
00000110: 68 6D 6F 6F 66 00 00 00 10 6D 66 68 64 00 00 00    hmoof....mfhd...
00000120: 00 00 00 01 BD 00 00 00 50 74 72 61 66 00 00 00    ....=...Ptraf...
00000130: 10 74 66 68 64 00 02 00 00 00 00 00 01 00 00 00    .tfhd...........
00000140: 14 74 66 64 74 01 00 00 00 00 00 00 00 00 00 67    .tfdt..........g
00000150: DB 00 00 00 24 74 72 75 6E 01 00 0F 01 00 00 00    [...$trun.......
00000160: 01 00 00 00 70 00 00 00 3C 00 00 3E E0 00 01 00    ....p...<..>`...
00000170: 00 00 00 00 00 00 00 3E E8 6D 64 61 74 00 00 3E    .......>hmdat..>
00000180: DC 41 E1 81 80 93 BE 16 2B 33 77 3D 4C B6 55 8B    \Aa...>.+3w=L6U.
00000190: D2 55 60 92 05 F7 F7 A4 97 54 4B 6C A6 68 48 84    RU`..ww$.TKl&hH.
000001a0: 68 FF D2 B6 6C 02 31 FC 24 01 78 EA BD 20 AD 15    h.R6l.1|$.xj=.-.
000001b0: F1 73 31 4B EB EF 18 1B 50 B3 13 F2 DC C6 4C E1    qs1Kko..P3.r\FLa
000001c0: 75 8B 94 52 6B C5 09 37 55 1E 45 66 6A 92 39 23    u..RkE.7U.Efj.9#
000001d0: C9 2D FD BB EC AD FD CF C4 30 75 FF 44 66 FA 85    I-};l-}OD0u.Dfz.
000001e0: D9 7C 18 72 AE 63 45 60 DD D7 65 44 84 49 95 8D    Y|.r.cE`]WeD.I..
000001f0: 2C 70 6C 57 8E E9 A9 EB B6 F6 78 BD D6 88 99 F6    ,plW.i)k6vx=V..v
00000200: FC 25 B1 0A FF DF CB 77 6A 67 37 24 A5 3D 8F A1    |%1.._Kwjg7$%=.!
00000210: 27 9B 4F 42 0E CD B8 87 6E C9 99 FC 6F 4C 53 4B    '.OB.M8.nI.|oLSK
00000220: 01 EA B6 AF 99 F8 22 C1 8F 1E C1 66 D6 8A 09 D6    .j6/.x"A..AfV..V
00000230: 99 79 91 F7 C1 2A 08 1F 81 CB 5E DD C3 CA 86 8F    .y.wA*...K^]CJ..
00000240: 57 BF 17 A2 64 6B 69 56 AE 19 1F 57 AD A6 D8 C2    W?."dkiV...W-&XB
00000250: 06 28 EB 46 D3 E4 85 51 3E E2 A5 40 50 50 85 7D    .(kFSd.Q>b%@PP.}
00000260: 72 6B 20 87 1A 6E 73 E1 B8 88 9E 20 23 48 6D FE    rk...nsa8...#Hm~
00000270: C2 0D 39 ED 24 B2 6D B5 9B 81 B6 BC F4 EE DE A2    B.9m$2m5..6..bB.{"&.!4.R^5
000002b0: 2A A6 E2 71 D7 4F 96 0A EC AE 8D 39 27 B8 CF 61    *&bqWO..l..9'8Oa
000002c0: CC ED E9 AF 74 C3 95 D3 E3 96 32 20 E6 31 0B E4    Lmi/tC.Sc.2.f1.d
000002d0: DC F4 FF 41 37 36 E7 DB 87 AE B3 7D BF CA F8 05    \t.A76g[..3}?Jx.
000002e0: 72 2A 38 AB B8 8E 98 43 97 C8 5E 80 57 C6 E7 1E    r*8+8..C.H^.WFg.
000002f0: 86 75 CE CD CE BF CF 10 C9 8A C2 C9 6E 33 41 AC    .uNMN?O.I.BIn3A,
00000300: 91 AC A8 F3 1B E6 D5 0A 22 A1 2C 4C 68 19 51 4D    .,(s.fU."!,Lh.QM
00000310: 17 DA AE E1 D7 BC 0E 2D F8 14 61 E2 4F BA 26 A3    .Z.aW<.-x.abO:&#
00000320: 0A E4 A6 BE 08 EA 3C 28 E6 C5 6B CA 3A 86 D2 59    .d&>.j<(fEkJ:.RY
00000330: 34 C2 ED 91 72 5A EF 2C BE D7 38 A4 60 D7 F3 97    4Bm.rZo,>W8$`Ws.
00000340: BB E6 FD C2 D0 29 10 B5 A4 79 D8 3E 61 48 8A F9    ;f}BP).5$yX>aH.y
00000350: C6 D8 13 D0 FD DB D6 FA 24 7F CD 5A BF 06 57 49    FX.P}[Vz$.MZ?.WI
00000360: 51 EC ED B2 74 AB 92 1D 37 68 70 A2 A5 31 B5 5F    Qlm2t+..7hp"%15_
00000370: EA CF 9E 3E 6A B1 78 16 B7 94 D1 46 7B 63 C1 67    jO.>j1x.7.QF{cAg
00000380: D2 B0 08 44 64 1E 68 15 39 80 E3 DD EB C0 E1 71    R0.Dd.h.9.c]k@aq
00000390: E8 EE D0 4D DF 4F 41 E0 96 C5 34 AD BC D3 9E 88    hnPM_OA`.E4-'.7pV%_>.T..
00000430: 7F FC AD 71 CE AF 54 8B 5D DC 27 34 20 A3 0A 73    .|-qN/T.]\'4.#.s
00000440: 76 A5 81 33 22 31 56 6B 1D 82 C4 32 FB 82 15 F6    v%.3"1Vk..D2{..v
00000450: 97 C8 47 29 3C 9E 59 9A C0 83 48 A0 55 CB C8 D6    .HG)<.Y.@.H.UKHV
00000460: 36 92 CC 54 A7 00 E3 28 9E 99 45 B2 E5 7E 88 A7    6.LT'.c(..E2e~.'
00000470: 28 4E CA 75 17 3C D3 B5 6C F5 FD AC 05 55 BF F7    (NJu.?{.T2Yr.h.wYGw
000004d0: 3C 19 C8 7B 81 9B 17 19 E9 81 A0 36 AD C6 62 71    <.H{....i..6-Fbq
000004e0: DB 68 72 8F 6A 37 45 D9 0E 6E DC 2C 5E 52 C2 75    [hr.j7EY.n\,^RBu
000004f0: 51 2F F9 CE 8A 10 12 E9 C8 68 A9 D6 A6 D7 5B 14    Q/yN...iHh)V&W[.
00000500: 11 51 42 FD BE B5 09 56 7F 19 C3 EB A7 A6 DF 6C    .QB}>5.V..Ck'&_l
00000510: 55 A3 11 DC EF 81 C3 CD DD 63 BF 38 F8 5A 4A 45    U#.\o.CM]c?8xZJE
00000520: 33 24 7B A4 55 B3 85 A6 87 75 3B 85 51 5C 03 B7    3${$U3.&.u;.Q\.7


    


    UPDATE TO THE CODE

    


    1st Packet find here
2nd Packet find here

    


    I have updated the code as per one of the comment to read only MDAT box to retrieve H264 stream from the incoming bytes[] through the socket, now I send only MDAT box contents (next byte after MDAT box)

    


    public Map.Entry> hasMdat(byte[] byteArray) {
    for (int i = 0; i < byteArray.length - 3; i++) {
        if (byteArray[i] == (byte) 109 &&
                byteArray[i + 1] == (byte) 100 &&
                byteArray[i + 2] == (byte) 97 &&
                byteArray[i + 3] == (byte) 116) {

            return Map.entry(true, Arrays.asList(i, i + 1, i + 2, i + 3));
        }
    }
    return Map.entry(false, List.of(0));
}


    


    This is my code which handles the byte stream

    


    initSocketConnection(new VideoStreamCallback() {
        @Override
        public void onVideoStreamReceived(byte[] bytes) {
           
Map.Entry> b = hasMdat(bytes);
        if (b.getKey()) {
            byte[] b1 = Arrays.copyOfRange(bytes, b.getValue().get(3) + 1, bytes.length);
  //write b1 back to client using spring SSE
            
        }

        }
    });


    


  • Call bash function in Java

    16 mai 2023, par ilie alexandru

    I have been using Java with bash in order to make some things easier, some examples :

    


    From the main class to call a subclass in order to use bash commands :

    


    Main classs :

    


        //Checking if the server already has the user or not
    CheckUser checkUser = new CheckUser();
    int checuser= checkUser.CheckUserMethod(user);
    if( 1 != checuser) { // Yoda notation

        //Making the directory for the user
        File userDirectory = new File(this.directory);
        userDirectory.mkdir();
    }


    


    The class that will call the ".sh" file :

    


    public class CheckUser {

protected int CheckUserMethod(String user){
    try {

        Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "cd ~/Final-Year-Spring/src/main/java/query && ./checkuser.sh " + user});
        BufferedReader srdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String s =srdInput.readLine();
        if(s==null){
            return 0;
        }else {
            return Integer.parseInt(s);
        }
    }catch (Exception e){
        throw new RuntimeException(e);
    }
}


    


    


    The bash file :

    


    #!/bin/bash

# shellcheck disable=SC2237
if ! [ -z "$1" ]
then
  cd ~/Final-Year-Spring/maps/ && find "$1" -maxdepth 0 -type d -printf 1
fi


    


    Now you have a context.

    


    I am trying to call a bash file that will execute a ffmpeg command. For instance, the same command when I am using the terminal :

    


    ffmpeg -ss 00:00:00.75 -to 00:00:00.93 -i ~/IdeaProjects/Final-Year-Spring/datassets/Alex/check/5535415699068794046/00009.mp4 -ss 00:00:01.71 -to 00:00:01.82 -i ~/IdeaProjects/Final-Year-Spring/datassets/Alex/check/5535415699068794046/00009.mp4 ~/IdeaProjects/Final-Year-Spring/maps/output.mp4S


    


    Also a screenshot with the command in the cli :

    


    enter image description here

    


    The result of the cli command :

    


    enter image description here

    


    Now I am trying to do the same thing for multiple videos using Java and Bash.

    


    The class that will create the input and the time :

    


    public String CreateNewVideoMethod()

    


    ArrayList<string> arrayList = new ArrayList&lt;>();&#xA;&#xA;MainSearch mainSearch = new MainSearch(this.array, this.search);&#xA;HashMap>>> map = new HashMap&lt;>();&#xA;        map = mainSearch.SearchInVideous();&#xA;&#xA;&#xA;HashMap>> file = new HashMap&lt;>();&#xA;file=map.get(this.array.get(1));&#xA;&#xA;file.forEach((k,v)->{&#xA;    StringBuilder stringBuilder = new StringBuilder(this.defaultpth);&#xA;    stringBuilder.append("/")&#xA;            .append(this.array.get(0))&#xA;            .append("/")&#xA;            .append(this.array.get(1))&#xA;            .append("/")&#xA;            .append(k)&#xA;            .append("/")&#xA;            .append("InfoVideo.txt");&#xA;&#xA;    GetVideoPath getVideoPath = new GetVideoPath();&#xA;    String videoPath = getVideoPath.GetVideoPathMethod(stringBuilder);&#xA;&#xA;    v.forEach((k1,v1)->{ // iterate though the words&#xA;        v1.forEach((k2,v2)->{ // iterate though the times&#xA;&#xA;            String doubleAsStringForKey = String.valueOf(k2);&#xA;            String[] arr = doubleAsStringForKey.split("\\.");&#xA;&#xA;            String doubleASStringForValue = String.valueOf(v2);&#xA;            String[] arr2 = doubleASStringForValue.split("\\.");&#xA;&#xA;            if(k2>10){&#xA;&#xA;                StringBuilder stringBuilder1 = new StringBuilder();&#xA;                stringBuilder1.append(" -ss ")&#xA;                        .append("00:00:")&#xA;                        .append(arr[0])&#xA;                        .append(".")&#xA;                        .append(arr[1])&#xA;                        .append(" -to ")&#xA;                        .append(" 00:00:")&#xA;                        .append(arr2[0])&#xA;                        .append(".")&#xA;                        .append(arr2[1])&#xA;                        .append(" -i ")&#xA;                        .append(videoPath);&#xA;                arrayList.add(String.valueOf(stringBuilder1));&#xA;            }&#xA;                else{&#xA;&#xA;                    StringBuilder stringBuilder1 = new StringBuilder();&#xA;                    stringBuilder1.append(" -ss ")&#xA;                            .append("00:00:0")&#xA;                            .append(arr[0])&#xA;                            .append(".")&#xA;                            .append(arr[1])&#xA;                            .append(" -to ")&#xA;                            .append("00:00:0")&#xA;                            .append(arr2[0])&#xA;                            .append(".")&#xA;                            .append(arr2[1])&#xA;                            .append(" -i ")&#xA;                            .append(videoPath);&#xA;                    arrayList.add(String.valueOf(stringBuilder1));&#xA;                }&#xA;&#xA;        });&#xA;    });&#xA;&#xA;});&#xA;&#xA;BashFIleForCreatingNewVideo bashFIleForCreatingNewVideo = new BashFIleForCreatingNewVideo();&#xA;bashFIleForCreatingNewVideo.BashFileForCreatingNewVideo(arrayList);&#xA;</string>

    &#xA;

    The class that must call the ".sh" file :

    &#xA;

    public class BashFIleForCreatingNewVideo {&#xA;&#xA;    protected String BashFileForCreatingNewVideo(ArrayList<string> arrayList){&#xA;        try {&#xA;&#xA;        StringBuilder stringBuilder = new StringBuilder();&#xA;&#xA;        for(String str : arrayList){&#xA;            stringBuilder.append(str);&#xA;        }&#xA;        Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "cd ~/IdeaProjects/Final-Year-Spring/src/main/java/com/FinalYearProjectServer/Get_Requests/CreateNewVideo &amp;&amp; ./createNewVideo.sh ", String.valueOf(stringBuilder), String.valueOf(arrayList.size()-1), "./maps/outputstream.mp4"});&#xA;        BufferedReader srdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));&#xA;        String s =srdInput.readLine();&#xA;&#xA;        if(s==null){&#xA;            return "Error";&#xA;        }else {&#xA;            System.out.println(s);&#xA;            return s;&#xA;        }&#xA;&#xA;        } catch (IOException e) {&#xA;            throw new RuntimeException(e);&#xA;        }&#xA;&#xA;    }&#xA;}&#xA;</string>

    &#xA;

    The script file :

    &#xA;

    #!/bin/bash&#xA;&#xA;arr=( "$@" )&#xA;&#xA;echo "${arr[*]}"&#xA;&#xA;ffmpeg "${arr[0]}" -filter_complex concat=n="${arr[1]}":v=1:a=1 "${arr[2]}"&#xA;

    &#xA;

    What is passed to the script, small exaple, this is a string :

    &#xA;

     -ss 00:00:00.75 -to 00:00:00.93 -i ~/IdeaProjects/Final-Year-Spring/datassets/Alex/check/5535415699068794046/00009.mp4 -ss 00:00:01.71 -to 00:00:01.82 -i ~/IdeaProjects/Final-Year-Spring/datassets/Alex/check/5535415699068794046/00009.mp4 -ss 00:00:00.09 -to 00:00:00.34 -i ~/IdeaProjects/Final-Year-Spring/datassets/Alex/check/5535415699068794046/00027.mp4&#xA;

    &#xA;

    The next parameter is the number of videos that must concatenate and the last parameter is where the output must be.

    &#xA;

    My problem is the Bash file is not executing even the echo command or doing something. Do you have any suggestion, because I thing is about the way of how I am passing the array to the Bash file.

    &#xA;

    Ok so I am trying to use ProcessBuilder :

    &#xA;

            String[] command = {"bash","ffmpeg", String.valueOf(stringBuilder), "-filter_complex concat=n="&#x2B;String.valueOf(arrayList.size()-1)&#x2B;":v=1:a=1", "~/IdeaProjects/Final-Year-Spring/maps/output1.mp4"};&#xA;        ProcessBuilder p = new ProcessBuilder(command);&#xA;        Process p2 = p.start();&#xA;        BufferedReader srdInput;&#xA;        srdInput = new BufferedReader(new InputStreamReader(p2.getInputStream()));&#xA;        String s =srdInput.readLine();&#xA;

    &#xA;

  • I am using a dragable and resizable selector which is shown on top of my video. I need to get it x and y coordinates according to the video resolution

    11 août 2023, par Himanshu

    I am using @use-gesture/react @react-spring/web to create a draggable and resizable selector over the video. I am also able to get the x and y coordinates of the selector with respect to the video element but since I am giving my video tag height and width so that the video fits my screen the X and Y coordinates I am getting are not in the exact same position in the full resolution video. I need to pass the x and y coordinates to ffmpeg to blur the specific portion of the video.

    &#xA;