Recherche avancée

Médias (1)

Mot : - Tags -/copyleft

Autres articles (62)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Problèmes fréquents

    10 mars 2010, par

    PHP et safe_mode activé
    Une des principales sources de problèmes relève de la configuration de PHP et notamment de l’activation du safe_mode
    La solution consiterait à soit désactiver le safe_mode soit placer le script dans un répertoire accessible par apache pour le site

  • Configuration spécifique d’Apache

    4 février 2011, par

    Modules spécifiques
    Pour la configuration d’Apache, il est conseillé d’activer certains modules non spécifiques à MediaSPIP, mais permettant d’améliorer les performances : mod_deflate et mod_headers pour compresser automatiquement via Apache les pages. Cf ce tutoriel ; mode_expires pour gérer correctement l’expiration des hits. Cf ce tutoriel ;
    Il est également conseillé d’ajouter la prise en charge par apache du mime-type pour les fichiers WebM comme indiqué dans ce tutoriel.
    Création d’un (...)

Sur d’autres sites (8422)

  • ffmpeg padding doesn't scale when changing resolution

    5 mars 2023, par Martin

    I have a ffmpeg command which takes a bunch of audio files, 3 image files, and renders a video with them.

    


    Image Input Dimmensions :

    


      

    • 1_front.jpg 600w x 593h
    • 


    • 2_back.jpg 600w x 466h
    • 


    • 3_cd.jpg 600w x 598h
    • 


    


    The video has a resolution of w=600 h=593, which is the resolution of the first img.

    


    Here's the full command

    


    ffmpeg
 -r 2 -i "E:\filepath\10. Deejay Punk-Roc - Knock 'em All The Way Out.aiff"
 -r 2 -i "E:\filepath\11. Deejay Punk-Roc - Spring Break.aiff" -r 2 -i "E:\filepath\12. Deejay Punk-Roc - Fat Gold Chain.aiff" 
 -r 2 -i "E:\filepath\1_front.jpg" -r 2 -i "E:\filepath\2_back.jpg" -r 2 -i "E:\filepath\3_cd.jpg" 
 
 -filter_complex 
 "
 [0:a][1:a][2:a]concat=n=3:v=0:a=1[a]; 
 
 [3:v]scale=w=600:h=593,setsar=1,loop=580.03:580.03[v3]; 

 [4:v]pad=600:593:0:63:color=pink,setsar=1,loop=580.03:580.03[v4];
 
 [5:v]scale=w=600:h=593,setsar=1,loop=580.03:580.03[v5];
 
 [v3][v4][v5]concat=n=3:v=1:a=0,pad=ceil(iw/2)*2:ceil(ih/2)*2[v]"
 
  -map "[v]" -map "[a]" -c:a pcm_s32le -c:v libx264 -bufsize 3M -crf 18 -pix_fmt yuv420p -tune stillimage -t 870.04 
  "E:\filepath\vidOutPutCorrect.mkv"



    


    For filter_complex this second part will add padding to the second image so that it does not get stretched or cropped.

    


    [4:v]pad=600:593:0:63:color=pink,setsar=1,loop=580.03:580.03[v4];


    


    Specifically this part

    


    pad=600:593:0:63:color=pink


    


    Which I understand means w=600 and h=593, but i dont know that the last part 0:63 means.

    


    You can see the output has the pink padding correctly
enter image description here

    


    but i want to render the video with a resolution of w=1920 h=1898 instead of w=600 h=593.

    


    So i update the command to have this new resolution :

    


    ffmpeg -r 2 -i "E:\filepath\10. Deejay Punk-Roc - Knock 'em All The Way Out.aiff" -r 2 -i "E:\filepath\11. Deejay Punk-Roc - Spring Break.aiff" -r 2 -i "E:\filepath\12. Deejay Punk-Roc - Fat Gold Chain.aiff" -r 2 -i "E:\filepath\1_front.jpg" -r 2 -i "E:\filepath\2_back.jpg" -r 2 -i "E:\filepath\3_cd.jpg" 

-filter_complex "
[0:a][1:a][2:a]concat=n=3:v=0:a=1[a];

