1
I have ffmpeg working on my site to let users create various mp4s, and they all work fine on all devices except for one of my conversion functions, which isnt allowing the video to play on my iphone. The same exact video works fine in chrome on my laptop.
This is the code Im using --
// first we merge the audio file with the concat file for images
ffmpeg -i '.$thepath .'/audio.mp3 \
-safe 0 -f concat -i '.$thepath .'/paths.txt \
-af "volume=-1dB" -c:v libx264 -vprofile baseline \
-vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" -t 180 -pix_fmt yuv420p -movflags +faststart -y '.$output.' 2>&1
// now add background music
ffmpeg \
-i '.$output.' -i '.$musicpath .'/'.$music.'.mp3 \
-filter_complex "[1:a]volume=-25dB,apad[A];[0:a][A]amerge[out]" \
-c:v copy -map 0:v -map [out] -vprofile baseline -level 3.0 \
-pix_fmt yuv420p -movflags +faststart -shortest \
-y '.$thepath.'/output-'.$v_Id.'.mp4 2>&1
Because this is happening on iphone and I don't have a Mac, I am unable to see the output. Running the same code on my laptop though, I get this output ---
ffmpeg version N-90767-g768c077-syslint Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-16)
configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/cpffmpeg/include --extra-ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-version=syslint
libavutil 56. 15.100 / 56. 15.100
libavcodec 58. 19.100 / 58. 19.100
libavformat 58. 13.100 / 58. 13.100
libavdevice 58. 4.100 / 58. 4.100
libavfilter 7. 18.100 / 7. 18.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
[mp3 @ 0x12c1900] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from '/path/to/audio.mp3':
Metadata:
encoder : Lavf57.71.100
Duration: 00:00:18.00, start: 0.000000, bitrate: 48 kb/s
Stream #0:0: Audio: mp3, 22050 Hz, mono, fltp, 48 kb/s
Input #1, concat, from '/path/to/paths.txt':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #1:0: Video: png, rgb24(pc), 754x424, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #1:0 -> #0:0 (png (native) -> h264 (libx264))
Stream #0:0 -> #0:1 (mp3 (mp3float) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x12eb740] using cpu capabilities: none!
[libx264 @ 0x12eb740] profile Constrained Baseline, level 3.1
[libx264 @ 0x12eb740] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=0 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=22 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 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 '/path/to/output-4672-first.mp4':
Metadata:
encoder : Lavf58.13.100
Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 1280x720, q=-1--1, 25 fps, 12800 tbn, 25 tbc
Metadata:
encoder : Lavc58.19.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 69 kb/s
Metadata:
encoder : Lavc58.19.100 aac
[swscaler @ 0x13ddb00] Warning: data is not aligned! This can lead to a speed loss
frame= 151 fps= 47 q=28.0 size= 0kB time=00:00:03.48 bitrate= 0.1kbits/s dup=149 drop=0 speed=1.08x
frame= 301 fps= 50 q=28.0 size= 0kB time=00:00:09.48 bitrate= 0.0kbits/s dup=298 drop=0 speed=1.58x
frame= 451 fps= 54 q=28.0 size= 256kB time=00:00:15.48 bitrate= 135.5kbits/s dup=447 drop=0 speed=1.87x
frame= 599 fps= 58 q=28.0 size= 512kB time=00:00:21.40 bitrate= 196.0kbits/s dup=595 drop=0 speed=2.06x
[mp4 @ 0x12ea0c0] Starting second pass: moving the moov atom to the beginning of the file
frame= 599 fps= 54 q=-1.0 Lsize= 619kB time=00:00:23.92 bitrate= 212.0kbits/s dup=743 drop=0 speed=2.16x
video:434kB audio:175kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.592660%
[libx264 @ 0x12eb740] frame I:4 Avg QP:13.86 size: 99376
[libx264 @ 0x12eb740] frame P:595 Avg QP:14.17 size: 78
[libx264 @ 0x12eb740] mb I I16..4: 43.0% 0.0% 57.0%
[libx264 @ 0x12eb740] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.5% 0.1% 0.0% 0.0% 0.0% skip:99.5%
[libx264 @ 0x12eb740] coded y,uvDC,uvAC intra: 57.5% 55.0% 48.9% inter: 0.0% 0.4% 0.0%
[libx264 @ 0x12eb740] i16 v,h,dc,p: 74% 11% 4% 11%
[libx264 @ 0x12eb740] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 30% 12% 4% 5% 4% 7% 4% 7%
[libx264 @ 0x12eb740] i8c dc,h,v,p: 56% 21% 17% 5%
[libx264 @ 0x12eb740] ref P L0: 95.5% 2.6% 1.9%
[libx264 @ 0x12eb740] kb/s:148.30
[aac @ 0x12ecac0] Qavg: 9185.104
ffmpeg version N-90767-g768c077-syslint Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-16)
configuration: --prefix=/usr/local/cpffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/local/cpffmpeg/include --extra-ldflags=-L/usr/local/cpffmpeg/lib --enable-version3 --extra-version=syslint
libavutil 56. 15.100 / 56. 15.100
libavcodec 58. 19.100 / 58. 19.100
libavformat 58. 13.100 / 58. 13.100
libavdevice 58. 4.100 / 58. 4.100
libavfilter 7. 18.100 / 7. 18.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/path/to/output-4672-first.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.13.100
Duration: 00:00:23.96, start: 0.000000, bitrate: 211 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, 148 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 79 kb/s (default)
Metadata:
handler_name : SoundHandler
Input #1, mp3, from '/path/to/creative_minds.mp3':
Duration: 00:02:27.23, start: 0.025057, bitrate: 160 kb/s
Stream #1:0: Audio: mp3, 44100 Hz, stereo, fltp, 160 kb/s
Metadata:
encoder : LAME3.97
Side data:
replaygain: track gain - -8.100000, track peak - unknown, album gain - unknown, album peak - unknown,
Stream mapping:
Stream #0:1 (aac) -> amerge:in0
Stream #1:0 (mp3float) -> volume
Stream #0:0 -> #0:0 (copy)
amerge -> Stream #0:1 (aac)
Press [q] to stop, [?] for help
[Parsed_amerge_2 @ 0x95f580] No channel layout for input 1
Output #0, mp4, to '/path/to/output-4672.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.13.100
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720, q=2-31, 148 kb/s, 25 fps, 25 tbr, 12800 tbn, 12800 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1: Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, 3.0, fltp, 197 kb/s (default)
Metadata:
encoder : Lavc58.19.100 aac
frame= 439 fps=0.0 q=-1.0 size= 768kB time=00:00:17.52 bitrate= 359.1kbits/s speed= 35x
[mp4 @ 0x78dc80] Starting second pass: moving the moov atom to the beginning of the file
frame= 599 fps=0.0 q=-1.0 Lsize= 889kB time=00:00:23.92 bitrate= 304.6kbits/s speed=46.5x
video:434kB audio:445kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.096470%
Any solution for this? In my case it sounds like that the problem comes from
Lavf58
encoder. It's working file withLavf57
. – Amirreza Nasiri – 2019-09-19T11:07:55.130