Newest 'ffmpeg' Questions - Stack Overflow

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

Les articles publiés sur le site

  • Run .ts live streming on php [on hold]

    20 août 2017, par Omar El-sayed

    (To be honest, I don't know much about programming, but i know php functions )

    My question is Now I have urls for Live streaming .ts ,how can i play video streaming in php code without flash?

  • avconv on debian jessie throws error when trying to convert raw video to mp4

    20 août 2017, par Vinay Divakar

    I am trying to convert a raw video captured using a Logitech USB Cam(YUYV) to mp4 using avconv. I have tried the below to do so:

    avconv -i out.raw -c copy output.mp4
    avconv -i out.raw -vcodec copy -acodec copy output.mp4
    

    but I get an error as shown below.

    root@beaglebone:~/BBB_CV/boneCV# avconv -i out.raw -c copy output.mp4
    avconv version 11.9-6:11.9-1~deb8u1, Copyright (c) 2000-2017 the Libav developersbuilt on Apr 23 2017 23:00:54 with gcc 4.9.2 (Debian 4.9.2-10)
    out.raw: Invalid data found when processing input
    

    I have checked here, but did not find any relevant examples for the above purpose.

    Edit: Added more details--

    I tried doing the below by adding the infile options as suggested:

    root@beaglebone:~/BBB_CV/boneCV# avconv -s 640x480 -framerate 30 -pix_fmt yuyv422 -f rawvideo -i out.raw -c copy output.mp4
    

    This got me rid of the previous error and some new ones popped up as shown below.

    root@beaglebone:~/BBB_CV/boneCV# avconv -s 640x480 -framerate 30 -pix_fmt yuyv422 -f rawvideo -i out.raw -c copy output.mp4
    avconv version 11.9-6:11.9-1~deb8u1, Copyright (c) 2000-2017 the Libav 
    developers built on Apr 23 2017 23:00:54 with gcc 4.9.2 (Debian 4.9.2-10)
    [rawvideo @ 0x17e21c0] Estimating duration from bitrate, this may be inaccurate
    Input #0, rawvideo, from 'out.raw':
    Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: rawvideo, yuyv422, 640x480, 30 tbn
    [mp4 @ 0x17eb840] Codec for stream 0 does not use global headers but 
    container format requires global headers
    [mp4 @ 0x17eb840] track 0: could not find tag, codec not currently 
    supported in container
    Output #0, mp4, to 'output.mp4':
    Metadata:
    encoder         : Lavf56.1.0
    Stream #0.0: Video: rawvideo, yuyv422, 640x480, q=2-31, 30 tbn, 30 tbc
    Stream mapping:
    Stream #0:0 -> #0:0 (copy)
    Could not write header for output file #0 (incorrect codec parameters ?): 
    Operation not permitted
    

    The output.mp4 is being generated but when tried to open it throws an error.

    Edit: I ran a "sudo apt-get install libav-tools" an then tried. This is what I got.

    root@beaglebone:~/BBB_CV/boneCV# avconv -s 640x480 -framerate 30 -pix_fmt 
    yuyv422 -f rawvideo -i out.raw -c copy output.mp4
    ffmpeg version 2.6.9 Copyright (c) 2000-2016 the FFmpeg developers
    built with gcc 4.9.2 (Debian 4.9.2-10)
    configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-
     strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' 
       -cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-
        nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-
        libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-
        libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-
        libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-
        libvpx --enable-libschroedinger --disable-encoder=libschroedinger --
        enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter -
        enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-
       libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/arm-linux-gnueabihf -
       -disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-
       frei0r --enable-openssl --enable-libass --enable-libopus --enable-
       fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --
       disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample 
       --disable-htmlpages --disable-podpages --enable-libutvideo --enable-
       libfdk-aac --enable-libx265 --enable-libiec61883 --enable-libdc1394 --
       disable-altivec --shlibdir=/usr/lib/arm-linux-gnueabihf
       libavutil      54. 20.100 / 54. 20.100
       libavcodec     56. 26.100 / 56. 26.100
       libavformat    56. 25.101 / 56. 25.101
       libavdevice    56.  4.100 / 56.  4.100
       libavfilter     5. 11.102 /  5. 11.102
       libavresample   2.  1.  0 /  2.  1.  0
       libswscale      3.  1.101 /  3.  1.101
       libswresample   1.  1.100 /  1.  1.100
       libpostproc    53.  3.100 / 53.  3.100
      [rawvideo @ 0x18465e0] Estimating duration from bitrate, this may be 
       inaccurate
       Input #0, rawvideo, from 'out.raw':
       Duration: 00:00:00.10, start: 0.000000, bitrate: 146626 kb/s
       Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 
       kb/s, 30 tbr, 30 tbn, 30 tbc
       [mp4 @ 0x184f790] Could not find tag for codec rawvideo in stream #0, 
       codec not currently supported in container
       Output #0, mp4, to 'output.mp4':
       Metadata:
       encoder         : Lavf56.25.101
       Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, q=2-
       31, 147456 kb/s, 30 tbr, 30 tbn, 30 tbc
       Stream mapping:
       Stream #0:0 -> #0:0 (copy)
       Could not write header for output file #0 (incorrect codec parameters ?): 
       Invalid argument
    

    I ran "ffmpeg -s 640x480 -framerate 30 -pix_fmt yuv420p -f rawvideo -i out.raw output.mp4" and below is what I got.

    root@beaglebone:~/BBB_CV/boneCV# ffmpeg -s 640x480 -framerate 30 -pix_fmt yuv420p -f rawvideo -i out.raw output.mp4
    ffmpeg version 2.6.9 Copyright (c) 2000-2016 the FFmpeg developers
      built with gcc 4.9.2 (Debian 4.9.2-10)
      configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/arm-linux-gnueabihf --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/arm-linux-gnueabihf
      libavutil      54. 20.100 / 54. 20.100
      libavcodec     56. 26.100 / 56. 26.100
      libavformat    56. 25.101 / 56. 25.101
      libavdevice    56.  4.100 / 56.  4.100
      libavfilter     5. 11.102 /  5. 11.102
      libavresample   2.  1.  0 /  2.  1.  0
      libswscale      3.  1.101 /  3.  1.101
      libswresample   1.  1.100 /  1.  1.100
      libpostproc    53.  3.100 / 53.  3.100
    [rawvideo @ 0x1d55e0] Estimating duration from bitrate, this may be inaccurate
    Input #0, rawvideo, from 'out.raw':
      Duration: 00:00:00.13, start: 0.000000, bitrate: 109969 kb/s
        Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 640x480, 110592 kb/s, 30 tbr, 30 tbn, 30 tbc
    [libx264 @ 0x1df6c0] using cpu capabilities: ARMv6 NEON
    [libx264 @ 0x1df6c0] profile High, level 3.0
    [libx264 @ 0x1df6c0] 264 - core 146 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, mp4, to 'output.mp4':
      Metadata:
        encoder         : Lavf56.25.101
        Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc
        Metadata:
          encoder         : Lavc56.26.100 libx264
    Stream mapping:
      Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    [rawvideo @ 0x1de3a0] Invalid buffer size, packet size 450428 < expected frame_size 460800
    Error while decoding stream #0:0: Invalid argument
    frame=    3 fps=1.7 q=29.0 Lsize=     263kB time=00:00:00.03 bitrate=64692.6kbits/s    
    video:262kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.318205%
    [libx264 @ 0x1df6c0] frame I:1     Avg QP:33.09  size:100676
    [libx264 @ 0x1df6c0] frame P:2     Avg QP:32.99  size: 83672
    [libx264 @ 0x1df6c0] mb I  I16..4:  0.0% 95.4%  4.6%
    [libx264 @ 0x1df6c0] mb P  I16..4:  0.0% 45.7%  3.0%  P16..4: 35.9% 10.7%  4.8%  0.0%  0.0%    skip: 0.0%
    [libx264 @ 0x1df6c0] 8x8 transform intra:94.6% inter:86.1%
    [libx264 @ 0x1df6c0] coded y,uvDC,uvAC intra: 100.0% 100.0% 100.0% inter: 53.6% 100.0% 100.0%
    [libx264 @ 0x1df6c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 56% 12% 24%  2%  0%  1%  1%  2%  3%
    [libx264 @ 0x1df6c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 82% 11%  4%  0%  0%  0%  1%  0%  1%
    [libx264 @ 0x1df6c0] i8c dc,h,v,p: 48% 30% 14%  7%
    [libx264 @ 0x1df6c0] Weighted P-Frames: Y:0.0% UV:0.0%
    [libx264 @ 0x1df6c0] ref P L0: 83.5%  7.9%  8.6%
    [libx264 @ 0x1df6c0] kb/s:21441.60
    
  • ffmpeg unable to find a suitable output format for '\'

    20 août 2017, par Blueeyes789

    I am trying following command to concatenate my 4 MP4 video files using FFmpeg with concat filter, but it gives the error:

    Unable to find a suitable output format for '\'

    Command:

    F:\Partition C Backup\Downloads\Compressed\ffmpeg-20170817-92da230-win64-shared\
    ffmpeg-20170817-92da230-win64-shared\bin>ffmpeg -i "long name with spaces 1.mp4"
    -i "long name with spaces 2.mp4" -i "long name with spaces 3.mp4"
    -i "long name with spaces 4.mp4" \ -filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0]
    [2:v:0] [2:a:0] [3:v:0] [3:a:0] concat=n=4:v= 1:a=1 [v] [a]"
    \ -map "[v]" -map "[a]" E:\FFmpeg.mp4
    

    Please help me to find what is wrong syntax in this command.

  • Android ffmpeg restreaming video bind failed address already in use

    20 août 2017, par mSapps

    I am receiving udp streaming from a camera(go pro camera) , I want to re streaming that stream to remote server. Here is the command I have tried

    "ffmpeg -i 'udp://@10.5.5.9:8554' -fflags nobuffer -f:v mpegts -probesize 8195 -vcodec libx264 copy http://103.x.x.x:8090/feed1.ffm" 
    

    in my build.gradle I have included the following

    compile 'com.github.hiteshsondhi88.libffmpeg:FFmpegAndroid:0.2.5'
    

    Here is my code

    exec("ffmpeg -i udp://@10.5.5.9:8554 -fflags nobuffer -f:v mpegts -probesize 8195 -vcodec libx264 copy http://103.x.x.x:8090/feed1.ffm");
    
       public void exec(String command){
            try {
                // to execute "ffmpeg -version" command you just need to pass "-version"
                // Now, you can execute your command here
                ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
    
                    @Override
                    public void onStart() {}
    
                    @Override
                    public void onProgress(String message) {}
    
                    @Override
                    public void onFailure(String message) {
                        Log.d("FFMPEG", "FAILED with output: "+message);
                        // i got bind failed address already in used error
                    }
    
                    @Override
                    public void onSuccess(String message) {
                        Log.i("SUCCESS", message);
                    }
    
                    @Override
                    public void onFinish() {}
                });
            } catch (FFmpegCommandAlreadyRunningException e) {
                // Handle if FFmpeg is already running
            }
    
  • ffmpeg inaccurate seeking keyframes with H265 vcopy

    20 août 2017, par dsagilles

    I've got an H265 4K MP4 29.97fps video with a GOP-size of exactly 30 frames. When I try to cut from the start using :

    ffmpeg -ss 1 -i INPUT.MP4 -vcodec copy OUTPUT_1SEC.MP4
    ffmpeg -ss 2 -i INPUT.MP4 -vcodec copy OUTPUT_2SEC.MP4
    ffmpeg -ss 3 -i INPUT.MP4 -vcodec copy OUTPUT_3SEC.MP4
    ffmpeg -ss 4 -i INPUT.MP4 -vcodec copy OUTPUT_4SEC.MP4
    ffmpeg -ss 5 -i INPUT.MP4 -vcodec copy OUTPUT_5SEC.MP4
    ffmpeg -ss 6 -i INPUT.MP4 -vcodec copy OUTPUT_6SEC.MP4
    ffmpeg -ss 7 -i INPUT.MP4 -vcodec copy OUTPUT_7SEC.MP4
    ffmpeg -ss 8 -i INPUT.MP4 -vcodec copy OUTPUT_8SEC.MP4
    ffmpeg -ss 9 -i INPUT.MP4 -vcodec copy OUTPUT_9SEC.MP4
    

    The output videos starts at either 0 (-ss 1~4), 4 (-ss 5~8) or 8 sec (-ss 9) as shown below:

    Premiere Pro Timeline

    So it seems ffmpeg somehow detect a GOP of 4 seconds instead of 1 seconds. Is it normal ?

    Also, how can I burn the correct timecode in the output video ? For example, I tried many combinations such as:

    ffmpeg -ss 5 -i INPUT.MP4 -vcodec copy -timecode 00:00:05:00 OUTPUT_5SEC.MP4
    ffmpeg -ss 5 -i INPUT.MP4 -vcodec copy -copyts OUTPUT_5SEC.MP4
    ffmpeg -start_at_zero -ss 5 -i INPUT.MP4 -vcodec copy -copyts OUTPUT_5SEC.MP4
    

    But it either give me the exact timecode I put (first line) or starts at zero (two last lines)

    Originally, I was thinking about seeking at the exact second (or a few frame after) so I knew I would get a keyframe so I could guess the exact timecode the output would start, but it seems ffmpeg -ss is not exactly based on keyframes ? Maybe I'm missing something here ? Thanks for the help.

    Additionnal infos

    I'd like to script the cut process, that's why I want to know where this 4-sec "keyframe interval" come from.

    Here is the ffprobe output of my input:

    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'INPUT.MP4':
      Metadata:
        major_brand     : isom
        minor_version   : 512
        compatible_brands: isomiso2mp41
        encoder         : Lavf57.72.101
        comment         : DE=None, Mode=M, DSW=0001
        location-{    : +XX.4914-0XX.5164+XX.000000/
        location        : +XX.4914-0XX.5164+XX.000000/
      Duration: 00:01:45.31, start: 0.000000, bitrate: 100065 kb/s
        Stream #0:0(eng): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, bt709), 4096x2160 [SAR 1:1 DAR 256:135], 100062 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 29.97 tbc (default)
        Metadata:
          handler_name    : VideoHandler
        Stream #0:1(eng): Subtitle: mov_text (tx3g / 0x67337874), 2 kb/s (default)
        Metadata:
          handler_name    : SubtitleHandler
    

    Here is the command I used to check gop-size ('I' type at 1,31,61,... and 'P' in between):

    ffprobe -i INPUT.MP4 -select_streams v -show_frames -show_entries frame=pict_type -of csv > OUTPUT.CSV
    

    ffmpeg version N-86330-gbd1179e and ffmpeg version N-86330-gbd1179e

    Edit : Sample video here