[3:v]scale=w=1920:h=1898,setsar=1,loop=580.03:580.03[v3];

[4:v]pad=1920:1898:0:63:color=pink,setsar=1,loop=580.03:580.03[v4];

[5:v]scale=w=1920:h=1898,setsar=1,loop=580.03:580.03[v5];

[v3][v4][v5]concat=n=3:v=1:a=0,pad=ceil(iw/2)*2:ceil(ih/2)*2[v]"

 -map "[v]" -map "[a]" -c:a pcm_s32le -c:v libx264 -bufsize 3M -crf 18 -pix_fmt yuv420p -tune stillimage -t 870.04 "E:\filepath\slidet.mkv"


    


    my video does in fact now have a resolution of 1920x1798 which is great, but the 2nd image padding portion has the image super small and in a corner

    


    enter image description here

    


    So this line works :

    


    pad=600:593:0:63:color=pink


    


    but with a different resolution is looks bad with the image in the top left corner

    


    pad=1920:1898:0:63:color=pink


    


    What do I need to change 0:63 to in order to have the image be centered ?

    


    Download files : http://www.mediafire.com/folder/e8ja1n8elszk1lu,dxw4vglrz7polyh,ojjx6kcqruksv5r,lah9rano4svj46o,q5jg0083vbj9y1p,d3pt8ydf3ulqm5m/shared

    


  • ServletOutputStream failed to flush :

    18 septembre 2024, par Dawid

    I try to convert m3u8 file to WebM using ffmpeg and stream it onto browser.
