134 lines
4.1 KiB
Python
134 lines
4.1 KiB
Python
#PY <- Needed to identify #
|
|
|
|
# Fisheye removal for GoPro 11+, 8:7 ratio, without hypersmooth
|
|
# Copyright (C) 2025 Roz K <roz@rozk.net>
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as
|
|
# published by the Free Software Foundation, either version 3 of the
|
|
# License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
adm = Avidemux()
|
|
adm.videoCodec(
|
|
"x264",
|
|
"useAdvancedConfiguration=False",
|
|
"general.params=CBR=65536",
|
|
"general.threads=0",
|
|
"general.preset=slow",
|
|
"general.tuning=film",
|
|
"general.profile=high",
|
|
"general.fast_decode=False",
|
|
"general.zero_latency=True",
|
|
"general.fast_first_pass=False",
|
|
"general.blueray_compatibility=False",
|
|
"general.fake_interlaced=False",
|
|
"level=-1",
|
|
"vui.sar_height=1",
|
|
"vui.sar_width=1",
|
|
"vui.overscan=0",
|
|
"vui.vidformat=5",
|
|
"vui.fullrange=False",
|
|
"vui.colorprim=2",
|
|
"vui.transfer=2",
|
|
"vui.colmatrix=2",
|
|
"vui.chroma_loc=0",
|
|
"MaxRefFrames=3",
|
|
"MinIdr=25",
|
|
"MaxIdr=250",
|
|
"i_scenecut_threshold=40",
|
|
"intra_refresh=False",
|
|
"MaxBFrame=3",
|
|
"i_bframe_adaptive=1",
|
|
"i_bframe_bias=0",
|
|
"i_bframe_pyramid=2",
|
|
"b_deblocking_filter=True",
|
|
"i_deblocking_filter_alphac0=0",
|
|
"i_deblocking_filter_beta=0",
|
|
"cabac=True",
|
|
"interlaced=False",
|
|
"constrained_intra=False",
|
|
"tff=True",
|
|
"fake_interlaced=False",
|
|
"analyze.b_8x8=True",
|
|
"analyze.b_i4x4=True",
|
|
"analyze.b_i8x8=True",
|
|
"analyze.b_p8x8=True",
|
|
"analyze.b_p16x16=False",
|
|
"analyze.b_b16x16=False",
|
|
"analyze.weighted_pred=2",
|
|
"analyze.weighted_bipred=True",
|
|
"analyze.direct_mv_pred=1",
|
|
"analyze.chroma_offset=0",
|
|
"analyze.me_method=1",
|
|
"analyze.me_range=16",
|
|
"analyze.mv_range=-1",
|
|
"analyze.mv_range_thread=-1",
|
|
"analyze.subpel_refine=7",
|
|
"analyze.chroma_me=True",
|
|
"analyze.mixed_references=True",
|
|
"analyze.trellis=1",
|
|
"analyze.psy_rd=1.000000",
|
|
"analyze.psy_trellis=0.000000",
|
|
"analyze.fast_pskip=True",
|
|
"analyze.dct_decimate=True",
|
|
"analyze.noise_reduction=0",
|
|
"analyze.psy=True",
|
|
"analyze.intra_luma=11",
|
|
"analyze.inter_luma=21",
|
|
"ratecontrol.rc_method=0",
|
|
"ratecontrol.qp_constant=0",
|
|
"ratecontrol.qp_min=10",
|
|
"ratecontrol.qp_max=51",
|
|
"ratecontrol.qp_step=4",
|
|
"ratecontrol.bitrate=0",
|
|
"ratecontrol.rate_tolerance=1.000000",
|
|
"ratecontrol.vbv_max_bitrate=0",
|
|
"ratecontrol.vbv_buffer_size=0",
|
|
"ratecontrol.vbv_buffer_init=1",
|
|
"ratecontrol.ip_factor=1.400000",
|
|
"ratecontrol.pb_factor=1.300000",
|
|
"ratecontrol.aq_mode=1",
|
|
"ratecontrol.aq_strength=1.000000",
|
|
"ratecontrol.mb_tree=True",
|
|
"ratecontrol.lookahead=40")
|
|
adm.addVideoFilter(
|
|
"shaderLoader", "shaderFile=/opt/rk/avidemux/unfish_gopro_8:7.glsl")
|
|
adm.addVideoFilter(
|
|
"swscale",
|
|
"width=2468",
|
|
"height=2160",
|
|
"algo=2",
|
|
"sourceAR=0",
|
|
"targetAR=0",
|
|
"lockAR=False",
|
|
"roundup=0")
|
|
adm.audioClearTracks()
|
|
if adm.audioTotalTracksCount() <= 0:
|
|
raise("Cannot add audio track 0, total tracks: " + str(adm.audioTotalTracksCount()))
|
|
adm.audioAddTrack(0)
|
|
adm.audioCodec(0, "LavAAC", "bitrate=192")
|
|
adm.audioSetDrc2(0, 1, 1, 0.001, 0.2, 1, 2, -12)
|
|
adm.audioSetEq(0, 0, 0, 0, 0, 880, 5000)
|
|
adm.audioSetChannelGains(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
|
adm.audioSetChannelDelays(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
|
adm.audioSetChannelRemap(0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8)
|
|
adm.audioSetShift(0, 0, 0)
|
|
adm.audioSetNormalize2(0, 1, 10, -30)
|
|
adm.setContainer(
|
|
"MP4",
|
|
"muxerType=0",
|
|
"optimize=1",
|
|
"forceAspectRatio=False",
|
|
"aspectRatio=1",
|
|
"displayWidth=1280",
|
|
"rotation=0",
|
|
"clockfreq=0")
|