Newest 'ffmpeg' Questions - Stack Overflow

http://stackoverflow.com/questions/tagged/ffmpeg

Les articles publiés sur le site

  • Is there a set of working P/Invoke declarations for FFMpeg, libavutil, libavformat and libavcodec in .NET ?

    30 août 2011, par casperOne

    I'm currently looking to access libavutil, libavformat and libavcodec (all part of FFMpeg) from .NET.

    Currently, I'm getting the libraries from the automated builds of the shared FFMpeg package performed every night for Windows 32-bit.

    I am also using the code from the ffmpeg-sharp project. In that project, I have removed a number of classes that were not compiling (they are wrapper classes not the P/Invoke declarations).

    The code compiles fine, but I am running into a few issues.

    First, it appears that the build of av*.dll uses the cdecl calling convention, as I was receiving a number of PInvokeStackImbalanceException when trying to call av_open_input_file. This was easy enough to change to get it to work right. The AVFormatContext structure is populated.

    After that, I want to call av_find_stream_info to get information about the streams in the file. However, when calling that with the AVFormatContext retrieved from the call to av_open_input_file, an AccessViolationException is thrown indicating that I am trying to read or write from protected memory.

    Has anyone used P/Invoke to access the libavutil, libavformat and libavcodec dll libraries through P/Invoke and have gotten it to work?

    I should mention that working with the command-line version of FFMpeg, while a solution, is not a viable solution in this case, access needs to occur through the libraries. The reason for this is that I'd have to thrash the disk way too much to do what I need to do (I have to do a frame-by-frame analysis of some very high definition video) and I want to avoid the disk as much as possible.

  • FFMPEG Convert from mov, mjpeg codec error

    30 août 2011, par vitel

    I've a problem when i try to convert a .mov to a .webm with ffmpeg... I've no problems from any others video format.

    I've enable the Quicktime formats "--enable-zlib" and with the "ffmpeg -formats" command i get .mov files as encode or decode.

    When i try to transform a video i get this :

      # ffmpeg -i /var/www/static/uploads/usersVideos/cavity0.mov -vcodec mjpeg  /var/www/static/uploads/usersVideos/cavity.webm
     ffmpeg version N-32159-gc70e852, Copyright (c) 2000-2011 the FFmpeg developers
     built on Aug 30 2011 14:16:07 with gcc 4.4.5
     configuration: --enable-gpl --enable-libmp3lame --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab --enable-libvpx
       libavutil    51. 14. 0 / 51. 14. 0
       libavcodec   53. 12. 0 / 53. 12. 0
       libavformat  53. 10. 0 / 53. 10. 0
       libavdevice  53.  3. 0 / 53.  3. 0
       libavfilter   2. 37. 0 /  2. 37. 0
       libswscale    2.  0. 0 /  2.  0. 0
       libpostproc  51.  2. 0 / 51.  2. 0
     [mov,mp4,m4a,3gp,3g2,mj2 @ 0x13b7320] stream 0, error opening alias:     path='/matlab_sv13/work/cavity_flow/up500.jpg', dir='cavity_flow', filename='up500.jpg', volume='NONAME', nlvl_from=1, nlvl_to=1**
     [mov,mp4,m4a,3gp,3g2,mj2 @ 0x13b7320] Could not find codec parameters (Video: mjpeg (jpeg / 0x6765706A), 434x343, 4762 kb/s)
     /var/www/static/uploads/usersVideos/cavity0.mov: could not find codec parameters
     [1]    8265 exit 1     ffmpeg -i /var/www/static/uploads/usersVideos/cavity0.mov -vcodec mjpeg
    

    Someone has an idea?

  • Streaming without Content-Length in response

    29 août 2011, par kain

    I'm using Node.js, Express (and connect), and fluent-ffmpeg.

    We want to stream audio files that are stored on Amazon S3 through http.

    We have all working, except that we would like to add a feature, the on-the-fly conversion of the stream through ffmpeg.

    This is working well, the problem is that some browsers checks in advance before actually getting the file.

    Incoming requests containing the Range header, for which we reply with a 206 with all the info from S3, have a fundamental problem: we need to know in advance the content-length of the file.

    We don't know that since it is going through ffmpeg.

    One solution might be to write out the resulting content-length directly on S3 when storing the file (in a special header), but this means we have to go through the pain of having queues to encode after upload just to know the size for future requests. It also means that if we change compressor or preset we have to go through all this over again, so it is not a viable solution.

    We also noticed big differencies in the way Chrome and Safari request the audio tag src, but this may be discussion for another topic.

    Fact is that without a proper content-length header in response everything seems to break or browsers goes in an infinite loop or restart the stream at pleasure.

    Ideas?

  • Decode h264 video

    29 août 2011, par john bowring

    I am looking for a way to decode h264 (or indeed any video format) using c#. The ultimate goal is to be able to decode the images and very strictly control the playback in real time. The project I am working on is a non-linear video art piece where the HD footage is required to loop and edit itself on the fly, playing back certain frame ranges and then jumping to the next randomly selected frame range seamlessly.

    I have created an app which reads image files (jpegs) in from the disk and plays them on screen in order, I have total control over which frame is loaded and when it is displayed but at full HD res it takes slightly longer than I want to load the images from hard drive (which are about 500k each), I am thinking that using a compressed video format would be smaller and therefore faster to read and decode into a particular frame however I cannot find any readily available way to do this.

    Are there any libraries which can do this? i.e. extract an arbitrary frame from a video file and serve it to my app in less time than it takes to show the frame (running at 25fps), I have looked into the vlc libraries and wrappers for ffmpeg but I don't know which would be better or if there would be another even better option. Also I don't know which codec would be the best choice as some are key frame based making arbitrary frame extraction probably very difficult.

    Any advice welcome, thanks

  • Working way to make video from images in C#

    29 août 2011, par Jim Mischel

    Does anybody have a known reliable way to create a video from a series of image files? Before you mod me down for not searching for the answer before posting the question, and before you fire off a simple message like "use FFMPEG," read the rest of this message.

    I'm trying to create a video, it doesn't matter too much what format as long as it's widely supported, from a series of images (.jpg, .bmp, etc.). My platform is Windows Server 2008, 64-bit. If I can make the video from within my C# program, that's great, but I'm not averse to writing a series of image files to a directory and then firing off an external program to make a video from those images.

    The only constraints are: it must work on my Windows Server 2008 system, and be scriptable. That is, no GUI programs that require operator intervention.

    I found a number of similar questions on StackOverflow, and have tried several of the solutions, all with varying degrees of frustration and none with anything like success.

    FFMPEG looks like a great program. Maybe it is, on Linux. The two Windows builds I downloaded are broken. Given this command line:

      ffmpeg -r 1 -f image2 -i jpeg\*.jpg video.avi
    

    One of the builds reads the images and then crashes due to data execution prevention. The other reads the first file and then spits out an error message that says "cannot find suitable codec for file jpeg/image2.jpg". Helpful, that. In any case, FFMPEG looks like a non-starter under Windows.

    One answer to a previous posting recommended Splicer . It looks like pretty good code. I compiled the samples and tried to run, but got some cryptic error message about a file not found. It looks like a COM class isn't registered. I suppose I need to install something (DirectShow, maybe, although I thought that was already installed?). Depending on what's required, I might have a difficult time justifying its installation on a server. ("What? Why do you need that on a server?")

    Another answer suggested the AviFile library from Code Project. That looks simple enough: a wrapper around the Windows AviFile subsystem. Except that the AVI files the package creates appear to have all of the frames, but only the first frame shows when I play the AVI in Windows Media Player. Well, that and if you try to create a compressed video, the program throws an exception.

    So, I'm left wondering if there is a good, reliable way to do what I want: on a Windows system, create an AVI or other common video file format from a series of images, either through a .NET API or using an external program. Any help?