Newest 'ffmpeg' Questions - Stack Overflow
Les articles publiés sur le site
-
FFMPEG - it takes frames from .avi but doesn't work for mp4
15 mai 2019, par ZectorI run the following PHP code in a loop in order to extract the frame from 10th second from a list of video (avi & mp4):
$command = "$ffmpegpath -y -i $input -vframes 1 -ss 00:00:$fromdurasec -y $output";
It seems that it generates frames for avi files but not for mp4.
When I run the command manually in command-line it works as expected (as in takes the frame and saves it in folder). Please find below the full log of ffmpeg process:
ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4) configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --enable-libmp3lame --enable-libx264 --enable-libvorbis -- enable-libvpx --enable-libfreetype --enable-fontconfig --enable-libopencore-amrnb --enable-gray --enable-libopenjpeg --enable-gnutls --enable-libfaac --enable-nonfree --disable-indev=sndio --disable-outdev=sndio --cc=gcc libavutil 55. 17.103 / 55. 17.103 libavcodec 57. 24.102 / 57. 24.102 libavformat 57. 25.100 / 57. 25.100 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 31.100 / 6. 31.100 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'new test video.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:22:19.33, start: 0.000000, bitrate: 3560 kb/s Stream #0:0(rus): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 3427 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : VideoHandler Stream #0:1(rus): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : SoundHandler [swscaler @ 0x20b0140] deprecated pixel format used, make sure you did set range correctly Output #0, image2, to 'newtest.jpg': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.25.100 Stream #0:0(rus): Video: mjpeg, yuvj420p(pc), 1280x720, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc (default) Metadata: creation_time : 1970-01-01 00:00:00 handler_name : VideoHandler encoder : Lavc57.24.102 mjpeg Side data: unknown side data type 10 (24 bytes) Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native)) Press [q] to stop, [?] for help frame= 0 fps=0.0 q=0.0 size=N/A time=00:00:00.00 bitrate=N/A speed= 0x Enter command:
|all -
How to fix ffmpeg complex filters "Invalid stream specifier" [duplicate]
15 mai 2019, par ChaseThis question already has an answer here:
I'm attempting to scale and blur (sections of) a video with ffmpeg complex filters. This has actually been working in production for years.
I'm now running a newer build of ffmpeg on Ubuntu 18.04 and getting an error relating to the filters where the same command works fine on Ubuntu 16.04's ffmpeg against the same video.
Specifically, I'm seeing the following error:
mov,mp4,m4a,3gp,3g2,mj2 @ 0x56055a5902c0] Invalid stream specifier: vs0. Last message repeated 1 times Stream specifier 'vs0' in filtergraph description ... matches no streams.
Has something about the complex filter API changed that would make this same input invalid in a newer version of ffmpeg?
The command in question is just running the following in a Bash terminal.
ffmpeg -ss 60 -i ~/test.mp4 -y -filter_complex "[0:v]scale=-2:'min(320,ih)'[vs0];[vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];[vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];[vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];[vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];[ovr1][b2]overlay=main_w/9:0[vs1]" -map [vs1] -an -ac 2 -b:a 128k -acodec aac -b:v 1024k -r 30 -vcodec libx264 -t 300 -y -preset slow -movflags faststart -pix_fmt yuv420p -f mp4 ~/out.mp4
If we break up the complex filter statement, it looks like:
[0:v]scale=-2:'min(320,ih)'[vs0]; [vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0]; [vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1]; [vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2]; [vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1]; [ovr1][b2]overlay=main_w/9:0[vs1]
On
ffmpeg version N-86980-g62b7553
(Ubuntu 16.04), everything works great as it has done for years.$ ffmpeg -ss 60 -i ~/test.mp4 -y -filter_complex "[0:v]scale=-2:'min(320,ih)'[vs0];[vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];[vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];[vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];[vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];[ovr1][b2]overlay=main_w/9:0[vs1]" -map [vs1] -an -ac 2 -b:a 128k -acodec aac -b:v 1024k -r 30 -vcodec libx264 -t 300 -y -preset slow -movflags faststart -pix_fmt yuv420p -f mp4 ~/out.mp4 ffmpeg version N-86980-g62b7553 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609 configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-openssl --enable-nonfree libavutil 55. 73.100 / 55. 73.100 libavcodec 57.102.100 / 57.102.100 libavformat 57. 76.100 / 57. 76.100 libavdevice 57. 7.100 / 57. 7.100 libavfilter 6. 98.100 / 6. 98.100 libswscale 4. 7.102 / 4. 7.102 libswresample 2. 8.100 / 2. 8.100 libpostproc 54. 6.100 / 54. 6.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/cmaier/test.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.76.100 Duration: 00:10:00.00, start: 0.000000, bitrate: 1036 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 768x480, 1033 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : VideoHandler Stream mapping: Stream #0:0 (h264) -> scale Stream #0:0 (h264) -> crop Stream #0:0 (h264) -> crop Stream #0:0 (h264) -> overlay:main overlay -> Stream #0:0 (libx264) Press [q] to stop, [?] for help [libx264 @ 0x27b2ca0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2 [libx264 @ 0x27b2ca0] profile High, level 3.1 [libx264 @ 0x27b2ca0] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x3:0x113 me=umh subme=8 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=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=abr mbtree=1 bitrate=1024 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 Output #0, mp4, to '/home/cmaier/out.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.76.100 Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 768x480, q=-1--1, 1024 kb/s, 30 fps, 15360 tbn, 30 tbc (default) Metadata: encoder : Lavc57.102.100 libx264 Side data: cpb: bitrate max/min/avg: 0/0/1024000 buffer size: 0 vbv_delay: -1 [mp4 @ 0x27b5a60] Starting second pass: moving the moov atom to the beginning of the file3.9x frame= 9000 fps=117 q=-1.0 Lsize= 37827kB time=00:04:59.90 bitrate=1033.3kbits/s speed= 3.9x video:37721kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.282333% [libx264 @ 0x27b2ca0] frame I:36 Avg QP:15.21 size: 50944 [libx264 @ 0x27b2ca0] frame P:2723 Avg QP:20.12 size: 9593 [libx264 @ 0x27b2ca0] frame B:6241 Avg QP:24.23 size: 1710 [libx264 @ 0x27b2ca0] consecutive B-frames: 3.6% 6.9% 14.5% 75.0% [libx264 @ 0x27b2ca0] mb I I16..4: 17.3% 58.5% 24.2% [libx264 @ 0x27b2ca0] mb P I16..4: 0.5% 4.4% 0.9% P16..4: 31.1% 20.7% 12.1% 0.0% 0.0% skip:30.3% [libx264 @ 0x27b2ca0] mb B I16..4: 0.0% 0.3% 0.1% B16..8: 28.9% 5.5% 1.1% direct: 1.1% skip:63.1% L0:37.5% L1:52.6% BI: 9.9% [libx264 @ 0x27b2ca0] final ratefactor: 19.69 [libx264 @ 0x27b2ca0] 8x8 transform intra:72.8% inter:68.3% [libx264 @ 0x27b2ca0] direct mvs spatial:99.9% temporal:0.1% [libx264 @ 0x27b2ca0] coded y,uvDC,uvAC intra: 74.5% 73.0% 30.4% inter: 13.0% 10.7% 0.2% [libx264 @ 0x27b2ca0] i16 v,h,dc,p: 49% 30% 3% 17% [libx264 @ 0x27b2ca0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 7% 14% 11% 7% 11% 8% 19% 8% 15% [libx264 @ 0x27b2ca0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 9% 13% 5% 8% 14% 10% 17% 9% 16% [libx264 @ 0x27b2ca0] i8c dc,h,v,p: 42% 29% 15% 15% [libx264 @ 0x27b2ca0] Weighted P-Frames: Y:7.4% UV:2.9% [libx264 @ 0x27b2ca0] ref P L0: 59.2% 20.2% 11.5% 3.7% 4.3% 1.0% 0.1% [libx264 @ 0x27b2ca0] ref B L0: 87.5% 8.8% 2.7% 1.0% [libx264 @ 0x27b2ca0] ref B L1: 96.5% 3.5% [libx264 @ 0x27b2ca0] kb/s:1030.01
On
ffmpeg version N-93862-gf49cec2
(Ubuntu 18.04), the command fails immediately.# ffmpeg -ss 60 -i ~/test.mp4 -y -filter_complex "[0:v]scale=-2:'min(320,ih)'[vs0];[vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];[vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];[vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];[vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];[ovr1][b2]overlay=main_w/9:0[vs1]" -map [vs1] -an -ac 2 -b:a 128k -acodec aac -b:v 1024k -r 30 -vcodec libx264 -t 300 -y -preset slow -movflags faststart -pix_fmt yuv420p -f mp4 ~/out.mp4 ffmpeg version N-93862-gf49cec2 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04) configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --bindir=/root/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-openssl --enable-nonfree libavutil 56. 27.100 / 56. 27.100 libavcodec 58. 52.101 / 58. 52.101 libavformat 58. 27.103 / 58. 27.103 libavdevice 58. 7.100 / 58. 7.100 libavfilter 7. 53.100 / 7. 53.100 libswscale 5. 4.101 / 5. 4.101 libswresample 3. 4.100 / 3. 4.100 libpostproc 55. 4.100 / 55. 4.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/root/test.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf57.76.100 Duration: 00:10:00.00, start: 0.000000, bitrate: 1036 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 768x480, 1033 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : VideoHandler [mov,mp4,m4a,3gp,3g2,mj2 @ 0x56055a5902c0] Invalid stream specifier: vs0. Last message repeated 1 times Stream specifier 'vs0' in filtergraph description [0:v]scale=-2:'min(320,ih)'[vs0];[vs0]crop=in_w/9:in_h/2:0:0,boxblur=5:1:cr=3:ar=3[b0];[vs0]crop=in_w/9:in_h/2:in_w-out_w:0,boxblur=5:1:cr=3:ar=3[b1];[vs0]crop=(in_w-2*in_w/9):in_h/20:in_w/9:0,boxblur=5:1:cr=3:ar=3[b2];[vs0][b0]overlay=0:0[ovr0];[ovr0][b1]overlay=main_w-overlay_w:0[ovr1];[ovr1][b2]overlay=main_w/9:0[vs1] matches no streams.
-
ffmpeg.js running extremely slow in iOS cordova (but fine in iOS safari ?)
14 mai 2019, par PEWifyI'm trying to create a phonegap app that converts videos into maybe 30 or so jpeg frames.. This page converts a bigbuckbunny video into 30 frames > https://www.pewify.com/test/ (taken from https://bgrins.github.io/videoconverter.js/demo/)
It runs fine on an iPhone x running iOS 12 in mobile safari, it takes about 12-15 seconds to complete, but the same code packaged into a iOS cordova app running on the same phone will take almost 160 seconds to complete (both end results the same, but almost 10x as long), it works fine for android browsers or an android cordova app though
I'm using cordova android 7.0 and cordova ios 4.5.4 (phonegap cli-8.0.0) for the app
I've tried removing all unneeded plugins with just the bare minimum code but to no effect, it still runs just as slow
From what i understand phonegap is just using a webview similar to safari to render the app but in this case it works but much slower, on top of that the phone starts to get heated up (presumably doing some intensive CPU?)
Did read something about using WKWebview being faster in cordova instead but that messes up the app with lots of CORS and 'operation insecure" errors so have decided not to implement that for now (unless that is the solution?)
Hopefully someone can point me in the right direction as i'm not exactly sure what is the issue here as it works somewhat flawlessly in android (both chrome and phonegap) but only in iOS safari and not the phonegap app
-
ffmpeg - Drawing rotated text on video with complex filters takes a very long time
14 mai 2019, par Bedrule PaulI am trying to overlap different text pieces on some placeholders in a video, and I am using multiple complex filters of the following type:
ffmpeg -i ~/Desktop/input.mp4 -filter_complex \ "color=black@0:100x100,format=yuva444p[c]; \ [c][0]scale2ref[ct][mv31]; \ [ct]setsar=1,split=1[t31];\ [t31]\ drawtext=text='text':x='main_w/2-text_w/2+70':y=210:fontsize="100":fontcolor=black,\ drawtext=text='text2':x='main_w/2-text_w/2+75':y=340:fontsize="100":fontcolor=black,\ rotate=-0.07:ow=rotw(-0.07):oh=roth(-0.07):c=black@0[txta31]; \ [mv31][txta31]overlay=enable='between(t, 0, 1.15)':x='min(0,-H*sin(-0.07))':y='min(0,W*sin(-0.07))':shortest=1" \ ~/Desktop/result.mp4 -y1
My goal is to write differently rotated texts on different time intervals in the video. The problem is that at about 10-12 [t31]-like pieces(here is an example of only one command), the rendering time of the video is twice the time of the video, whereas drawing straight horizontal text takes about 10-20% of the total video length (examples, for a 1 minute video, it takes about 8-10 seconds to write straight horizontal text, and about 2 minutes to write the same amount of text, but inclined with an angle). Is there any better way to do these multiple rotated text bits with more performance?
-
How get video output on hardware acceleration with VAAPI on FFMPEG ?
14 mai 2019, par HellBloodFor my project I have to use hardware acceleration with
VAAPI
usingFFMPEG
, the problem is that withVAAPI
we have to use the"vaapi_retrieve_data"
function to download the GPU data. This is time consuming and I would like to be able to directly view the video via the GPU. The program is inC language
and aims to decode videos. Do you have a solution to recover the output data without going through the function? Thank you in advance :) Have a good day