Recherche avancée

Médias (1)

Mot : - Tags -/illustrator

Autres articles (11)

  • Qu’est ce qu’un éditorial

    21 juin 2013, par

    Ecrivez votre de point de vue dans un article. Celui-ci sera rangé dans une rubrique prévue à cet effet.
    Un éditorial est un article de type texte uniquement. Il a pour objectif de ranger les points de vue dans une rubrique dédiée. Un seul éditorial est placé à la une en page d’accueil. Pour consulter les précédents, consultez la rubrique dédiée.
    Vous pouvez personnaliser le formulaire de création d’un éditorial.
    Formulaire de création d’un éditorial Dans le cas d’un document de type éditorial, les (...)

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

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

  • encode .wav file using ffmpeg in objective c or c

    15 février 2017, par deshu

    I have to encode .wav file and write it into same file,or other file using

    ffmpeg library,here is my code for encoding

    -(void)audioencode:(const char *)fileName
    {

       AVFrame *frame;
       AVPacket pkt;
       int i, j, k, ret, got_output;
       int buffer_size;
       FILE *f;
       uint16_t *samples;

       const char *format_name = "wav",


    const char *file_url = "/Users/xxxx/Downloads/simple-drum-beat.wav";

       avcodec_register_all();

       av_register_all();

       AVOutputFormat *format = NULL;

       for (AVOutputFormat *formatIter = av_oformat_next(NULL); formatIter != NULL; formatIter = av_oformat_next(formatIter)
    {
           int hasEncoder = NULL != avcodec_find_encoder(formatIter->audio_codec);
           if (0 == strcmp(format_name, formatIter->name)) {
               format = formatIter;
               break;
           }
       }


       AVCodec *codec = avcodec_find_encoder(format->audio_codec);

       NSLog(@"tet test tststs");

       AVCodecContext *c;

           c = avcodec_alloc_context3(codec);

           if (!c) {
               fprintf(stderr, "Could not allocate audio codec context\n");
               exit(1);
           }

           c->sample_fmt = AV_SAMPLE_FMT_S16;
           if (!check_sample_fmt(codec, c->sample_fmt)) {
               fprintf(stderr, "Encoder does not support sample format %s",
                       av_get_sample_fmt_name(c->sample_fmt));
               exit(1);
           }
       c->bit_rate = 64000;//705600;
      c->sample_rate    = select_sample_rate(codec);
       c->channel_layout = select_channel_layout(codec);
       c->channels       = av_get_channel_layout_nb_channels(c->channel_layout);
       c->frame_size = av_get_audio_frame_duration(c, 16);

       int bits_per_sample = av_get_bits_per_sample(c->codec_id);


       int frameSize   = av_get_audio_frame_duration(c,16);

           /* open it */
           if (avcodec_open2(c, codec, NULL) < 0) {
               fprintf(stderr, "Could not open codec\n");
               exit(1);
           }

           f = fopen(fileName, "wb");
           if (!f) {
               fprintf(stderr, "Could not open %s\n", fileName);
               exit(1);
           }

           /* frame containing input raw audio */
           frame = av_frame_alloc();
           if (!frame) {
               fprintf(stderr, "Could not allocate audio frame\n");
               exit(1);
           }

           frame->nb_samples     = frameSize/*c->frame_size*/;
           frame->format         = c->sample_fmt;
           frame->channel_layout = c->channel_layout;

           buffer_size = av_samples_get_buffer_size(NULL, c->channels,frameSize /*c->frame_size*/,
                                                    c->sample_fmt, 0);
           samples = av_malloc(buffer_size);
           if (!samples) {
               fprintf(stderr, "Could not allocate %d bytes for samples buffer\n",
                       buffer_size);
               exit(1);
           }

           /* setup the data pointers in the AVFrame */
           ret = avcodec_fill_audio_frame(frame, c->channels, c->sample_fmt,
                                          (const uint8_t*)samples, buffer_size, 0);
           if (ret < 0) {
               fprintf(stderr, "Could not setup audio frame\n");
               exit(1);
           }

       float t, tincr;
           /* encode a single tone sound */
           t = 0;
           tincr = 2 * M_PI * 440.0 / c->sample_rate;
           for(i=0;i<800;i++) {
               av_init_packet(&pkt);
               pkt.data = NULL; // packet data will be allocated by the encoder
               pkt.size = 0;

               for (j = 0; j < frameSize/*c->frame_size*/; j++) {
                   samples[2*j] = (int)(sin(t) * 10000);

                   for (k = 1; k < c->channels; k++)
                       samples[2*j + k] = samples[2*j];
                   t += tincr;
               }
               /* encode the samples */
               ret = avcodec_encode_audio2(c, &pkt, frame, &got_output);
               if (ret < 0) {
                   fprintf(stderr, "Error encoding audio frame\n");
                   exit(1);
               }
               if (got_output) {
                   fwrite(pkt.data, 1, pkt.size, f);
                   av_free_packet(&pkt);
               }
           }
    }

    but after encoded file size is zero,
    Please suggest what m doing wrong,any help will be appreciate, thanks in advance

  • FFMPEG : How to mix different types of image sequence inputs when creating multiple streams

    9 août 2021, par chutlies

    I am using a piece of software that generates a .txt files with rendered images. The list within that txt files is printed with the word 'file' at the beginning of the file path.

    


    Ex : file 'file:C :/Users/User/Desktop/test/Test.0001.png'

    


    I am attempting to input another image sequence as an overlay. Everything works fine if I just overlay, scale, and render. So this works fine :

    


    ffmpeg -hide_banner -y -f concat -safe 0 -i C:/test/input.txt -i "C:/test/BALL.%04d.png" -filter_complex "overlay[4K_in];[4K_in]scale=1920:1080[hdOut]" -map [hdOut] hd.mp4


    


    But when I start to split the stream to create different outputs it will only render the overlayed stream [1:v] and not the composited image.

    


    ffmpeg -hide_banner -y -f concat -safe 0 -i C:/test/input.txt -i "C:/test/BALL.%04d.png" -filter_complex "overlay,split=3[mp4HD_in][mxf720_in][mov4K_in];[mp4HD_in]scale=1920:1080[mp4HD_out];[mxf720_in]scale=1280:720[mxf720_out];[mov4K_in]scale=3840:2160[mov4K_out]" -crf 16 -vcodec libx264 -map [mp4HD_out] C:/test/hdMP4.mp4 -vcodec prores -map [mov4K_out] C:/test/MOV4K.mov -vcodec dnxhd -pix_fmt yuv422p -b:v 75M -map [mxf720_out] C:test/MXF720.mxf


    


    If I remove 'file' from the frames file path in the .txt file it works.

    


    Ex : file 'C :/Users/User/Desktop/test/Test.0001.png'

    


    Unfortunately, I am unable to change this as it's being generated and run within a piece of software. Are there any flags or something that I need to add to get around this ? Any other possible techniques beyond starting another &&ffmpeg call to generate the streams over the overlay ?

    


    I do get this in the logs :&#xA;[concat @ 0000024a0eacf280] DTS -230584300921369 < 0 out of order&#xA;DTS -230584300921369, next:40000 st:0 invalid dropping&#xA;PTS -230584300921369, next:40000 invalid dropping st:0&#xA;DTS -230584300921369, next:40000 st:0 invalid dropping&#xA;PTS -230584300921369, next:40000 invalid dropping st:0&#xA;DTS -230584300921369, next:40000 st:0 invalid dropping&#xA;PTS -230584300921369, next:40000 invalid dropping st:0&#xA;DTS -230584300921369, next:40000 st:0 invalid dropping&#xA;PTS -230584300921369, next:40000 invalid dropping st:0&#xA;[image2 @ 0000024a0eadd140] Thread message queue blocking ; consider raising the thread_queue_size option (current value : 8)

    &#xA;

  • Playing Video on a Sega Dreamcast

    9 mars 2011, par Multimedia Mike — Sega Dreamcast

    Here’s an honest engineering question : If you were tasked to make compressed video play back on a Sega Dreamcast video game console, what video format would you choose ? Personally, I would choose RoQ, the format invented for The 11th Hour computer game and later used in Quake III and other games derived from the same engine. This post explains my reasoning.

    Video Background
    One of the things I wanted to do when I procured a used Sega Dreamcast back in 2001 was turn it into a set-top video playback unit. This is something that a lot of people tried to do, apparently, to varying degrees of success. Interest would wane in a few years as it became easier and easier to crack an Xbox and install XBMC. The Xbox was much better suited to playing codecs that were getting big at the time, most notably MPEG-4 part 2 video (DivX/XviD).

    The Dreamcast, while quite capable when it was released in 1999, was not very well-equipped to deal with an MPEG-type codec. I have recently learned that there are other hackers out there on the internet who are still trying to get the most out of this system. I was contacted for advice about how to make Theora perform better on the Dreamcast.

    Interesting thing about consoles and codecs : Since you are necessarily distributing code along with your data, you have far more freedom to use whatever codecs you want for your audio and video data. This is why Vorbis and even Theora have seen quite a bit of use in video games, "internet standards" be darned. Thus, when I realized this application had no hard and fast requirement to use Theora, and that it could use any codec that fit the platform, my mind started churning. When I was programming the DC 10 years ago, I didn’t have access to the same wealth of multimedia knowledge that is currently available.

    Requirements Gathering
    What do we need here ?

    • Codec needs to run on the Sega Dreamcast ; this eliminates codecs for which only binary decoder implementations are available
    • Must decode 320x240 video at 30 fps ; higher resolutions up to 640x480 would be desirable
    • Must deliver decent quality at 12X optical read speeds (DC drive speed)
    • There must be some decent, preferably free, encoder readily available ; speed of encoding, however, is not important ; i.e., "take as long as you need, encoder"

    Theora was the go-to codec because it’s just commonly known as "the free, open source video codec". But clearly it’s not suitable for, well... any purpose, really (sorry, easy target ; OW ! stop throwing things !). VP8/WebM — Theora’s heir apparent — would not qualify either, as my prior experiments have already demonstrated.

    Candidates
    What did the big boys use for video on the Dreamcast ? A lot of games relied on CRI’s Sofdec middleware which was MPEG-1 video and a custom ADPCM format. I don’t know if I have ever seen DC games that used MPEG-1 video at a higher resolution than 320x240 (though I have not searched exhaustively). The fact that CRI used a custom ADPCM format for this application may indicate that there wasn’t enough CPU power left over to decode a perceptual, transform-based audio codec alongside the 320x240 video.

    A few other DC games used 4X Technologies’ 4XM format. The most notable licensee was Alone in the Dark : The New Nightmare (DC version only ; PC version used Bink). This codec was DCT-based but incorporated 16-bit RGB colorspace into its design, presumably to optimize for applications like game consoles that couldn’t directly handle planar YUV. AITD:TNN’s videos were 640x360, a marked improvement over the typical Sofdec fare. I was about to write off 4XM as a contender due to lack of encoder, but the encoding tools are preserved on our samples site. A few other issues, though : The FFmpeg decoder doesn’t seem to work correctly as of this writing (and nobody has noticed yet, even though it’s tested via FATE).

    What ideas do I have ? Right off the bat, I’m thinking vector quantizer (VQ). Vector quantizers are notoriously slow to compress but are blazingly fast to decompress which is why they were popular in the early days of video compression. First, there’s Cinepak. I fear that might be too simple for this application. Plus, I don’t know if existing (binary-only) compressors are very decent. It seems that they only ever had to handle small videos and I’ve heard that they can really fall over if anything more is demanded of them.

    Sorenson Video 1 is another contender. FFmpeg has an encoder (which some allege is better than Sorenson’s original compressor). However, I fear that the wonky algorithm and colorspace might not mesh well with the Dreamcast.

    My thinking quickly converged on RoQ. This was designed to run fullscreen (640x480) video on i486-class hardware. While RoQ fundamentally operates in a YUV colorspace, it’s trivial to convert it to any other colorspace during decoding and the image will be rendered in that colorspace. Plus, there are open source encoders available for the format (namely, several versions of Eric Lasota’s Switchblade encoder, one of which lives natively in FFmpeg), as well as the original proprietary encoder.

    Which Library ?
    There are several code choices here : FFmpeg (LGPL), Switchblade (GPL), and the original Quake 3 source code (GPL). There is one more option that I think might be easiest, which is the decoder Dr. Tim created when he reverse engineered the format in the first place. That has a very liberal "do whatever you like, but be nice and give me credit" license (probably qualifies as BSD).

    This code is no longer at its original home but the Wayback Machine still had a copy, which I have now mirrored (idroq.tar.gz).

    Adaptation
    Dr. Tim’s code still compiles and runs great on Linux (64-bit !) with SDL output. I would like to get it ported to the Dreamcast using the same SDL output, which KallistiOS supports. Then, there is the matter of fixing the longstanding chroma bug in the original sample decoder (described here). The decoder also needs to be modified to natively render RGB565 data, as that will work best with the DC’s graphics hardware.

    After making the code work, I want to profile it and test whether it can handle full-frame 640x480 playback at 30 frames/second. I will need to contrive a sample to achieve this.

    Unfortunately, things went off the rails pretty quickly when I tried to get the RoQ decoder ported to DC/KOS. It looks like there’s a bug in KallistiOS’s minimalistic standard C library, or at least a discrepancy with my desktop Linux system. When you read to the end of a file and then seek backwards to someplace that isn’t the end, is the file still in EOF state ?

    According to my Linux desktop :

    open file ;          feof() = 0
    seek to end ;        feof() = 0
    read one more byte ; feof() = 1
    seek back to start ; feof() = 0
    

    According to KallistiOS :

    open file ;          feof() = 0
    seek to end ;        feof() = 0
    read one more byte ; feof() = 1
    seek back to start ; feof() = 1
    

    Here’s the seek-test.c program I used to test this issue :

    C :
    1. #include <stdio .h>
    2.  
    3. int main()
    4. {
    5.   FILE *f ;
    6.   unsigned char byte ;
    7.  
    8.   f = fopen("seek_test.c", "r") ;
    9.   printf("open file ;     feof() = %d\n", feof(f)) ;
    10.   fseek(f, 0, SEEK_END) ;
    11.   printf("seek to end ;    feof() = %d\n", feof(f)) ;
    12.   fread(&byte, 1, 1, f) ;
    13.   printf("read one more byte ; feof() = %d\n", feof(f)) ;
    14.   fseek(f, 0, SEEK_SET) ;
    15.   printf("seek back to start ; feof() = %d\n", feof(f)) ;
    16.   fclose(f) ;
    17.  
    18.   return 0 ;
    19. }

    EOF
    Speaking of EOF, I’m about done for this evening.

    What codec would you select for this task, given the requirements involved ?