[FFmpeg-user] How to compress .MOV file compatible to Canon camera

Ulf Zibis Ulf.Zibis at gmx.de
Thu Mar 12 00:56:24 EET 2020


Am 11.03.20 um 17:28 schrieb Ulf Zibis:
>
> Am 11.03.20 um 13:50 schrieb Moritz Barsnick:
>> On Wed, Mar 11, 2020 at 13:25:45 +0100, Ulf Zibis wrote:
>>> Anyway, does my command line have the right syntax?
>>> ffmpeg -i MVI_1324.MOV -c:a copy -c:v h264_vaapi -profile:v
>>> constrained_baseline -level 4.1 MVI_1324.mov
>> It's syntactically correct, but it won't suffice. You need some more
>> "trickery" in order to do HW supported encode.
>>
>> I have little experience myself, so I can only point to this page,
>> which explains it quite nicely (AFAICT):
>>
>> https://trac.ffmpeg.org/wiki/Hardware/VAAPI
>
> Thanks for the great pointer.
>
> From this tutorial I get:
> $ ~/Projects/ffmpeg/dev_2/ffmpeg -vaapi_device /dev/dri/renderD128 -i
> MVI_1324.MOV -c:a copy -vf 'format=nv12,hwupload' -c:v h264_vaapi
> -profile:v constrained_baseline -level 4.1 -map_metadata 0 -movflags
> +faststart MVI_1324.mov
> ffmpeg version N-96935-g34d7c8d942 Copyright (c) 2000-2020 the FFmpeg
> developers
>   built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
>   configuration:
>   libavutil      56. 42.100 / 56. 42.100
>   libavcodec     58. 75.100 / 58. 75.100
>   libavformat    58. 41.100 / 58. 41.100
>   libavdevice    58.  9.103 / 58.  9.103
>   libavfilter     7. 77.100 /  7. 77.100
>   libswscale      5.  6.100 /  5.  6.100
>   libswresample   3.  6.100 /  3.  6.100
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MVI_1324.MOV':
>   Metadata:
>     major_brand     : qt
>     minor_version   : 537331968
>     compatible_brands: qt  CAEP
>     creation_time   : 2020-02-05T20:17:27.000000Z
>   Duration: 00:00:29.10, start: 0.000000, bitrate: 23351 kb/s
>     Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 /
> 0x31637661), yuvj420p(pc, smpte170m/bt709/bt709), 1280x720, 23228 kb/s,
> 29.97 fps, 29.97 tbr, 30k tbn, 60k tbc (default)
>     Metadata:
>       creation_time   : 2020-02-05T20:17:27.000000Z
>     Stream #0:1(eng): Audio: pcm_u8 (raw  / 0x20776172), 12000 Hz,
> mono, u8, 96 kb/s (default)
>     Metadata:
>       creation_time   : 2020-02-05T20:17:27.000000Z
> File 'MVI_1324.mov' already exists. Overwrite? [y/N] y
> Stream mapping:
>   Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_vaapi))
>   Stream #0:1 -> #0:1 (copy)
> Press [q] to stop, [?] for help
> [swscaler @ 0x561213fdfa80] deprecated pixel format used, make sure you
> did set range correctly
> [h264_vaapi @ 0x561213e138c0] No usable encoding profile found.
> Error initializing output stream 0:0 -- Error while opening encoder for
> output stream #0:0 - maybe incorrect parameters such as bit_rate, rate,
> width or height
> Conversion failed!
>
> Does anyone know, how to set the pixel format correctly?


As it seems there is no chance to make the VAAPI codec running, invested 
some effort in parametrizing the libx264 codec. So I was able to 
approximate most oft the properties to the original video from my Canon 
camera with:

$ ffmpeg -i MVI_1324.MOV -c:a copy -profile:v baseline -level 4.1 
-colorspace smpte170m -color_primaries bt709 -color_trc bt709 -refs 1 -g 
15 -map_metadata 0 -movflags +faststart MVI_1324_smpte170m_git.mov

