Singularity je rootkit ve formě jaderného modulu (Linux Kernel Module), s otevřeným zdrojovým kódem dostupným pod licencí MIT. Tento rootkit je určený pro moderní linuxová jádra 6.x a poskytuje své 'komplexní skryté funkce' prostřednictvím hookingu systémových volání pomocí ftrace. Pro nadšence je k dispozici podrobnější popis rootkitu na blogu autora, případně v článku na LWN.net. Projekt je zamýšlen jako pomůcka pro bezpečnostní experty a výzkumníky, takže instalujte pouze na vlastní nebezpečí a raději pouze do vlastních strojů 😉.
Iconify je seznam a galerie kolekcí vektorových open-source ikon, ke stažení je přes 275000 ikon z více jak dvou set sad. Tento rovněž open-source projekt dává vývojářům k dispozici i API pro snadnou integraci svobodných ikon do jejich projektů.
Dle plánu certifikační autorita Let's Encrypt nově vydává také certifikáty s šestidenní platností (160 hodin) s možností vystavit je na IP adresu.
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.
Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.
Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.
Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.
Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny
… více »D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
#!/bin/bash
if not [ -s "$1" ]; then
printf "%s\n" "video not found!"
exit 1
fi
for p in ffmpeg ffprobe bc convert tesseract; do
if not which $p > /dev/null 2>&1; then
printf "%s\n" "$p not found!"
exit 1
fi
done
video="$1"
language=ces
output_file="$(readlink -f "$video")-$(date +%s).srt"
until [ "$c" = "w" -o "$c" = "y" ]; do
printf "\n"
read -n 1 -p "Select subtitle color [w]hite / [y]ellow : " c
if [ "$c" = "w" ]; then sub_color=white
elif [ "$c" = "y" ]; then sub_color=yellow
fi
done
printf "\n%s\n%s\n%s\n" "sub_color=$sub_color" "output_file=$output_file" "Processing ....."
duration=$(ffprobe -i "$video" -v error -select_streams v:0 \
-show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 | \
cut -d. -f1)
get_time() {
hh=$(echo "$t/3600" | bc)
mm=$(echo "($t-$hh*3600)/60" | bc)
ss=$(echo "$t-$hh*3600-$mm*60" | bc)
if [ $hh -lt 10 ]; then hh=0$hh; fi
if [ $mm -lt 10 ]; then mm=0$mm; fi
if [ $ss -lt 10 ]; then ss=0$ss; fi
time="$hh:$mm:$ss"
}
t=0
while [ $t -lt $duration ]; do
get_time
t=$((t+1))
sub=$(ffmpeg -ss $time -i "$video" -an -sn -vf "crop=iw:ih/2:0:ih" -c:v png \
-vframes 1 -f image2pipe - 2> /dev/null |
convert - -fuzz 25% -fill black +opaque "$sub_color" -threshold 50% -negate - |
tesseract stdin stdout -l $language 2> /dev/null |
grep [[:alnum:]])
if [ -n "$sub" -a -z "$sub_start" ]; then sub_start=$time sub_old="$sub"; fi
if [ -z "$sub" -o "$sub_old" != "$sub" ]; then sub_end=$time; fi
if [ -n "$sub_start" -a -n "$sub_end" ]; then
n=$((n+1))
printf "%s\n%s %s %s\n%s\n\n" "$n" "$sub_start,000" "-->" "$sub_end,999" "$sub_old" |
tee -a "$output_file"
sub_start=""
fi
sub_end=""
done
Celý ten proces probíhá tak, že ffmpeg vytáhne z filmu obrázek, ustřihne pryč vrchní půlku, pošle se to přes imagemagick convert filtr a nakonec to tesseract zkusí přečíst. Titulky bývají nejčasteji žluté nebo bílé. To byl docela oříšek protože když už to jakžtakž četlo bílé titulky, tak to zas nečetlo žluté a naopak. Vyřešil jsem to tak, že se skript na začáktu prostě zeptá jakou mají titulky barvu a podle toho potom nastaví convert filtr. Barva titulků se nechá a zbytek se vyplní černou
Chtělo by ale přesnější časování, občas se stane že titulek co trvá míň jak jednu sekundu to nezachytí. Milisekundy v tom výstupním srt souboru jsem provizorně obešel takovým megahnusným hackem v printf. Asi by se to dalo zpřesnit tak, že by ffmpeg tahal z filmu obrázky né po sekundě ale třeba po 100ms. Ale to by to celé trvalo nesmyslně dlouho. Už tak to trvá skoro hodinu. Další neduh to má ten, že stačí aby tesseract v jedné větě v jenom snímku přečetl třeba tečku místo čárky a i když je věta na první pohled stejná, tak skript z toho udělá dva titulky. Takže je ten srt soubor trochu větší. Klidně 100KB a víc. Záleží jak moc se ve filmu kecá. Největší peklo je, když se ve filmu v dolní polovině obrazu začnou objevovat nějaké nápisy v barvě titulků, ale s tím asi nejde dělat nic.
Výsledek to vypisuje jak na terminál a zároveň přes tee do souboru. Testovat se to dá hezky tak, že se ten film prostě pustí, ty vygenerované externí titulky se posunou na vrchní půlku obrazu (klávesy r t) a hned je v reálném čase vidět jak moc se to povedlo. U některých filmů je ten výsledek k pláči, no u některých to příjemně překvapilo až jsem čubrněl.
Tiskni
Sdílej:
ffmpeg -i video.mp4 -r 1/1 $filename%03d.pngKdyž jsem to zkoušel, tak minutovou sekvenci vyblil cca za 6 sekund 2, Pak bych vybral jeden reprezentativní keyframe, ze kterého bych pomocí výběru podle barev vybral optimální selekci, tak aby zabrala pokud možno všechny barvy titulku. A z té bych pak udělal mapu barev:
pngtopnm title_yellow.pnm | pnmcolormap all > mapa.pnmRedukcí barev se výrazně zjednoduší a zrychlí následné zpracování. 3, No a pak bych s využitím této mapy bych projel ve smyčce všechny snímky: for i in (ls *.png) ; do pngtopnm $i | pnmremap -map=mapa.pnm -missingcolor=white > ${i/png/pnm} ; done Ještě víc by se to dalo urychlit tím, že bych před ten pnmremap předřadil pnmcut, aby se zpracovávala jen ta část obrazu, kde se vyskytují titulky. Čímž by ještě víc zredukoval objem dat s nimiž by se pak měl tesseract zabývat. A k jejich zpracování bych si napsal jednoduchý skriptík, který by bral jeden po druhém a přes pnmpsnr, porovnál jestli nedošlo ke změně. Pokud jo, tak pokud by šlo o začátek titulku, tak by zavolal tesseract, a když by to byl konec, tak by zapsal výsledek s číslem počátečního a koncového keyframe do souboru s titulky.
test01.png je výsledek po průchodu přes všechny snímky, test02.png pouze přes dva), trochu chytřejší implementace (d(p1, p2) > t) není o nic lepší (test04.png je výsledek po průchodu přes všechny snímky při t=10). Zvyšování thresholdu nepomáhá. Co je zvláštní, tak že i pokud threshold nastavím tak absurdně vysoko (dejme tomu na 300), že téměř všechny pixely ve scéně zůstanou netknuty, titulky to stejně částečně usekne (viz test07.png). Napadá mě jediné logické vysvětlení, že tam dochází k nějakému nepatrnému posunu, což je věc, kterou jsem fakt nepředpokládal. Čekal bych, že titulek bude pozicovaný vždy stejně.
No ale zkoušel jsem ty framy projet od oka a žádného viditelného posunu jsem si nevšiml, tak fakt nevím. Protože pokud tam k tomu posunu nedochází, tak by to aspoň o trochu lepší výsledky produkovat mělo, ne? Pak by bylo na čase přemýšlet, jak to optimalizovat (zmenšení viewportu na relevantní část, nějaké půlení intervalu, aby to nebralo úplně všechny snímky, …). Pokud je to ale opravdu tím skákáním a neudělal jsem teď v rychlosti někde jen nějakou stupidní chybu, bylo by nutné místo jednotlivých pixelů sledovat nějaké matice sousedních pixelů atd. Natrénovat nějaký model přímo na čtení titulků by v dnešní době asi byla rozumnější cesta.
# all frames::
# mkdir all_frames_orig
# cd all_frames_orig
# ffmpeg -i ../Trailer_2020.orig.mp4 -vsync 0 -r 25 -f image2 %04.png
# cd ..
## tohle ale muze trvat dooost dlouho (4000 asi 4 hodiny):
## vysekne jen vybrane snimky
for f in $(seq 0 4752); do
fn=$(printf "%04d.png" $f)
ffmpeg -i ../Trailer_2020.orig.mp4 -vf "select=eq(n\,$f)" -vframes 1 $fn
done
#######
mkdir key_frames_orig_hms
cd key_frames_orig_hms
# ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv ../Trailer_2020.orig.mp4
ffprobe -select_streams v -show_frames -of csv ../Trailer_2020.orig.mp4 > trailer_ffprobe.out
cat trailer_ffprobe.out | awk -F',' '{print $5,$6,$19}' > trailer_ffprobe_types.out
grep 'I' trailer_ffprobe_types.out > trailer_ffprobe_types_keys.out
## vyzaduje all_frames nebo vysekavat po jednom (viz vyse)
cat trailer_ffprobe_types_keys.out | while read a b c; do
zpframe=$(printf '%04d' $a); secs=$(printf '%.2f' $b);
ms=$(python -c"print('{}m{:02.2f}s'.format(int($b//60),$b % 60))")
convert ../all_frames_orig/$zpframe.png -quality 80 ./${zpframe}_${secs}s_${ms}.jpg;
done
-noaccurate_seek
Když to čte jenom každý pětadvacátý snímek tak to zas až tak zoufale pomalé není. Nejvíc na tom zdržuje to OCR které se nakonec zavolat stějně musí. Když by se ffmpeg překompiloval s volbou --enable-libtesseract tak se tím zpřístupní filtr ocr. Ale to moc nechápu jak to funguje.
jo :D :D ;D ;D
a furt jim tam řikám jak je jako ten linux supr jak všecko funguje aže takovej a takovej problémek by v linuxu vubec nebyl možnej i když vim žeto jako neni pravda a každou chvilku se musí v linuxu něco vopravovat :O :D :D ;D
Az na to ze na DVD jsou titulky ve vlastnich stopach ...
coz tady autor resi uplne jiny problem o oplne jine komplexite ... HardCoded SUBS :D , ale u uzivatele windows clovek neceka ze pochopi psany text a nebo vi neco o technologii na pozadi
ne, je to celkem relevantni .. chtel bych videt tn X let stary program na widle co to udela na kliknuiti ..
to jestli je autor pirat nebo ne je irelevatni, i ten kdo grabuje orig dvd a OCRkem protahuje titulky je pirat ..
Kdyby používal "neuronku", tak se neptá.Ptá, protože potřebuje trénovací data.
co tohleto hele :O :O
No to je vlastně původní důvod, proč toto celé vzniklo. Protože se mi ten videocr nepodařilo rozhýbat.
Taky autor toho videocr píše, že dvacetisekundové video to čte tři minuty. To se mi zdá hodně pomalé. Teď zrovna překopávám tady ten bash skript tak, že čte za sekundu ne jeden obrázek ale dva a zjišťuju že to stačí. Žádné titulky netrvají míň jak 500ms. V té původní verzi co je navrchu v blogu se mi občas krátký titulek ztratil. Hodně se tím zvýšila přesnost časování. Bohužel s tím ale narostl počet duplikátů (asi v tom mám bug) a taky to celé trvá dvakrát dýl. Přibližně je to stejně rychlé jak přehrávání. Dám to do přílohy. Přijde mi že je to o maličko víc použitelné jak ta původní verze.
Taky autor toho videocr píše, že dvacetisekundové video to čte tři minuty.No to je fakt HODNĚ pomalé. Jak bych na to šel já jsem popsal o kousek výše.