[Cin] Blu-ray encoding again
Andrew Randrianasulu
randrianasulu at gmail.com
Thu Nov 14 15:18:50 CET 2019
Hi!
With Marton's patches from git clone -b mpegts https://github.com/cus/ffmpeg/
and CinGG compiled with ffmpg.git I _nearly_ got some rendering.
But option files still needed some modification
For example I was running into x264 errors.
cin
Cinelerra Infinity - built: Nov 14 2019 14:17:05
git://git.cinelerra-gg.org/goodguy/cinelerra.git
(c) 2006-2019 Heroine Virtual Ltd. by Adam Williams
(c) 2007-2019 cin5 derivative by W.P. Morrow aka goodguy
Cinelerra is free software, covered by the GNU General Public License,
and you are welcome to change it and/or distribute copies of it under
certain conditions. There is absolutely no warranty for Cinelerra.
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
[libx264 @ 0xe9a3c4c0] interlace + weightp is not implemented
[libx264 @ 0xe9a3c4c0] using mv_range_thread = 88
[libx264 @ 0xe9a3c4c0] NAL HRD parameters require VBV parameters
[libx264 @ 0xe9a3c4c0] using SAR=1/1
[libx264 @ 0xe9a3c4c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX XOP FMA3 BMI1
[libx264 @ 0xe9a3c4c0] profile High, level 4.1
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
FFMPEG::encode_activate: write header failed /dev/shm//bd_20191114-163217/bd.m2ts
err: Недопустимый аргумент
Render::render_single: Session finished.
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
some of them were fixed by applying parameters from
http://www.x264bluray.com/home/1080i-p
[libx264 @ 0xe0609640] using mv_range_thread = 88
[libx264 @ 0xe0609640] using SAR=1/1
[libx264 @ 0xe0609640] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX XOP FMA3 BMI1
[libx264 @ 0xe0609640] HRD bitrate: 40000000 bits/sec
[libx264 @ 0xe0609640] CPB size: 30000000 bits
[libx264 @ 0xe0609640] profile High, level 4.1
[SWR @ 0xcfba81c0] Using fltp internally between filters
Device type none is not supported.
Available device types: vdpau cuda vaapi opencl
Render::render_single: Session finished.
but there still warning at ffmpeg site about deprecation of x264opts:
https://trac.ffmpeg.org/wiki/Encode/H.264
Warning: Do not use the option x264opts, as it will eventually be removed. Use x264-params instead.
---
/usr/share/cin/ffmpeg/video/bluray.m2ts 417/417 100%
bluray libx264
bluray-compat=1
id=0x1011
level=41
bf=2
fake-interlaced=1
bitrate=40000
slices=4
sar=1:1
# vbv-maxrate=40000
# vbv-bufsize=30000
refs=3
cin_pix_fmt=yuv420p
color_range=mpeg
colorspace=bt709
color_trc=bt709
color_primaries=bt709
profile=high
preset=medium
flags=+cgop
# must be last for bdcreate.C
x264opts keyint=25:min-keyint=4:qpmin=3:qpmax=33:qp_step=4:merange=8:vbv-maxrate=40000:vbv-bufsize=30000
---
/usr/share/cin/ffmpeg/format/bluray 129/129 100%
mpegts
mpegts_m2ts_mode=1
mpegts_start_pid=1024
mpegts_pmt_start_pid=256
muxrate 1
#sdt_period=-1
packetsize 2048
preload 500000
But please note some x264 params actually should vary for interlaced or progressive, 25 vs 30 fps:
1080p
Primary and Secondary Streams
1080p23.976 / 1080p24
x264 --bitrate XXXXX --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264 input.file
x264 --bitrate XXXXX --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264 input.file
NB: the following two streams are encoded using fake-interlaced mode. This allows the stream to be encoded progressively yet flagged as interlaced.
1080p25
x264
--bitrate XXXXX --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 25
--open-gop
--slices 4 --fake-interlaced
--colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264
input.file
x264
--bitrate XXXXX --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 25
--open-gop
--slices 4 --fake-interlaced
--colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264
input.file
1080p29.97
x264
--bitrate XXXXX
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 30
--open-gop
--slices 4 --fake-interlaced
--colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264
input.file
x264
--bitrate XXXXX
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 30 --open-gop --slices 4 --fake-interlaced --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264 input.file
1080i
Primary and Secondary Streams (assumes top field first)
1080i25
x264
--bitrate XXXXX
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 25 --open-gop --slices 4 --tff --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264
input.file
x264
--bitrate XXXXX
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 25 --open-gop --slices 4 --tff --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264
input.file
1080i29.97 / 1080i30
x264
--bitrate XXXXX
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 30 --open-gop --slices 4 --tff --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264
input.file
x264
--bitrate XXXXX
--preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level
4.1 --keyint 30 --open-gop --slices 4 --tff --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o out.264
input.file
so, keyint must be dynamically-selected, depending on profile you (user) choose,
and fake_interlaced must be present for progressive encodings
More on those constrains, refering same page:
https://av.community/guides/encoding-video-for-blu-ray-using-h264-avc/
"8-bit (4:2:0) Colorspace is only allowed
Main and High profiles are allowed
Maximum 3 B-Frames is allowed
NAL-HRD Type 2 capable encoder is needed"
note, according to some comments around vbv-bufsize you can mux to DVD, so test this, too?
"vbv-maxrate Maximum allowed bitrate. Depend of destination media, for normal BD Media,
maximum settings is allowed (40000), while for DVD Media (eg BD-5 or BD-9) there is no
maximum per Blu-Ray specification, but is strongly recommended that use less
or equal to 15000, since DVD reading is slower."
-------------- next part --------------
# apply at init encode
loglevel=debug
threads=auto
side_data_only_packets=1
-------------- next part --------------
mpegts
mpegts_m2ts_mode=1
mpegts_start_pid=1024
mpegts_pmt_start_pid=256
muxrate 1
#sdt_period=-1
packetsize 2048
preload 500000
-------------- next part --------------
bluray libx264
bluray-compat=1
id=0x1011
level=41
bf=2
fake-interlaced=1
bitrate=40000
slices=4
sar=1:1
# vbv-maxrate=40000
# vbv-bufsize=30000
refs=3
cin_pix_fmt=yuv420p
color_range=mpeg
colorspace=bt709
color_trc=bt709
color_primaries=bt709
profile=high
preset=medium
flags=+cgop
# must be last for bdcreate.C
x264opts keyint=25:min-keyint=4:qpmin=3:qpmax=33:qp_step=4:merange=8:vbv-maxrate=40000:vbv-bufsize=30000
More information about the Cin
mailing list