Here are the remaining differences:

$ ffprobe MVI_1324.MOV
ffprobe version N-96935-g34d7c8d942 Copyright (c) 2007-2020 the FFmpeg 
developers
   built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
   configuration: --enable-libx264 --enable-gpl
   libavutil      56. 42.100 / 56. 42.100
   libavcodec     58. 75.100 / 58. 75.100
   libavformat    58. 41.100 / 58. 41.100
   libavdevice    58.  9.103 / 58.  9.103
   libavfilter     7. 77.100 /  7. 77.100
   libswscale      5.  6.100 /  5.  6.100
   libswresample   3.  6.100 /  3.  6.100
   libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MVI_1324.MOV':
   Metadata:
     major_brand     : qt
     minor_version   : 537331968
     compatible_brands: qt  CAEP
     creation_time   : 2020-02-05T20:17:27.000000Z
   Duration: 00:00:29.10, start: 0.000000, bitrate: 23351 kb/s
     Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 
0x31637661), yuvj420p(pc, smpte170m/bt709/bt709), 1280x720, 23228 kb/s, 
29.97 fps, 29.97 tbr, 30k tbn, 60k tbc (default)
     Metadata:
       creation_time   : 2020-02-05T20:17:27.000000Z
     Stream #0:1(eng): Audio: pcm_u8 (raw  / 0x20776172), 12000 Hz, 
mono, u8, 96 kb/s (default)
     Metadata:
       creation_time   : 2020-02-05T20:17:27.000000Z

$ ffprobe MVI_1324_smpte170m_git.mov
ffprobe version N-96935-g34d7c8d942 Copyright (c) 2007-2020 the FFmpeg 
developers
   built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
   configuration: --enable-libx264 --enable-gpl
   libavutil      56. 42.100 / 56. 42.100
   libavcodec     58. 75.100 / 58. 75.100
   libavformat    58. 41.100 / 58. 41.100
   libavdevice    58.  9.103 / 58.  9.103
   libavfilter     7. 77.100 /  7. 77.100
   libswscale      5.  6.100 /  5.  6.100
   libswresample   3.  6.100 /  3.  6.100
   libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MVI_1324_smpte170m_git.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 512        <=== difference <===
     compatible_brands: qt          <=== difference <===
     creation_time   : 2020-02-05T20:17:27.000000Z
     encoder         : Lavf58.41.100        <=== difference <===
   Duration: 00:00:29.10, start: 0.000000, bitrate: 6474 kb/s
     Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 
0x31637661), yuvj420p(pc, smpte170m/bt709/bt709), 1280x720, 6374 kb/s, 
29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) <=== little 
difference in tbc <===
     Metadata:
       creation_time   : 2020-02-05T20:17:27.000000Z
       handler_name    : VideoHandler        <=== difference <===
       encoder         : Lavc58.75.100 libx264        <=== difference <===
     Stream #0:1(eng): Audio: pcm_u8 (raw  / 0x20776172), 12000 Hz, 
mono, u8, 96 kb/s (default)
     Metadata:
       creation_time   : 2020-02-05T20:17:27.000000Z
       handler_name    : SoundHandler        <=== difference <===