I want it to play on browser without using any javascript.
Stream video method :

    


     public void streamVideo(OutputStream os ){

       String url = "m3u8file.m3u8";


        byte[] bytes = new byte[BUFFER];
        int bytesRead = -1;

        ProcessBuilder pb = new ProcessBuilder(
                "ffmpeg",
                "-i", url,
                "-c:v", "libvpx-vp9",  
                "-b:v", "1M",           
                "-c:a", "libopus",      
                "-b:a", "128k",
                "-f", "webm",           
                "pipe:1"                
        );
        pb.redirectErrorStream(true);

        try {
                    Process process = pb.start();
            try (
                    InputStream is = process.getInputStream()){

                while((bytesRead = is.read(bytes)) != -1){
                    os.write(bytes, 0 , bytesRead);
                    os.flush();
                }


            }catch (IOException ex){
                ex.printStackTrace();
            }


        }catch (IOException ex){
            ex.printStackTrace();
        }



    }


}


    


    Web Controller

    


     &#xA; @Autowired&#xA;    private VideoService videoService;&#xA;&#xA;    @GetMapping("/stream")&#xA;    public ResponseEntity<streamingresponsebody> streamVideo(@RequestHeader(value = "Range", required = false) String rangeHeader) {&#xA;        HttpHeaders headers = new HttpHeaders();&#xA;&#xA;        headers.add("Content-Type", "video/webm");&#xA;        headers.add("Accept-Ranges", "bytes");&#xA;&#xA;        StreamingResponseBody responseStream  = os ->{&#xA;            videoService.streamVideo(os);&#xA;        };&#xA;        return new ResponseEntity&lt;>(responseStream, headers, HttpStatus.PARTIAL_CONTENT);&#xA;    }&#xA;</streamingresponsebody>

    &#xA;

    When I open the /stream I get an error on spring application

    &#xA;

    "ServletOutputStream failed to flush : java.io.IOException : An established connection was aborted by the software in your host machine"

    &#xA;

      &#xA;
    • On firefox in console I got 2 errors&#xA;Cant decode multimedia resource :&#xA;And Cant decode multimedia resource:Error Code : NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)&#xA;And the window which video will be showing says "No video with supported format and MIME type found"

      &#xA;

    • &#xA;

    • On Chrome just nothing happens

      &#xA;

    • &#xA;

    • And on firefox when i open the view-source i see the stream information and then there is jibberish which i suppose are bytes from the video the. The jibberish stops when i got the ServletOutputStream failed to flush : in console in Spring

      &#xA;

    • &#xA;

    &#xA;

    Sorry if error codes translation is hard to understand

    &#xA;

  • Can't fix this ffmpeg, NoClassDefFoundError

    15 mars 2023, par noob234

    I am trying to get the video duration with this library import org.bytedeco.javacv.FFmpegFrameGrabber;

    &#xA;

    When I upload this mp4 video (https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4), I get this error message :&#xA;java.lang.NoClassDefFoundError: Could not initialize class org.bytedeco.ffmpeg.global.avutil

    &#xA;

    It will break when trying to get the 'grabber' :

    &#xA;

    private void videoInfo(MultipartFile file) {&#xA;    try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(file.getInputStream())) { // on this line it will break :(&#xA;        grabber.start();&#xA;        long durationMs = grabber.getLengthInTime();&#xA;    } catch (FrameGrabber.Exception e) {&#xA;        throw new RuntimeException(e);&#xA;    } catch (IOException e) {&#xA;        throw new RuntimeException(e);&#xA;    }&#xA;}&#xA;

    &#xA;

    This is my build.gradle :

    &#xA;

    plugins {&#xA;    id &#x27;java&#x27;&#xA;    id &#x27;org.springframework.boot&#x27; version &#x27;2.7.9&#x27;&#xA;    id &#x27;io.spring.dependency-management&#x27; version &#x27;1.0.15.RELEASE&#x27;&#xA;}&#xA;&#xA;group = &#x27;com.nob234&#x27;&#xA;version = &#x27;0.0.1-SNAPSHOT&#x27;&#xA;&#xA;configurations {&#xA;    compileOnly {&#xA;        extendsFrom annotationProcessor&#xA;    }&#xA;}&#xA;&#xA;repositories {&#xA;    mavenCentral()&#xA;}&#xA;&#xA;dependencies {&#xA;    implementation &#x27;org.springframework.boot:spring-boot-starter-web&#x27;&#xA;    compileOnly &#x27;org.projectlombok:lombok&#x27;&#xA;    annotationProcessor &#x27;org.projectlombok:lombok&#x27;&#xA;    testImplementation &#x27;org.springframework.boot:spring-boot-starter-test&#x27;&#xA;    implementation &#x27;org.springdoc:springdoc-openapi-ui:1.6.9&#x27;&#xA;    implementation &#x27;org.springframework.boot:spring-boot-starter-data-jpa&#x27;&#xA;    runtimeOnly &#x27;org.postgresql:postgresql&#x27;&#xA;    // for logging&#xA;    implementation &#x27;org.slf4j:slf4j-api:1.7.30&#x27;&#xA;    implementation &#x27;org.slf4j:jcl-over-slf4j:1.7.30&#x27;&#xA;    implementation &#x27;org.slf4j:log4j-over-slf4j:1.7.30&#x27;&#xA;    implementation &#x27;ch.qos.logback:logback-classic:1.2.3&#x27;&#xA;    implementation &#x27;org.bytedeco:javacv:1.5.8&#x27;&#xA;}&#xA;&#xA;tasks.named(&#x27;test&#x27;) {&#xA;    useJUnitPlatform()&#xA;}&#xA;

    &#xA;

    This is my ffmpeg version :

    &#xA;

    ffmpeg version 6.0-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers&#xA;built with gcc 12.2.0 (Rev10, Built by MSYS2 project)&#xA;configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint&#xA;libavutil      58.  2.100 / 58.  2.100&#xA;libavcodec     60.  3.100 / 60.  3.100&#xA;libavformat    60.  3.100 / 60.  3.100&#xA;libavdevice    60.  1.100 / 60.  1.100&#xA;libavfilter     9.  3.100 /  9.  3.100&#xA;libswscale      7.  1.100 /  7.  1.100&#xA;libswresample   4. 10.100 /  4. 10.100&#xA;libpostproc    57.  1.100 / 57.  1.100&#xA;

    &#xA;

    Please keep in mind that I use Java 8 in this project and I hope this issue is reproducible. If you want more info please leave a comment.

    &#xA;