Newest 'ffmpeg' Questions - Stack Overflow

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

Les articles publiés sur le site

  • FFmpeg : Continuously download X minutes video from livestream ?

    16 février 2017, par Dorin Pleava

    I want to download X minutes from a livestream continuously and overwrite the same file, meaning the file will always have the latest X minutes from the livestream.

    Is there a way without calling the following command over and over again in a batch file? Something that runs continuously from FFMPEG?

    -i http://iphone-streaming.ustream.tv/uhls/17074538/streams/live/iphone/playlist.m3u8 -t 60 -y -c:a copy MyVideo.mp4
    
  • ffmpeg output separate channel from an input with multiple channels

    16 février 2017, par tiras muturi

    i run this command to be able to stream a udp live stream to a http live stream that is playable using a mobile application that am building. its just a stream with audio streams only.

    ffmpeg -i udp://@localhost:1111 -map 0:a http://localhost:8090/feed1.ffm

    Input #0, mpegts, from 'udp://@localhost:1111':
      Duration: N/A, start: 54616.264622, bitrate: 768 kb/s
      Program 1
        Metadata:
      service_name    : Service 1
      service_provider: TLK
        Stream #0:0[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
      Program 2
    Metadata:
      service_name    : Service 2
      service_provider: TLK
    Stream #0:1[0x111]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
     Program 3
    Metadata:
      service_name    : Service 3
      service_provider: TLK
    Stream #0:2[0x121]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
     Program 4
    Metadata:
      service_name    : Service 4
      service_provider: TLK
    Stream #0:3[0x131]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
      Program 5
    Metadata:
      service_name    : Service 5
      service_provider: TLK
    Stream #0:4[0x141]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
      Program 6
    Metadata:
      service_name    : Service 6
      service_provider: TLK
    Stream #0:5[0x151]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
      Program 7
    Metadata:
      service_name    : Service 7
      service_provider: TLK
    Stream #0:6[0x161]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
     Program 8
    Metadata:
      service_name    : Service 1
      service_provider: TLK
    Stream #0:7[0x171]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
    

    i get this output

    Stream mapping:
      Stream #0:0 -> #0:0 (mp2 (native) -> mp2 (native))
      Stream #0:0 -> #0:1 (mp2 (native) -> mp2 (native))
    Press [q] to stop, [?] for help
    size=     100kB time=00:00:07.19 bitrate= 113.8kbits/s speed=3.01x
    video:0kB audio:84kB subtitle:0kB other streams:0kB global headers:0kB  muxing overhead: 18.358242%
    

    i really want a way i can be able to map every input stream to have an output stream that can be accessed separately from the other like maybe if i need the first stream maybe i will just

    ffplay http://localhost:8090/feed1.ffm 
    

    and if i need the 7th stream i will just

    ffplay http://localhost:8090/feed7.ffm
    

    Please can someone help me crack this issue. FFmpeg dont have complex examples for my current situation.

    this is my header information

    ubuntu@ip-localhost:~$ \ 
    ffmpeg -i udp://@localhost:4000 \
      -map 0:a:0     http://localhost:8090/feed1.ffm 
      -map 0:a:1 http://localhost:8090/feed2.ffm 
      -map 0:a:2 http://localhost:8090/feed3.ffm 
      -map 0:a:3 http://localhost:8090/feed4.ffm 
      -map 0:a:4 http://localhost:8090/feed5.ffm 
      -map 0:a:5 http://localhost:8090/feed6.ffm 
      -map 0:a:6 http://localhost:8090/feed7.ffm 
      -map 0:a:7 http://localhost:8090/feed8.ffm
    

    ffmpeg version 3.2.4-1~16.04.york0 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 5.4.1 (Ubuntu 5.4.1-5ubuntu2~16.04.york1) 20170210 configuration: --prefix=/usr --extra-version='1~16.04.york0' -- toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libavresample 3. 1. 0 / 3. 1. 0 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100

    Input #0, mpegts, from 'udp://@localhost:1111':
      Duration: N/A, start: 60047.944622, bitrate: 768 kb/s
      Program 1
        Metadata:
      service_name    : Service 1
      service_provider: TKL
    Stream #0:0[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
     Program 2
    Metadata:
      service_name    : Service 2
      service_provider: TKL
    Stream #0:1[0x111]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
     Program 3
    Metadata:
      service_name    : Service 3
      service_provider: TKL
    Stream #0:2[0x121]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
    Program 4
    Metadata:
      service_name    : Service 4
      service_provider: TKL
    Stream #0:3[0x131]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
    Program 5
    Metadata:
      service_name    : Service 5
      service_provider: TKL
    Stream #0:4[0x141]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
    Program 6
    Metadata:
      service_name    : Service 6
      service_provider: TKL
    Stream #0:5[0x151]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
    Program 7
    Metadata:
      service_name    : Service 7
      service_provider: TKL
    Stream #0:6[0x161]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
    Program 8
    Metadata:
      service_name    : Service 8
      service_provider: TKL
    Stream #0:7[0x171]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
    Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
    Metadata:
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #0:0: Audio: mp2, 44100 Hz, mono, s16, 32 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Stream #0:1: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Output #1, ffm, to 'http://localhost:8090/feed2.ffm':
    Metadata:
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #1:0: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Output #2, ffm, to 'http://localhost:8090/feed3.ffm':
    Metadata:
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #2:0: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Output #3, ffm, to 'http://localhost:8090/feed4.ffm':
    Metadata:
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #3:0: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Output #4, ffm, to 'http://localhost:8090/feed5.ffm':
    Metadata:
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #4:0: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Output #5, ffm, to 'http://localhost:8090/feed6.ffm':
    Metadata:
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #5:0: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Output #6, ffm, to 'http://localhost:8090/feed7.ffm':
    Metadata:
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #6:0: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Output #7, ffm, to 'http://localhost:8090/feed8.ffm':
    Metadata:
    creation_time   : now
    encoder         : Lavf57.56.101
    Stream #7:0: Audio: mp2, 44100 Hz, stereo, s16, 64 kb/s
    Metadata:
      encoder         : Lavc57.64.101 mp2
    Stream mapping:
    Stream #0:0 -> #0:0 (mp2 (native) -> mp2 (native))
    Stream #0:0 -> #0:1 (mp2 (native) -> mp2 (native))
    Stream #0:0 -> #1:0 (mp2 (native) -> mp2 (native))
    Stream #0:0 -> #2:0 (mp2 (native) -> mp2 (native))
    Stream #0:0 -> #3:0 (mp2 (native) -> mp2 (native))
    Stream #0:0 -> #4:0 (mp2 (native) -> mp2 (native))
    Stream #0:0 -> #5:0 (mp2 (native) -> mp2 (native))
    Stream #0:0 -> #6:0 (mp2 (native) -> mp2 (native))
    Stream #0:0 -> #7:0 (mp2 (native) -> mp2 (native))
    Press [q] to stop, [?] for help
    

    thats my full console.

  • ffmpeg install on CentOS 64-bit 'install with -fPIC' error

    16 février 2017, par ndmweb

    I get this error when attempting to compile ffmpeg on a 64bit CentOS machine.

    Here are my ./configure options:

    ./configure --enable-shared --enable-gpl --enable-nonfree --enable-postproc --enable-swscale --enable-pthreads --enable-libx264 --enable-libxvid --enable-libvorbis --enable-libfaac --enable-libmp3lame --enable-libvpx

    make

    I get the following error when compiling the source:

    /usr/bin/ld: /usr/local/lib/libvpx.a(vpx_codec.c.o): relocation R_X86_64_32 against .rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/libvpx.a: could not read symbols: Bad value
    collect2: ld returned 1 exit status
    make: *** [libavcodec/libavcodec.so.54] Error 1
    

    How do I get around this error, and get libvpx up and running with the latest ffmpeg on my 64-bit CentOS box?

  • What ffmpeg settings to ensure 0 duplicate frames and 0 dropped frames when capturing to mpeg-2 program stream using ffmpeg/avfoundation on Mac ?

    16 février 2017, par aerodavo

    I'm trying to capture to a DVD compliant mpeg-2 file (ffmpeg: -target ntsc-dvd) from the HDMI output of a camcorder into a Magewell HDMI to USB 3.0 box into my Late 2012 15" non-retina MacBook Pro (quad core 2.3, 16gb ram, ssd), using ffmpeg/avfoundation.

    I've tried everything I can think of, or find online. I'm still getting duplicate and dropped frames, which either leads to audio/video sync issues, or audio dropouts, especially for longer recordings. I need this to be stable for recordings of up to 2.5 hours. This is the Terminal output for a 1.5 hour recording:

    Lapaki:~ Lapaki$ /Users/Lapaki/Desktop/ffmpeg -f avfoundation -video_size 960x540 -pixel_format uyvy422 -framerate ntsc -i "XI:XI" -vf crop=iw-240:ih:120:0 -target ntsc-dvd -aspect 4:3 -q:v 3 -ab 256k /Users/Lapaki/Desktop/FF\ Test/`date +%F`\ `date +%H_%M_%S`.mpg
    ffmpeg version 3.2.3-tessus Copyright (c) 2000-2017 the FFmpeg developers
      built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
      configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
      libavutil      55. 34.101 / 55. 34.101
      libavcodec     57. 64.101 / 57. 64.101
      libavformat    57. 56.101 / 57. 56.101
      libavdevice    57.  1.100 / 57.  1.100
      libavfilter     6. 65.100 /  6. 65.100
      libswscale      4.  2.100 /  4.  2.100
      libswresample   2.  3.100 /  2.  3.100
      libpostproc    54.  1.100 / 54.  1.100
    Input #0, avfoundation, from 'XI:XI':
      Duration: N/A, start: 610606.984208, bitrate: N/A
        Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 960x540, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
        Stream #0:1: Audio: pcm_f32le, 48000 Hz, stereo, flt, 3072 kb/s
    Output #0, dvd, to '/Users/Lapaki/Desktop/FF Test/2017-02-15 17_46_28.mpg':
      Metadata:
        encoder         : Lavf57.56.101
        Stream #0:0: Video: mpeg2video (Main), yuv420p, 720x480 [SAR 8:9 DAR 4:3], q=2-31, 6000 kb/s, 29.97 fps, 90k tbn, 29.97 tbc
        Metadata:
          encoder         : Lavc57.64.101 mpeg2video
        Side data:
          cpb: bitrate max/min/avg: 9000000/0/6000000 buffer size: 1835008 vbv_delay: -1
        Stream #0:1: Audio: ac3, 48000 Hz, stereo, fltp, 256 kb/s
        Metadata:
          encoder         : Lavc57.64.101 ac3
    Stream mapping:
      Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
      Stream #0:1 -> #0:1 (pcm_f32le (native) -> ac3 (native))
    Press [q] to stop, [?] for help
    [swscaler @ 0x7fd315892800] Warning: data is not aligned! This can lead to a speedloss
    frame=   20 fps=0.0 q=3.0 size=     298kB time=00:00:00.65 bitrate=3721.4kbits/sframe=   35 fps= 35 q=3.0 size=     498kB time=00:00:01.13 bitrate=3591.2kbits/sframe=   50 fps= 33 q=3.0 size=     708kB time=00:00:01.64 bitrate=3519.4kbits/sframe=   65 fps= 32 q=3.0 size=     920kB time=00:00:02.16  
    ...
     bitrate=2721.7kbits/frame=162094 fps= 30 q=3.0 size= 1796936kB time=01:30:08.47 bitrate=2721.7kbits/frame=162109 fps= 30 q=3.0 size= 1797142kB time=01:30:08.98 bitrate=2721.8kbits/frame=162110 fps= 30 q=3.0 Lsize= 1797202kB time=01:30:09.01 bitrate=2721.9kbits/s dup=221 drop=0 speed=   1x    
    video:1579050kB audio:168069kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.866632%
    

    I deleted the middle part (denoted by the "..."), which is just a lot more of the same accumulating information. By the end there are 221 duplicate frames, and for this one I didn't get any dropped frames, but that happens every other time as well it seems.

    With this code, the audio seems to stay in pretty good sync, but I get little dropouts every 30 seconds to a minute or so. On this recording, there are dropouts at:

    00:00:43, 00:01:19, 00:01:47, 00:02:17, 00:03:18, ...

    I stopped listening there; they happen at the end too, so I assume similarly spaced dropouts are happening throughout the file.

    Is there some secret ffmpeg code to ensure there are no dropped or duplicate frames when capturing from a live source to dvd compliant mpeg-2 files?

    When I convert from pretty much any type of file to mpeg-2 files using -target ntsc-dvd, the speed is something like 10x on this machine, so it seems like it would have no problem keeping up with a live source, right?

    I've also tried constant bit rate using -b:v 5000k -minrate 5000k -maxrate 5000k -bufsize 2500k, which also doesn't prevent dropped/duplicate frames.

    I've tried separating out the audio and video inputs, which doesn't solve it.

    I've tried using -vsync 0 on the video input, which does seem to solve the issue, because the output doesn't report dups/drops, but the audio/video drift out of sync more and more, so that hasn't worked either.

    Thanks so much for any help. I've been testing and testing and searching and searching for weeks...

  • Simulating TV noise

    16 février 2017, par Alexander Kulyakhtin

    I have googled a bit but was never able to find an answer. What should be my first approach to simulate a video and audio noise from TV on screen? I mean, when my TV antenna is removed but the TV is still on (like they show in Japanese horror movies sometimes). I can use ffmpeg or any other technique but what is the simplest possible form of the signal?