= melt encoding sniplets
siehe auch https://www.mltframework.org/plugins/ConsumerAvformat/
== VOC export profile encoding profile
* XML code for manually editing the mlt file
* if you want to endoder with Shotcut, add a new profile and paste the following options:
pix_fmt=yuv420p
rescale=bilinear
width=1920
aspect=1,77778
top_field_first=2
preset=medium
f=mp4
flags2=-dct8x8
g=13
maxrate=5000k
bufsize=8192k
threads=0
vcodec=libx264
progressive=1
real_time=-3
bf=2
ab=192k
vpre=medium
r=50
height=1080
minrate=100k
acodec=aac
deinterlace_method=yadif
crf=21
ar=48000
vprofile=main
movflags=+faststart
== group sniplets to uncut.mlt
melt -consumer xml babylon-2018-05-26_21-08-38-22834.ts babylon-2018-05-26_21-11-38-22834.ts > uncut.mlt
== dg50 encoding
Direkter encode aus den fuse-ts files
/home/voc/Shotcut.app/melt -progress -track \
/video/datengarten/intros/50.ts \
/opt/crs/fuse/datengarten/hd-capture-2/50/uncut.ts in=1857 out=$((1*60*60*25+3*60*25+52*25)) \
/opt/crs/fuse/datengarten/hd-capture-2/50/uncut.ts in=$((1*60*60*25+18*60*25+2*25)) out=162370 \
/video/datengarten/intros/outro.ts \
-attach-track frei0r.hqdn3d \
-consumer avformat:/video/datengarten/tmp/dg50-out3.mp4 f=mp4 acodec=aac ab=192k \
vcodec=libx264 crf=20 vminrate=100k vmaxrate=5000k vpreset="medium" \
movflags=+faststart bufsize=8192k pix_fmt=yuv420p threads=8
Reencode des fertigen hd.mp4 um die pause herauszuschneiden (pause 1:04:00 -> 1:18:11)
melt -progress \
/video/datengarten/tmp/50-hd-camonly.mp4 in=0 out=96000 \
/video/datengarten/tmp/50-hd-camonly.mp4 in=117275 \
-consumer avformat:/home/voc/dg50-out.mp4 f=mp4 acodec=aac ab=192k vcodec=libx264 crf=20\
bufsize=8192k minrate=100k maxrate=5000k vprofile=main vlevel=4.0 movflags=+faststart pix_fmt=yuv420p
== timvideo
xvfb-run -a melt /encode-final/lca2014-intro.dv \
-filter watermark:"/encode-tmp/gentilli/101/101-title.png" \
in=300 out=500 composite.progressive=1 producer.align=centre composite.valign=c composite.halign=c \
/encode-tmp/gentilli/101/start-101.dv \
/encode-tmp/gentilli/101/2014-01-09_15-42-23.dv \
/encode-tmp/gentilli/101/2014-01-09_16-18-04.dv \
/encode-tmp/getilli/101/2014-01-09_16-21-59.dv \
/encode-fin1al/lca2014-exit.dv -consumer avformat
== channel mapping
melt ./${file[$i]} $INOUT -profile pal -filter channelcopy to=1 from=0 \
-consumer avformat:./${output[$i]}.webm progress=1 vb=1000k quality=good deadline=good \
deinterlace=1 deinterlace_method=yadif
== shotcut/kdenlive project file rendern
mono mp4 z.B. Repair mit Backup Recording aus Kamera rendern:
melt -progress -track --project 1005.mlt -consumer avformat:./1005-cut.mp4 f=mp4 acodec=aac ab=192k channels=1 vcodec=libx264 crf=20 bufsize=8192k minrate=100k maxrate=5000k vprofile=main vlevel=4.0 movflags=+faststart pix_fmt=yuv420p
== melt transcode (fosdem)
#!/bin/bash
#
# (c) 2013-2015 Holger Levsen holger@layer-acht.org
# GPL2 licenced
title[0]="Stretching out for trustworthy reproducible builds"
speaker[0]="Holger and Lunar"
file[0]="k1105_la_fontaine_a_31_142433.mp4"
begin_offset[0]="9385"
end_offset[0]="17913"
videos=1
for i in $(seq 0 $videos) ; do
if [ -z "${file[$i]}" ] ; then
continue
fi
if [ -z "${speaker[$i]}" ] ; then
echo "${title[$i]} using ${file[$i]}"
output[$i]=$(echo ${title[$i]} | sed -s "s# #_#g" )
else
echo "${title[$i]} by ${speaker[$i]} using ${file[$i]}"
output[$i]=$(echo ${title[$i]} by ${speaker[$i]} | sed -s "s# #_#g" )
fi
echo " -> ${output[$i]}"
IN=""
OUT=""
# 25 frames per second
if [ ! -z ${begin_offset[$i]} ] ; then
IN="in=$(echo ${begin_offset[$i]}*25|bc)"
fi
if [ ! -z ${end_offset[$i]} ] ; then
OUT="out=$(echo ${end_offset[$i]}*25|bc)"
fi
INOUT="$IN $OUT"
echo $INOUT
if [ ! -f ./${output[$i]}.webm ] ; then
melt ./${file[$i]} $INOUT -profile pal -filter channelcopy to=1 from=0 \
-consumer avformat:./${output[$i]}.webm progress=1 vb=1000k quality=good \
deadline=good deinterlace=1 deinterlace_method=yadif
fi
done