1

When I add a watermark image with a landscape orientation to a video that has a portrait orientation the video automatically rotates to landscape. How do I prevent this? Also, the audio file isn't being merged into the output. How can I include the audio.mp3 to be the sole audio track?

ffmpeg -i 1425500438.MOV -i hashtag.png -itsoffset 00:00:07 -i audio.mp3  -filter_complex "[0:v]curves=preset=vintage[a];[a][1:v]overlay=10:10[out]"  -vcodec libx264 -pix_fmt yuv420p -ss 0:0:07 -t 14 -map "[out]" -y processed.mov

EDIT****

ffmpeg version 2.1.4 Copyright (c) 2000-2014 the FFmpeg developers
  built on Mar 19 2014 12:48:02 with Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.1.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-libvorbis --enable-libvpx --enable-librtmp --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-aacenc --enable-libass --enable-ffplay --enable-libspeex --enable-libschroedinger --enable-libfdk-aac --enable-libopus --enable-frei0r --enable-libopenjpeg --extra-cflags='-I/usr/local/Cellar/openjpeg/1.5.1/include/openjpeg-1.5 '
  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
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1425500438.MOV':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2015-03-04 20:20:14
    encoder         : 8.1.2
    encoder-eng     : 8.1.2
    date            : 2015-03-04T14:20:14-0600
    date-eng        : 2015-03-04T14:20:14-0600
    model           : iPhone 6
    model-eng       : iPhone 6
    make            : Apple
    make-eng        : Apple
  Duration: 00:00:10.56, start: 0.000000, bitrate: 703 kb/s
    Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 696 kb/s, 30.02 fps, 30.08 tbr, 600 tbn, 1200 tbc (default)
    Metadata:
      rotate          : 90
      creation_time   : 2015-03-04 20:20:14
      handler_name    : Core Media Data Handler
Input #1, image2, from 'hashtag.png':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #1:0: Video: png, rgba, 131x29, 25 tbr, 25 tbn, 25 tbc
Input #2, mp3, from 'audio.mp3':
  Metadata:
    encoder         : Lavf55.19.104
  Duration: 00:00:10.44, start: 0.000000, bitrate: 128 kb/s
    Stream #2:0: Audio: mp3, 16000 Hz, stereo, s16p, 128 kb/s
[libx264 @ 0x7f9894017200] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX AVX2 FMA3 BMI1 BMI2
[libx264 @ 0x7f9894017200] profile High, level 3.0
[libx264 @ 0x7f9894017200] 264 - core 125 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - 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=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=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, mov, to 'processed.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    make-eng        : Apple
    make            : Apple
    encoder-eng     : 8.1.2
    date            : 2015-03-04T14:20:14-0600
    date-eng        : 2015-03-04T14:20:14-0600
    model           : iPhone 6
    model-eng       : iPhone 6
    encoder         : Lavf55.19.104
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 480x360, q=-1--1, 11552 tbn, 30.08 tbc (default)
Stream mapping:
  Stream #0:0 (h264) -> curves
  Stream #1:0 (png) -> overlay:overlay
  overlay -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
frame=  422 fps=413 q=-1.0 Lsize=     361kB time=00:00:13.96 bitrate= 211.9kbits/s dup=303 drop=0    
video:356kB audio:0kB subtitle:0 global headers:0kB muxing overhead 1.574185%
[libx264 @ 0x7f9894017200] frame I:2     Avg QP:20.09  size: 19764
[libx264 @ 0x7f9894017200] frame P:134   Avg QP:22.29  size:  2248
[libx264 @ 0x7f9894017200] frame B:286   Avg QP:28.02  size:    79
[libx264 @ 0x7f9894017200] consecutive B-frames:  9.2%  0.0%  3.6% 87.2%
[libx264 @ 0x7f9894017200] mb I  I16..4:  6.6% 45.0% 48.4%
[libx264 @ 0x7f9894017200] mb P  I16..4:  1.8%  2.4%  0.7%  P16..4: 40.8% 13.6%  4.5%  0.0%  0.0%    skip:36.1%
[libx264 @ 0x7f9894017200] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 10.9%  0.1%  0.0%  direct: 0.0%  skip:89.0%  L0:56.5% L1:42.3% BI: 1.2%
[libx264 @ 0x7f9894017200] 8x8 transform intra:47.6% inter:61.5%
[libx264 @ 0x7f9894017200] coded y,uvDC,uvAC intra: 51.3% 81.4% 36.7% inter: 5.6% 8.5% 0.5%
[libx264 @ 0x7f9894017200] i16 v,h,dc,p: 21% 27% 12% 40%
[libx264 @ 0x7f9894017200] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 27% 19%  5%  4%  4%  7%  5%  6%
[libx264 @ 0x7f9894017200] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 35% 22% 12%  4%  5%  5%  6%  4%  6%
[libx264 @ 0x7f9894017200] i8c dc,h,v,p: 40% 28% 22% 10%
[libx264 @ 0x7f9894017200] Weighted P-Frames: Y:16.4% UV:10.4%
[libx264 @ 0x7f9894017200] ref P L0: 73.7% 12.2% 11.7%  2.3%  0.2%
[libx264 @ 0x7f9894017200] ref B L0: 93.5%  5.8%  0.7%
[libx264 @ 0x7f9894017200] ref B L1: 97.2%  2.8%
[libx264 @ 0x7f9894017200] kb/s:207.25
Ben
  • 291
  • 1
  • 3
  • 16

1 Answers1

1

Problem 1

When I add a watermark image with a landscape orientation to a video that has a portrait orientation the video automatically rotates to landscape. How do I prevent this?

The problem is the rotate metadata in the video stream. In your case this is set by the iPhone. The video is not actually recorded "vertically", but the player is supposed to use the rotation metadata to rotate it upon playback. Unfortunately, some players pay attention to this metadata, such as QuickTime, while others ignore it, such as VLC. Due to the inconsistency of players and because ffmpeg preserves the stream metadata this can cause issues.

What to do:

  1. Since you're filtering anyway you can use one of many rotation capable filters to reposition the video.

  2. Strip out the video stream rotation metadata.

Problem 2

The audio file isn't being merged into the output. How can I include the audio.mp3 to be the sole audio track?

Since you used the -map option the default stream selection behavior was disabled. It's generally a better idea to explicitly define the inputs/streams you want, so just add another -map to map the audio.

Example

ffmpeg -i video.mov -i logo.png -i audio.mp3 -filter_complex \
"[0:v]transpose=2,curves=preset=vintage[bg]; \
 [bg][1:v]overlay=10:10,format=yuv420p[vid]" \
-c:v libx264 -metadata:s:v rotate="" -map "[vid]" -map 2:a -c:a copy \
-shortest output.mov

Also see:

Community
  • 1
  • 1
llogan
  • 121,796
  • 28
  • 232
  • 243