$ mediainfo MVI_1324.MOV
General
Complete name                            : MVI_1324.MOV
Format                                   : MPEG-4
Format profile                           : QuickTime
Codec ID                                 : qt   2007.09 (qt /CAEP)
File size                                : 81.0 MiB
Duration                                 : 29 s 96 ms
Overall bit rate                         : 23.4 Mb/s
Encoded date                             : UTC 2020-02-05 20:17:27
Tagged date                              : UTC 2020-02-05 20:17:27

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline at L4.1
Format settings                          : 1 Ref Frames
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Format settings, GOP                     : M=1, N=15
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 29 s 96 ms
Bit rate                                 : 23.2 Mb/s
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 29.970 (30000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.841
Stream size                              : 80.6 MiB (99%)
Language                                 : English
Encoded date                             : UTC 2020-02-05 20:17:27
Tagged date                              : UTC 2020-02-05 20:17:27
Color range                              : Full
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.601

Audio
ID                                       : 2
Format                                   : PCM
Format settings                          : Little / Unsigned
Codec ID                                 : raw
Duration                                 : 29 s 96 ms
Bit rate mode                            : Constant
Bit rate                                 : 96.0 kb/s
Channel(s)                               : 1 channel
Channel positions                        : Front: C
Sampling rate                            : 12.0 kHz
Bit depth                                : 8 bits
Stream size                              : 341 KiB (0%)
Language                                 : English
Encoded date                             : UTC 2020-02-05 20:17:27
Tagged date                              : UTC 2020-02-05 20:17:27

$ mediainfo MVI_1324_smpte170m_git.mov
General
Complete name                            : MVI_1324_smpte170m_git.mov
Format                                   : MPEG-4
Format profile                           : QuickTime
Codec ID                                 : qt   0000.02 (qt )        
<=== difference <===
File size                                : 22.5 MiB
Duration                                 : 29 s 96 ms
Overall bit rate                         : 6 474 kb/s
Encoded date                             : UTC 2020-02-05 20:17:27
Tagged date                              : UTC 2020-02-05 20:17:27
Writing application                      : Lavf58.41.100 <=== difference 
<===

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline at L4.1
Format settings                          : 1 Ref Frames
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Format settings, GOP                     : M=1, N=15
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 29 s 96 ms
Bit rate                                 : 6 375 kb/s
Width                                    : 1 280 pixels
Height                                   : 720 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 29.970 (30000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.231
Stream size                              : 22.1 MiB (98%)
Writing library                          : x264 core 152 r2854 
e9a5903        <=== difference <===
Encoding settings                        : cabac=0 / ref=1 / 
deblock=1:0:0 / analyse=0x1:0x111 / me=hex / subme=7 / psy=1 / 
psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 
8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / 
threads=3 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / 
interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / 
weightp=0 / keyint=15 / keyint_min=1 / scenecut=40 / intra_refresh=0 / 
rc_lookahead=15 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / 
qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00 <=== difference <===
Language                                 : English
Encoded date                             : UTC 2020-02-05 20:17:27
Tagged date                              : UTC 2020-02-05 20:17:27
Color range                              : Full
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.601

Audio
ID                                       : 2
Format                                   : PCM
Format settings                          : Little / Unsigned
Codec ID                                 : raw
Duration                                 : 29 s 96 ms
Bit rate mode                            : Constant
Bit rate                                 : 96.0 kb/s
Channel(s)                               : 1 channel
Channel positions                        : Front: C
Sampling rate                            : 12.0 kHz
Bit depth                                : 8 bits
Stream size                              : 341 KiB (1%)
Language                                 : English
Default                                  : Yes
Alternate group                          : 1
Encoded date                             : UTC 2020-02-05 20:17:27
Tagged date                              : UTC 2020-02-05 20:17:27

As you can see, even I set "-profile:v baseline", the result changed to 
(Constrained Baseline), what is, what I wanted.

Unfortunately the resulting video is still not playable in my camera.

So I bother about:
     minor_version   : 537331968
     compatible_brands: qt  CAEP
and the addition of:
Encoding settings                        : cabac=0 / ref=1 / 
deblock=1:0:0 / analyse=0x1:0x111 / me=hex / subme=7 / psy=1 / 
psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=1 / 
8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / 
threads=3 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / 
interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / 
weightp=0 / keyint=15 / keyint_min=1 / scenecut=40 / intra_refresh=0 / 
rc_lookahead=15 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / 
qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00

What is CEAP, and how may I can also approximate those properties?

-Ulf



More information about the ffmpeg-user mailing list