Recherche avancée

Médias (1)

Mot : - Tags -/artwork

Autres articles (97)

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

  • Use, discuss, criticize

    13 avril 2011, par

    Talk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
    The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
    A discussion list is available for all exchanges between users.

  • Mediabox : ouvrir les images dans l’espace maximal pour l’utilisateur

    8 février 2011, par

    La visualisation des images est restreinte par la largeur accordée par le design du site (dépendant du thème utilisé). Elles sont donc visibles sous un format réduit. Afin de profiter de l’ensemble de la place disponible sur l’écran de l’utilisateur, il est possible d’ajouter une fonctionnalité d’affichage de l’image dans une boite multimedia apparaissant au dessus du reste du contenu.
    Pour ce faire il est nécessaire d’installer le plugin "Mediabox".
    Configuration de la boite multimédia
    Dès (...)

Sur d’autres sites (10766)

  • Fuji .mov file converted by ffmpeg doesn't play in Windows Media Player [closed]

    30 août 2023, par glipster

    My Fuji X-T3 generates an FHD movie as a .mov with HEVC video and PPM audio. The new Media Player on Windows won't play this (without buying a codec) so I convert it to .mp4 using ffmpeg CLI (ffmpeg -i in.mov out.mp4). The resulting .mp4 file uses AVC video and AAC LC audio. This plays fine in VLC, but will not play in Windows Media Player nor Media Player. I've experimented with various options, but nothing seems to work.
For the original source .mov file, MediaInfo identifies 3 streams :
1stVid : English, 201Mb/s, 1920*1080 (16:9), at 29.970 FPS, HEVC (Main10@L5.2@High)
1stAud : english, 2304 kb/s, 48.0 hKz, 24 bits, 2 channels,PCM (Little/Signed)
1 : QuickTime TC

    


    The Output .mp4 file shows :
