Recherche avancée

Médias (9)

Mot : - Tags -/soundtrack

Autres articles (107)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

Sur d’autres sites (13866)

  • FFmpeg Streaming Video SpringBoot endpoint not show video duration in video players

    7 avril 2024, par lxluxo23

    it turns out that I've been working on a personal project just out of curiosity.
the main function is to stream video by first encoding it through ffmpeg
then playback said video from any other device
call it "plex" very very primitive

    


    although I achieve my goal which is to encode and send the video to the devices that make the request
this video is sent so to speak as a live broadcast.
I can only pause it, no forward or rewind, anyone have any idea what I am doing wrong or if I should take some other approach either in my service or controller ?

    


    I leave fragments of my code

    


    THE CONTROLLER

    


    @RestController&#xA;@RequestMapping("/api")&#xA;@Log4j2&#xA;public class StreamController {&#xA;&#xA;    @Autowired&#xA;    VideoStreamingService videoStreamingService;&#xA;&#xA;    @Autowired&#xA;    VideoService videoService;&#xA;&#xA;&#xA;    @GetMapping("/stream/{videoId}")&#xA;    public ResponseEntity<streamingresponsebody> livestream(@PathVariable Long videoId,@RequestParam(required = false)  String codec) {&#xA;        Video video = videoService.findVideoById(videoId);&#xA;        if (video != null) {&#xA;            Codec codecEnum = Codec.fromString(codec);&#xA;            return ResponseEntity.ok()&#xA;                    .contentType(MediaType.valueOf("video/mp4"))&#xA;                    .body(outputStream -> videoStreamingService.streamVideo(video.getPath(), outputStream,codecEnum));&#xA;        }&#xA;        return ResponseEntity.notFound().build();&#xA;    }&#xA;}&#xA;</streamingresponsebody>

    &#xA;

    THE SERVICE

    &#xA;

    @Service&#xA;public class VideoStreamingService {&#xA;&#xA;    public void streamVideo(String videoPath, OutputStream outputStream, Codec codec) {&#xA;&#xA;        FFmpeg ffmpeg = FFmpeg.atPath()&#xA;                .addArguments("-i", videoPath)&#xA;                .addArguments("-b:v", "5000k")&#xA;                .addArguments("-maxrate", "5000k")&#xA;                .addArguments("-bufsize", "10000k")&#xA;                .addArguments("-c:a", "aac")&#xA;                .addArguments("-b:a", "320k")&#xA;                .addArguments("-movflags", "frag_keyframe&#x2B;empty_moov&#x2B;faststart")&#xA;                .addOutput(PipeOutput.pumpTo(outputStream)&#xA;                        .setFormat("mp4"))&#xA;                .addArgument("-nostdin");&#xA;        if (codec == Codec.AMD) {&#xA;            ffmpeg.addArguments("-profile:v", "high");&#xA;        }&#xA;        ffmpeg.addArguments("-c:v", codec.getFfmpegArgument());&#xA;        ffmpeg.execute();&#xA;    }&#xA;}&#xA;

    &#xA;

    I have some enums to vary the encoding and use hardware acceleration or not.

    &#xA;

    and here is an example from my player&#xA;the endpoint is the following

    &#xA;

    http://localhost:8080/api/stream/2?codec=AMD&#xA;screenshot

    &#xA;

    I'm not sure if there's someone with more knowledge in either FFmpeg or Spring who could help me with this minor issue, I would greatly appreciate it. I've included the URL of the repository in case anyone would like to review it when answering my question

    &#xA;

    repo

    &#xA;

    I tried changing the encoding format.&#xA;I tried copying the metadata from the original video.&#xA;I tried sending a custom header.&#xA;None of this has worked.

    &#xA;

    I would like to achieve what is mentioned in many sites, which is when you load a video from the network, the player shows how much of that video you have in the local "buffer".

    &#xA;

  • Rotation on Video frame image makes video quality low and becomes green ffmpeg opencv

    21 novembre 2013, par bindal

    I am working on one application in which i have to record video on touch which includes pause recording so , i am using FFmpegFrameRecorder for that

    But when i am recording video with rear camera then in onpreviewframe
    i am getting yuvIplImage in portrait mode that is correct but when i
    am recording with front camera in portrait mode then in onPreviewframe
    i am getting image upside down , so my half, so from that result my
    half video is showing in correct portrait mode and remaining half
    video id showing upside down, so i am applying rotation on yuvIplImage
    when recording from front camera

    Here is my onPreviewFrame Method

    @Override
               public void onPreviewFrame(byte[] data, Camera camera) {

                   long frameTimeStamp = 0L;
                   if (mAudioTimestamp == 0L &amp;&amp; firstTime > 0L)
                       frameTimeStamp = 1000L * (System.currentTimeMillis() - firstTime);
                   else if (mLastAudioTimestamp == mAudioTimestamp)
                       frameTimeStamp = mAudioTimestamp + frameTime;
                   else {
                       long l2 = (System.nanoTime() - mAudioTimeRecorded) / 1000L;
                       frameTimeStamp = l2 + mAudioTimestamp;
                       mLastAudioTimestamp = mAudioTimestamp;
                   }
                   synchronized (mVideoRecordLock) {
                       if (recording &amp;&amp; rec &amp;&amp; lastSavedframe != null
                               &amp;&amp; lastSavedframe.getFrameBytesData() != null
                               &amp;&amp; yuvIplImage != null) {
                           mVideoTimestamp += frameTime;
                           if (lastSavedframe.getTimeStamp() > mVideoTimestamp)
                               mVideoTimestamp = lastSavedframe.getTimeStamp();
                           try {
                               yuvIplImage.getByteBuffer().put(
                                       lastSavedframe.getFrameBytesData());
                               videoRecorder.setTimestamp(lastSavedframe
                                       .getTimeStamp());

                               // if (defaultCameraId == 1) {
                               // CvSize size = new CvSize(yuvIplImage.height(),
                               // yuvIplImage.width());
                               // IplImage yuvIplImage2 = opencv_core.cvCreateImage(
                               // size, yuvIplImage.depth(),
                               // yuvIplImage.nChannels());
                               //
                               // videoRecorder.record(yuvIplImage2);
                               // } else {

                               // }



                               if (defaultCameraId == 1) {
                                   yuvIplImage = rotate(yuvIplImage, 270);

                                   videoRecorder.record(yuvIplImage);
                               }else
                               {
                                   videoRecorder.record(yuvIplImage);
                               }
                               // else

                               // opencv_core.cvTranspose(yuvIplImage, yuvIplImage);
                           } catch (com.googlecode.javacv.FrameRecorder.Exception e) {
                               e.printStackTrace();
                           }
                       }
                       lastSavedframe = new SavedFrames(data, frameTimeStamp);
                   }
               }
           }

    Here is rotation function

    public static IplImage rotate(IplImage image, double angle) {
       IplImage copy = opencv_core.cvCloneImage(image);

       IplImage rotatedImage = opencv_core.cvCreateImage(
               opencv_core.cvGetSize(copy), copy.depth(), copy.nChannels());
       CvMat mapMatrix = opencv_core.cvCreateMat(2, 3, opencv_core.CV_32FC1);

       // Define Mid Point
       CvPoint2D32f centerPoint = new CvPoint2D32f();
       centerPoint.x(copy.width() / 2);
       centerPoint.y(copy.height() / 2);

       // Get Rotational Matrix
       opencv_imgproc.cv2DRotationMatrix(centerPoint, angle, 1.0, mapMatrix);
       // opencv_core.cvReleaseImage(copy);

       // Rotate the Image
       opencv_imgproc.cvWarpAffine(copy, rotatedImage, mapMatrix,
               opencv_imgproc.CV_INTER_CUBIC
                       + opencv_imgproc.CV_WARP_FILL_OUTLIERS,
               opencv_core.cvScalarAll(170));
       opencv_core.cvReleaseImage(copy);
       opencv_core.cvReleaseMat(mapMatrix);
       return rotatedImage;
    }

    But Final output of video makes half of the video green

    Thanks in advance

  • FFMPEG : burn SRT files to a transparent video file ?

    19 septembre 2017, par Taapo

    I need to create several versions of srt/ssa subtitles for another editor. To minimize the problems that can rise (encoding, etc) I want to provide a separate AVI file that can be overlayed onto another file.

    So I would like to use FFMPEG to burn an "empty" (transparent) video file which has the length of the subtitle file, and with the subtitles burnt in. How would this be done in FFMPEG ?

    Before someone says this is a bad idea (which someone already did), there are use cases where this technique would be helpful. I’m fully aware that this would create big files, but most real-life editors don’t care about size - but about solutions. Judging from other posts (on other forums) there seem to be a need for others as well. And since a professional subtitler like Lemony Subtitler is offering the option, I suppose this is not really a bad idea.