[FFmpeg-user] Modifying ProRes vendor_id metadata tag
Marcel Hinsch
marcel.hinsch at kdg.at
Thu May 6 17:15:15 EEST 2021
Hi,
While working with FFMPEG's prores encoder and trying to verify its
validity in creating files that are compliant with a certain
set of specifications, I seem to have come to an impasse.
I've managed to resolve most issues that our automated tests have issues
with except the message that the video track
has a vendor string of "FFMP" instead of "appl".
Digging deeper with the help of ffprobe, I can confirm that that is in
fact the case when I go into
probe->streams->0/video stream->tags->vendor_id = "FFMP"
Having to already spoof the encoder using -metadata encoder="Apple ProRes
422 HQ" I figured it was as simple as telling
ffmpeg to set the -metadata:s:v:0 vendor_id=appl
When trying to encode FFMPEG also tells me that the output file will have
the metadata vendor_id=appl
Output #0, mov, to 'out.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
vendor_id : appl
encoder : Lavf58.76.100
Stream #0:0(eng): Video: prores (HQ) (apch / 0x68637061),
yuv422p10le(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31,
200 kb/s, 0.04 fps, 12800 tbn (default)
Metadata:
creation_time : 2020-12-21T13:20:40.000000Z
handler_name : Apple Video Media Handler
vendor_id : appl
timecode : 00:00:00:00
encoder : Apple ProRes 422 HQ
Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, 5.1,
s16, 4608 kb/s (default)
Metadata:
creation_time : 2020-12-21T13:20:40.000000Z
handler_name : Apple Sound Media Handler
vendor_id :
timecode : 00:00:00:00
encoder : Lavc58.134.100 pcm_s16le
Stream #0:2(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz,
stereo, s16, 1536 kb/s (default)
Metadata:
creation_time : 2020-12-21T13:20:40.000000Z
handler_name : Apple Sound Media Handler
vendor_id :
timecode : 00:00:00:00
encoder : Lavc58.134.100 pcm_s16le
The full command I use is
ffmpeg -i src.mov -map 0:0 -map 0:1 -map 0:2 -c:a:0 pcm_s16le
-disposition:a:0 default -c:a:1 pcm_s16le -disposition:a:1 default
-disposition:d:0 default -c:v prores -profile:v 3 -aspect 16:9 -pix_fmt
yuv422p10le -movflags +write_colr -vendor apl0 -metadata:s:v:0
encoder="Apple ProRes 422 HQ" -metadata "vendor_id=appl" -color_primaries
bt709 -color_trc bt709 -colorspace bt709 -trellis 0 -subq 7 -me_range 16
-b_strategy 1 -sws_flags fast_bilinear -sc_threshold 40 -keyint_min 23 -g
240 -qmin 3 -qmax 51 -copyts -y out.mov
When trying to check after writing using ffprobe again, the vendor_id
remains as FFMP though.
Am I doing something wrong here? Can FFMPEG not overwrite the vendor_id?
If that is the case, is there a specific reason for it?
- Marcel
More information about the ffmpeg-user
mailing list