1stVid : English 3312kb/s, 1920*1080 (16:9) at 29.970 FPS, AVC (High 10@L4)(CABAC/4 RefFrames)
1stAud : English 132 kb/s, 48.0 kHz, 2 channels, AC LC
1 : QuickTime TC

    


    Using ffmpeg CLI, I tried changing the bitrates for the video and audio, I tried removing the timecode stream, tried a different AAC codec, tried moving the metadata to the front (-movflags faststart), also tried -strict experimental, tried first converting to .mkv (which does work) and then converting to .mp4 (with and without copy). I had hoped one of these might work ; but nothing has worked thus far.

    


    Has anyone else solved this problem ? Any help would be greatly appreciated.

    


  • Does this FFMPEG command create videos compatible with ABR playback on video.js player ?

    16 mars 2018, par alchemical

    We’re working on a site that will allow users to upload videos. It then encodes these videos into 4 bitrates. The initial version just lets the user manually select which of the 4 version they would like to play. However, the final version should allow for adaptive bitrate ABR using video.js player. Ideally, we should not need to re-encode the videos again for them to stream with ABR.

    I’m trying to understand if the current FFMPEG statement will support ABR :

    -i \"0\" -i \"1\" -threads 5 -filter_complex \"
    [0:v]scale=-2 :2[bg] ;[1:v]scale=-2:40*2/1080[watermark_scaled] ;[bg]
    [watermark_scaled]overlay=x=main_w-overlay_w-(10*
    2/1080):10*2/1080\" -acodec copy -vcodec libx264 -b:v
    3 \"4\"

  • Simple FFMpeg player for Android

    23 janvier 2017, par don11995

    I have a problem with the output of AVFrame (AVPicture) into the ANativeWindow. I wrote simpe test code :

    void *Player::readThread(void * reserved) {
       ALOGD("Read thread started!");
       VideoState *state =  (VideoState *) reserved;

       int err = 0;
       int ret;
       int i;
       AVFormatContext *formatContext = NULL;
       AVCodecContext *codecContext = NULL;
       AVCodecParameters *codecParams = NULL;
       AVCodecID codecID = AV_CODEC_ID_NONE;
       AVCodec *decoder = NULL;
       AVFrame *frame = NULL;
       AVFrame *frameRGBA = NULL;
       AVPacket packet;
       struct SwsContext *img2RGBAContext;
       ANativeWindow_Buffer windowBuffer;
       uint8_t *RGBABuffer = NULL;
       int RGBABufferSize = 0;
       int got = 0;
       int windowWidth = 640;
       int windowHeight = 480;

       const char *url = state->url.c_str();
       if (url == NULL || strlen(url) <= 0) {
           err = ERROR_UNKNOWN_URI;
           goto exit;
       }
       ALOGD("URL to play: %s", url);

       state->isPlaying = true;

       formatContext = avformat_alloc_context();
       if (formatContext == NULL) {
           err = ERROR_OUT_OF_MEMORY;
           goto exit;
       }
       ALOGD("formatContext allocated");

       frame = av_frame_alloc();
       if (frame == NULL) {
           err = ERROR_OUT_OF_MEMORY;
           goto exit;
       }
       ALOGD("frame allocated");

       frameRGBA = av_frame_alloc();
       if (frameRGBA == NULL) {
           err = ERROR_OUT_OF_MEMORY;
           goto exit;
       }
       ALOGD("frameRGBA allocated");

       ret = avformat_open_input(&formatContext, url, NULL, NULL);
       if (ret != 0) {
           err = ERROR_CAN_NOT_OPEN_URI;
           goto exit;
       }
       ALOGD("formatContext opened");

       ret = avformat_find_stream_info(formatContext, NULL);
       if (ret != 0) {
           err = ERROR_CAN_NOT_FIND_STREAM_INFO;
           goto exit;
       }
       ALOGD("file info found");

       for (i = 0; i < formatContext->nb_streams; i++) {
           AVStream *stream = formatContext->streams[i];
           AVCodecParameters *codecParams = stream->codecpar;
           AVCodecID codecID = codecParams->codec_id;
           AVMediaType type = codecParams->codec_type;
           const char *codecName = avcodec_get_name(codecID);
           switch (type) {
               case AVMEDIA_TYPE_AUDIO:
                   ALOGD("Stream [%d]: type=AUDIO codecName=%s",i,codecName);
                   break;
               case AVMEDIA_TYPE_VIDEO:
                   ALOGD("Stream [%d]: type=VIDEO codecName=%s",i,codecName);
                   if (state->video_stream == -1) {
                       state->video_stream = i;
                   }
                   break;
               case AVMEDIA_TYPE_SUBTITLE:
                   ALOGD("Stream [%d]: type=SUBTITLE codecName=%s",i,codecName);
                   break;
               default:
                   ALOGD("Stream [%d]: type=UNKNOWN codecName=%s",i,codecName);
                   break;
           }
       }

       if (state->video_stream == -1) {
           err = ERROR_CAN_NOT_FIND_ANY_STREAM;
           goto exit;
       }
       ALOGD("Video stream index: %d",state->video_stream);

       codecParams = formatContext->streams[state->video_stream]->codecpar;
       codecID = codecParams->codec_id;
       if (codecID == AV_CODEC_ID_NONE) {
           err = ERROR_UNKNOWN_CODEC;
           goto exit;
       }
       ALOGD("Codec found");

       decoder = avcodec_find_decoder(codecID);
       if (decoder == NULL) {
           err = ERROR_CAN_NOT_FIND_DECODER;
           goto exit;
       }
       ALOGD("Decoder found");

       codecContext = avcodec_alloc_context3(decoder);
       if (codecContext == NULL) {
           err = ERROR_OUT_OF_MEMORY;
           goto exit;
       }
       ALOGD("codecContext created");

       ret = avcodec_parameters_to_context(codecContext, codecParams);
       if (ret < 0) {
           err = ERROR_CAN_NOT_START_DECODER;
           goto exit;
       }
       ALOGD("codecContext params was set");

       ret = avcodec_open2(codecContext, decoder, NULL);
       if (ret != 0) {
           err = ERROR_CAN_NOT_START_DECODER;
           goto exit;
       }
       ALOGD("Decoder opened");

       if (state->window != NULL) {
           ANativeWindow_setBuffersGeometry(state->window, codecParams->width, codecParams->height, WINDOW_FORMAT_RGB_565);
           ALOGD("Window geometry changed");
       }

       if (codecParams->width>0 && codecParams->height>0) {
           ALOGD("Video width: %d\nVideo height: %d",codecParams->width, codecParams->height);
           img2RGBAContext = sws_getCachedContext(
               NULL,
               codecParams->width,
               codecParams->height,
               (AVPixelFormat)codecParams->format,
               codecParams->width,
               codecParams->height,
               AV_PIX_FMT_RGB565,
               SWS_BICUBIC,
               NULL,
               NULL,
               NULL);
           if (img2RGBAContext == NULL) {
               err = ERROR_OUT_OF_MEMORY;
               goto exit;
           }
       } else {
           err = ERROR_CAN_NOT_START_DECODER;
           goto exit;
       }
       ALOGD("img2RGBAContext created");

       RGBABufferSize = av_image_get_buffer_size(AV_PIX_FMT_RGB565, codecParams->width, codecParams->height, 1);
       RGBABuffer = (uint8_t *)malloc(RGBABufferSize*sizeof(uint8_t));
       if (RGBABuffer == NULL) {
           err = ERROR_OUT_OF_MEMORY;
           goto exit;
       }
       ALOGD("frameRGBABuffer size %d bytes",RGBABufferSize);

       ret = av_image_alloc(frameRGBA->data, frameRGBA->linesize, codecParams->width, codecParams->height, AV_PIX_FMT_RGB565, 1);
       if (ret < 0) {
           err = ERROR_OUT_OF_MEMORY;
           goto exit;
       }

       while (av_read_frame(formatContext, &packet) >= 0 && state->isPlaying) {
           if (packet.stream_index != state->video_stream) {
               ALOGD("Packet is not a video packet. Discard.");
               av_packet_unref(&packet);
               continue;
           }
           ret = avcodec_send_packet(codecContext, &packet);
           if (ret != 0) {
               ALOGE("Can not send packet to decode");
               av_packet_unref(&packet);
               continue;
           }
           ret = avcodec_receive_frame(codecContext, frame);
           if (ret != 0) {
               ALOGE("Can not receive decoded frame yet");
               av_packet_unref(&packet);
               continue;
           }
           ALOGD("Converting image to RGB565...");
           sws_scale(img2RGBAContext, frame->data, frame->linesize, 0, codecParams->height, frameRGBA->data, frameRGBA->linesize);
           ALOGD("Image converted to RGB565");
           av_image_copy_to_buffer(RGBABuffer,
               RGBABufferSize,
               frameRGBA->data,
               frameRGBA->linesize,
               AV_PIX_FMT_RGB565,
               codecParams->width,
               codecParams->height,
               1);
           ALOGD("Image wrote into frameRGBABuffer");
           if (ANativeWindow_lock(state->window, &windowBuffer, NULL) == 0) {
               ALOGD("Writing %d bytes to windowBuffer", RGBABufferSize);
               memcpy(windowBuffer.bits, RGBABuffer, RGBABufferSize);
               ANativeWindow_unlockAndPost(state->window);
               ALOGD("Image displayed");
           } else {
               ALOGE("Can not display frame");
           }
           av_packet_unref(&packet);
       }

       exit:
       ALOGD("Releasing resources...");
       if (err!=0) {
           state->isPlaying = false;
           #if !LOG_NDEBUG
               switch (err) {
                   case  ERROR_OUT_OF_MEMORY:
                       ALOGE("Out of memory!");
                       break;
                   case  ERROR_CAN_NOT_OPEN_URI:
                       ALOGE("Can not open URI: %s", url);
                       break;
                   case  ERROR_UNKNOWN_URI:
                       ALOGE("Unknown URI to open!");
                       break;
                   default:
                       ALOGE("Unknown error");
                       break;
               }
           #endif
           // TODO: send error to listener
       }
       sws_freeContext(img2RGBAContext);
       free(RGBABuffer);
       av_free(frame);
       av_freep(&frameRGBA->data[0]);
       av_packet_unref(&packet);
       avcodec_close(codecContext);
       avformat_close_input(&formatContext);
       avformat_free_context(formatContext);
       ALOGD("Read thread closed!");
    }

    I faced with the next problem in some videos :
    enter image description here
    For example, this video gives me next logs :

    10-23 14:53:42.212 26970-4527/com.don.ffmpegplayer D/Player: Read thread started!
    10-23 14:53:42.212 26970-4527/com.don.ffmpegplayer D/Player: URL to play: http://www.ex.ua/load/280797285
    10-23 14:53:42.212 26970-4527/com.don.ffmpegplayer D/Player: formatContext allocated
    10-23 14:53:42.212 26970-4527/com.don.ffmpegplayer D/Player: frame allocated
    10-23 14:53:42.212 26970-4527/com.don.ffmpegplayer D/Player: frameRGBA allocated
    10-23 14:53:42.846 26970-4527/com.don.ffmpegplayer D/Player: formatContext opened
    10-23 14:53:42.879 26970-4527/com.don.ffmpegplayer D/Player: file info found
    10-23 14:53:42.879 26970-4527/com.don.ffmpegplayer D/Player: Stream [0]: type=VIDEO codecName=h264
    10-23 14:53:42.879 26970-4527/com.don.ffmpegplayer D/Player: Stream [1]: type=AUDIO codecName=ac3
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Stream [2]: type=AUDIO codecName=ac3
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Stream [3]: type=AUDIO codecName=ac3
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Stream [4]: type=SUBTITLE codecName=subrip
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Video stream index: 0
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Codec found
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Decoder found
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: codecContext created
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: codecContext params was set
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Decoder opened
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Window geometry changed
    10-23 14:53:42.880 26970-4527/com.don.ffmpegplayer D/Player: Video width: 1024
                                                                Video height: 424
    10-23 14:53:42.882 26970-4527/com.don.ffmpegplayer D/Player: img2RGBAContext created
    10-23 14:53:42.882 26970-4527/com.don.ffmpegplayer D/Player: frameRGBABuffer size 868352 bytes
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer E/Player: Can not receive decoded frame yet
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.889 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.890 26970-4527/com.don.ffmpegplayer D/Player: Packet is not a video packet. Discard.
    10-23 14:53:42.899 26970-4527/com.don.ffmpegplayer E/Player: Can not receive decoded frame yet
    10-23 14:53:42.905 26970-4527/com.don.ffmpegplayer D/Player: Converting image to RGB565...
    10-23 14:53:42.918 26970-4527/com.don.ffmpegplayer D/Player: Image converted to RGB565
    10-23 14:53:42.919 26970-4527/com.don.ffmpegplayer D/Player: Image wrote into frameRGBABuffer
    10-23 14:53:42.920 26970-4527/com.don.ffmpegplayer D/Player: Writing 868352 bytes to windowBuffer
    10-23 14:53:42.921 26970-4527/com.don.ffmpegplayer D/Player: Image displayed
    10-23 14:53:42.926 26970-4527/com.don.ffmpegplayer D/Player: Converting image to RGB565...
    10-23 14:53:42.934 26970-4527/com.don.ffmpegplayer D/Player: Image converted to RGB565
    10-23 14:53:42.935 26970-4527/com.don.ffmpegplayer D/Player: Image wrote into frameRGBABuffer
    10-23 14:53:42.936 26970-4527/com.don.ffmpegplayer D/Player: Writing 868352 bytes to windowBuffer
    10-23 14:53:42.937 26970-4527/com.don.ffmpegplayer D/Player: Image displayed

    What am I doing wrong ? If I understood correctly, I need to follow next steps :

    1. Get decoded AVFrame from decoder
    2. Convert AVFrame data to RGB565 or RGB8888
    3. Get pixel data from converted frame
    4. Write it to native window

    But in this code two points confuse me : is ANative_setBuffersGeometry called correctly and why frameRGBABuffer size is 868352 bytes ? If video size is 1024*424 frameRGBABuffer size must be width*height*4, isn’t it ? If I change frameRGBABuffer size to width*height*4 program carashes after first image diplayed. I pass video dimmensions to ANative_setBuffersGeometry.

    For any help thanks in anvance.