Newest 'ffmpeg' Questions - Stack Overflow

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

Les articles publiés sur le site

  • Sync video only streaming using pts

    26 février 2014, par user2846108

    I am using ffmpeg for streaming video alone (no audio) and SDL 2.0 for display. So far, I have decoded the packets as soon as they arrive and present it to the renderer. But I would like to display the video frames by syncing with PTS value so that the receiver does not go out of sync with the sender (Since I am streaming real time video over RTSP). I have read dranger tutorial but I cannot understand it. My pseudo code looks like this:

    //Create SDL window
    SDL_Window * window = SDL_CreateWindow("SDL", 
    SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, w, h, 0); 
    //Create renderer for the window
    SDL_Renderer * renderer = SDL_CreateRenderer(window, -1, 0); 
    
    //Allocate frame
    frame = avcodec_alloc_frame(); 
    
    //Read frame 
    while (av_read_frame(format_context, &avpacket) >= 0) { 
    if (avpacket.stream_index == videostream) { 
    //Decode the frame
    avcodec_decode_video2(codec_context, frame, &frame_finished, 
    &avpacket); 
    if (frame_finished) {
      //update the YUV texture with the decoded frame (SDL_UpdateYUVTexture)
      //Copy the texture to the renderer (SDL_RendererCopy)
      //Present the rederer (SDL_RenderPresent)
     }
    
    //Handle SDL event
    SDL_PollEvent(&event)
    }
    

    Can one help me how and where I can use PTS in the above code (a pseudo code is much better) and implement the synchronization between sender and receiver (such that if more packets are accumulated in the buffer, I should drop some packets so that latency between sender and receiver does not grow up as the time goes)?

    Thanks in advance.

  • Debian Wheezy ffmpeg version 1.2.5 and OpenVC

    26 février 2014, par user3135427

    I recently installed "ffmpeg version 1.2.5" from "deb ftp://ftp.deb-multimedia.org wheezy-backports main" on my Debian Wheezy.

    I wrote some code with OpenCV and now I get the following error when I try to open a video.

    [NULL @ 0x21e2ec0] Value 4613937818241073152.000000 for parameter 'thread_type' out of range [NULL @ 0x21e2ec0] Value -4616189618054758400.000000 for parameter 'request_sample_fmt' out of range [mov,mp4,m4a,3gp,3g2,mj2 @ 0x282d580] decoding for stream 0 failed [mov,mp4,m4a,3gp,3g2,mj2 @ 0x282d580] Could not find codec parameters (Video: h264 (avc1 / 0x31637661), 23069 kb/s) [IMGUTILS @ 0x7ffff1da3fd0] Picture size 0x0 is invalid [IMGUTILS @ 0x7ffff1da3fe0] Picture size 0x0 is invalid

  • FFMPEG options for video streaming

    26 février 2014, par YorgZ

    I am trying to use ffmpeg to stream video using ffserver. You will find below the ffserver1.conf file, and the log output from the ffmpeg command.

    One of the errors references presets, and everytime I try to use presets I get the error "File not found, even after copying all the preset files in the current directory.

    Thanks for the help.

    YorgZ

    FFSERVER CONF
    
    YorgZ-Macbook$cat ffserver1.conf
    Port 8090
    BindAddress 0.0.0.0
    MaxHTTPConnections 2000
    MaxClients 1000
    MaxBandwidth 4000
    CustomLog -
    
    
    
          File feed1.ffm
          FileMaxSize 1G
          ACL allow 127.0.0.1
          ACL allow localhost
          ACL allow 10.0.0.0 10.0.255.255
    
    
    
        Feed feed1.ffm
        Format mp4
        VideoFrameRate  29.97
        VideoBitRate    500
        VideoSize   640x352
    
    
    
        Format status
        ACL allow localhost
        ACL allow 10.0.0.0 10.0.255.255
    
    YorgZ-Macbook$
    
    FFMPEG COMMAND AND LOG 
    
     YorgZ-Macbook$./ffmpeg -loglevel debug -i TestStream.mp4  -codec:v libx264 -b:v 500k  -vf "scale=640:352" -r 29.97 -codec:a aac -b:a 128k http://127.0.0.1:8090/feed1.ffm
    
        ffmpeg version 2.1.3-tessus Copyright (c) 2000-2013 the FFmpeg developers
          built on Jan 16 2014 13:50:59 with llvm-gcc 4.2.1 (LLVM build 2336.1.00)
          configuration: --prefix=/Users/tessus/data/ext/ffmpeg/sw --as=yasm --extra-version=tessus --disable-shared --enable-static --disable-ffplay --enable-gpl --enable-pthreads --enable-postproc --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libspeex --enable-bzlib --enable-zlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxavs --enable-version3 --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvpx --enable-libgsm --enable-libopus --enable-fontconfig --enable-libfreetype --enable-libass --enable-libbluray --enable-filters --enable-runtime-cpudetect
          libavutil      52. 48.101 / 52. 48.101
          libavcodec     55. 39.101 / 55. 39.101
          libavformat    55. 19.104 / 55. 19.104
          libavdevice    55.  5.100 / 55.  5.100
          libavfilter     3. 90.100 /  3. 90.100
          libswscale      2.  5.101 /  2.  5.101
          libswresample   0. 17.104 /  0. 17.104
          libpostproc    52.  3.100 / 52.  3.100
        Splitting the commandline.
        Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
        Reading option '-i' ... matched as input file with argument 'TestStream.mp4'.
        Reading option '-codec:v' ... matched as option 'codec' (codec name) with argument 'libx264'.
        Reading option '-b:v' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '500k'.
        Reading option '-vf' ... matched as option 'vf' (set video filters) with argument 'scale=640:352'.
        Reading option '-r' ... matched as option 'r' (set frame rate (Hz value, fraction or abbreviation)) with argument '29.97'.
        Reading option '-codec:a' ... matched as option 'codec' (codec name) with argument 'aac'.
        Reading option '-b:a' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '128k'.
        Reading option 'http://127.0.0.1:8090/feed1.ffm' ... matched as output file.
        Finished splitting the commandline.
        Parsing a group of options: global .
        Applying option loglevel (set logging level) with argument debug.
        Successfully parsed a group of options.
        Parsing a group of options: input file TestStream.mp4.
        Successfully parsed a group of options.
        Opening an input file: TestStream.mp4.
        [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
        [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] ISO: File Type Major Brand: mp42
        [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] File position before avformat_find_stream_info() is 33783
        [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] All info found
        [mov,mp4,m4a,3gp,3g2,mj2 @ 0x10201a200] File position after avformat_find_stream_info() is 64138
        Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'TestStream.mp4':
          Metadata:
            major_brand     : mp42
            minor_version   : 0
            compatible_brands: isommp42
            creation_time   : 2014-02-17 10:17:06
          Duration: 00:01:40.10, start: 0.000000, bitrate: 582 kb/s
            Stream #0:0(und), 15, 1/30000: Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 1001/60000, 483 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
            Metadata:
              handler_name    : VideoHandler
            Stream #0:1(und), 1, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default)
            Metadata:
              creation_time   : 2014-02-17 10:17:06
              handler_name    : IsoMedia File Produced by Google, 5-11-2011
        Successfully opened the file.
        Parsing a group of options: output file http://127.0.0.1:8090/feed1.ffm.
        Applying option codec:v (codec name) with argument libx264.
        Applying option b:v (video bitrate (please use -b:v)) with argument 500k.
        Applying option vf (set video filters) with argument scale=640:352.
        Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 29.97.
        Applying option codec:a (codec name) with argument aac.
        Applying option b:a (video bitrate (please use -b:v)) with argument 128k.
        Successfully parsed a group of options.
        Opening an output file: http://127.0.0.1:8090/feed1.ffm.
        [ffm @ 0x102037200] Format ffm probed with size=2048 and score=101
        [AVIOContext @ 0x101d04fe0] Statistics: 4096 bytes read, 0 seeks
        Mon Feb 24 11:53:05 2014 127.0.0.1 - - [GET] "/feed1.ffm HTTP/1.1" 200 4175
        Successfully opened the file.
        detected 8 logical cores
        [graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'time_base' to value '1/44100'
        [graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'sample_rate' to value '44100'
        [graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'sample_fmt' to value 'fltp'
        [graph 0 input from stream 0:1 @ 0x101d05a20] Setting 'channel_layout' to value '0x3'
        [graph 0 input from stream 0:1 @ 0x101d05a20] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x3
        [audio format for output stream 0:0 @ 0x102d004e0] Setting 'sample_fmts' to value 's16'
        [audio format for output stream 0:0 @ 0x102d004e0] Setting 'sample_rates' to value '22050'
        [audio format for output stream 0:0 @ 0x102d004e0] Setting 'channel_layouts' to value '0x4'
        [audio format for output stream 0:0 @ 0x102d004e0] auto-inserting filter 'auto-inserted resampler 0' between the filter 'Parsed_anull_0' and the filter 'audio format for output stream 0:0'
        [AVFilterGraph @ 0x101d03ea0] query_formats: 4 queried, 6 merged, 3 already done, 0 delayed
        0.500000 0.500000 
        [auto-inserted resampler 0 @ 0x102d00ca0] ch:2 chl:stereo fmt:fltp r:44100Hz -> ch:1 chl:mono fmt:s16 r:22050Hz
        [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'video_size' to value '640x360'
        [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'pix_fmt' to value '0'
        [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'time_base' to value '1/30000'
        [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'pixel_aspect' to value '1/1'
        [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'sws_param' to value 'flags=2'
        [graph 1 input from stream 0:0 @ 0x103b003a0] Setting 'frame_rate' to value '30000/1001'
        [graph 1 input from stream 0:0 @ 0x103b003a0] w:640 h:360 pixfmt:yuv420p tb:1/30000 fr:30000/1001 sar:1/1 sws_param:flags=2
        [scaler for output stream 0:1 @ 0x103b00900] Setting 'w' to value '640'
        [scaler for output stream 0:1 @ 0x103b00900] Setting 'h' to value '352'
        [scaler for output stream 0:1 @ 0x103b00900] Setting 'flags' to value '0x4'
        [scaler for output stream 0:1 @ 0x103b00900] w:640 h:352 flags:'0x4' interl:0
        [format @ 0x103b00dc0] compat: called with args=[yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16]
        [format @ 0x103b00dc0] Setting 'pix_fmts' to value 'yuv420p|yuvj420p|yuv422p|yuvj422p|yuv444p|yuvj444p|nv12|nv16'
        [AVFilterGraph @ 0x102d00fc0] query_formats: 5 queried, 4 merged, 0 already done, 0 delayed
        [scaler for output stream 0:1 @ 0x103b00900] w:640 h:360 fmt:yuv420p sar:1/1 -> w:640 h:352 fmt:yuv420p sar:44/45 flags:0x4
        [libx264 @ 0x102049800] broken ffmpeg default settings detected
        [libx264 @ 0x102049800] use an encoding preset (e.g. -vpre medium)
        [libx264 @ 0x102049800] preset usage: -vpre  -vpre 
        [libx264 @ 0x102049800] speed presets are listed in x264 --help
        [libx264 @ 0x102049800] profile is optional; x264 defaults to high
        Output #0, ffm, to 'http://127.0.0.1:8090/feed1.ffm':
          Metadata:
            major_brand     : mp42
            minor_version   : 0
            compatible_brands: isommp42
            creation_time   : now
            Stream #0:0(und), 0, 1/1000000: Audio: aac (libvo_aacenc), 22050 Hz, mono, s16, 128 kb/s (default)
            Metadata:
              creation_time   : 2014-02-17 10:17:06
              handler_name    : IsoMedia File Produced by Google, 5-11-2011
            Stream #0:1(und), 0, 1/1000000: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 640x352 [SAR 44:45 DAR 16:9], 1001/30000, q=2-31, 500 kb/s, 1000k tbn, 29.97 tbc (default)
            Metadata:
              handler_name    : VideoHandler
        Stream mapping:
          Stream #0:1 -> #0:0 (aac -> libvo_aacenc)
          Stream #0:0 -> #0:1 (h264 -> libx264)
        Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
        [AVIOContext @ 0x101d04fe0] Statistics: 0 seeks, 0 writeouts
        [AVIOContext @ 0x101d03fa0] Statistics: 65536 bytes read, 0 seeks
        Mon Feb 24 11:53:05 2014 127.0.0.1 - - [POST] "/feed1.ffm HTTP/1.1" 200 0
        YorgZ-Macbook$
    
  • How to show audio bitrate or volume(in Db) information

    26 février 2014, par poc

    The ffmpeg only shows the video bitrate.How can I show the audio bitrate when I dump a streaming to file

    ffmpeg -i rtsp://172.19.1.40/live.sdp -acodec copy -vcodec copy export.avi

    enter image description here

    enter image description here

  • Compile ffmpeg on Ubuntu 13.10 with libfdk_aac

    26 février 2014, par nitsuj

    I tried this guide, but I have an error that permission is denied when I try to run a script from PHP using exec(). I think that this is because ffmpeg is in /root.

    How can I install this where my PHP script can access it?