Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-02-09 13:44:51

  szczypior88 - Członek DUG

szczypior88
Członek DUG
Skąd: Poznań
Zarejestrowany: 2007-02-06
Serwis

Edycja napisów - skrypt

Hej!
Mam telewizor z możliwością odtwarzania filmów z pena, czyta też napisy. Tylko że są one źle zsynchronizowane. Doczytałem, że trzeba im zmienić framerate z 24fps na 25fps. Radzę sobie przez gaupol, ale zacząłem się zastanawiać, czy nie można zastosować jakiegoś zgrabnego skryptu, który bym sobie później podpiął do menu kontekstowego?


[url=http://terapieautorskie.pl][img]http://www.szczypior88.republika.pl/cwp.gif[/img][/url]
pozdrawiam
szczypior

Offline

 

#2  2011-02-09 13:47:25

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Edycja napisów - skrypt

Proponuję wyeliminować problem w zarodku — pobieraj napisy za pomocą [deb]qnapi[/deb].


Błogosławieni, którzy czynią FAQ.
[url=http://www.opencaching.pl]opencaching[/url] :: [url=http://dug.net.pl/sources.list]debian sources.list[/url] :: [url=http://www.linuxportal.pl/blogi/azhag/wpisy]coś jakby blog[/url] :: [url=http://dug.net.pl/]polski portal debiana[/url] :: linux user #403712

Offline

 

#3  2011-02-09 15:11:10

  szczypior88 - Członek DUG

szczypior88
Członek DUG
Skąd: Poznań
Zarejestrowany: 2007-02-06
Serwis

Re: Edycja napisów - skrypt

Tak właśnie je pobieram.


[url=http://terapieautorskie.pl][img]http://www.szczypior88.republika.pl/cwp.gif[/img][/url]
pozdrawiam
szczypior

Offline

 

#4  2011-02-09 19:06:03

  life - Użytkownik

life
Użytkownik
Zarejestrowany: 2009-10-30

Re: Edycja napisów - skrypt

polecam http://sourceforge.net/projects/subconv/

Używam do konwersji z TXT na SRT

Offline

 

#5  2011-02-09 20:29:54

  pasqdnik - Pijak ;-P

pasqdnik
Pijak ;-P
Skąd: Wrocław
Zarejestrowany: 2006-03-06

Re: Edycja napisów - skrypt

mplayer + opcja  -subfps

Wycinek kodu ze starego skryptu txt2srt Michała Kowalczuka.

Kod:

iconv -f cp1250 -t utf8 < "$SUB" > "$SUB_UTF8"
echo q | $MPLAYER -sub "$SUB_UTF8" $SUBFPS -subcp utf8 -dumpsrtsub "$MOVIE" 2>&1

iconv -f utf8 -t cp1250 < dumpsub.srt > "$SRT"
rm -f "$SUB_UTF8" dumpsub.srt

Powinieneś sobie poradzić, od razu otrzymasz srt ;-)


Dum spiro - spero ...
pozdrawiam, pasqdnik

Offline

 

#6  2011-02-09 20:42:01

  life - Użytkownik

life
Użytkownik
Zarejestrowany: 2009-10-30

Re: Edycja napisów - skrypt

na sieci jest skrypt napi.py (do pobierania napisów), dodałem w niem jedną linijkę do pobierania okładki. Jako że Pythona nie znam prawie wcale to w bashu napisałem prosty skrypt pobierający napisy przez napi.py następnie z mediainfo pobieram ilość FPS. Wynik podstawiaony jest do subconv w wyniku czego jak są napisy to dostaje je z okładką w formacie TXT i SRT ... a i jeszcze enca do przekodowania na UTF-8 :)

Wszystko pod konsolą :)

Offline

 

#7  2011-02-09 21:07:00

  szczypior88 - Członek DUG

szczypior88
Członek DUG
Skąd: Poznań
Zarejestrowany: 2007-02-06
Serwis

Re: Edycja napisów - skrypt

@pasqdnik - dzięki za kod
@life - podzielisz się? :)


[url=http://terapieautorskie.pl][img]http://www.szczypior88.republika.pl/cwp.gif[/img][/url]
pozdrawiam
szczypior

Offline

 

#8  2011-02-09 21:11:42

  pasqdnik - Pijak ;-P

pasqdnik
Pijak ;-P
Skąd: Wrocław
Zarejestrowany: 2006-03-06

Re: Edycja napisów - skrypt

Kod:

pasqdnik@freedom:~$ cat bin/napi.py 
#!/usr/bin/python
# reversed napi 0.16.3.1
#
# by gim,krzynio,dosiu,hash 2oo8.
#
# 
#
# last modified: 6-I-2oo8
#
# 4pc0h f0rc3
#
# do dzialania potrzebny jest p7zip-full (tak sie nazywa paczka w debianie)
#
# POZDRAWIAMY NASZYCH FANOW!

import md5,sys,urllib,os

def f(z):
    idx = [ 0xe, 0x3,  0x6, 0x8, 0x2 ]
    mul = [   2,   2,    5,   4,   3 ]
    add = [   0, 0xd, 0x10, 0xb, 0x5 ]

    b = []
    for i in xrange(len(idx)):
        a = add[i]
        m = mul[i]
        i = idx[i]

        t = a + int(z[i], 16)
        v = int(z[t:t+2], 16)
        b.append( ("%x" % (v*m))[-1] )

    return ''.join(b)


if(len(sys.argv)==1):
    print "wy*dalaj na stadion po film"
    sys.exit(2)

d = md5.new();
d.update(open(sys.argv[1]).read(10485760))

str = "http://napiprojekt.pl/unit_napisy/dl.php?l=PL&f="+d.hexdigest()+"&t="+f(d.hexdigest())+"&v=other&kolejka=false&nick=&pass=&napios="+os.name

open("napisy.7z","w").write(urllib.urlopen(str).read())
nazwa=sys.argv[1][:-3]+'txt'

if (os.system("/usr/bin/7z x -y -so -piBlm8NTigvru0Jr0 napisy.7z 2>/dev/null >\""+nazwa+"\"")):
        print "nie ma napisa do filmu"
        os.remove(nazwa)        
else:
        print "napisy pobrano, milordzie!"

pasqdnik@freedom:~$

Dum spiro - spero ...
pozdrawiam, pasqdnik

Offline

 

#9  2011-02-09 23:27:57

  life - Użytkownik

life
Użytkownik
Zarejestrowany: 2009-10-30

Re: Edycja napisów - skrypt

Do pobrania okładki przed

Kod:

print "napisy pobrano, milordzie!"

daj to

Kod:

cov = "http://www.napiprojekt.pl/okladka_pobierz.php?id="+d.hexdigest()+"&oceny=-1"
open("okladka.jpg","w").write(urllib.urlopen(cov).read())

a skrypt do pobierani i konwersji wygląda tak:

Kod:

#!/bin/bash

SUB=/usr/local/bin/subconv.py
MOVIE="$1"

if [ "$1" = "" ]; then
        echo "Podaj nazwe pliku z filmem."
else
        NAPIE=`/usr/local/bin/napi.py "$MOVIE"`

        if [ "$NAPIE" != 'nima' ]; then
                FRATE=`mediainfo "$MOVIE" | grep 'Frame rate' | awk '{print $4}'`

                BASE="`echo "$1" | rev | cut -d . -f 2- | rev`"
                SRT="$BASE.srt"
                TXT="$BASE.txt"

                # dopasowanie
                sed -e 's/\[/{/g' "$TXT" > "$SRT"
                sed -e 's/\]/}/g' "$SRT" > "$TXT"
                echo "" > "$SRT"

                $SUB -i "$TXT" -r microdvd -o "$SRT" -f "$FRATE" -w subrip
                /usr/bin/enca -c "$SRT"
                echo "Pobralem i przerobilem napisy Milordzie!"
        else
                echo "Zong nima napisa Milordzie!"
        fi
fi

przy czym w napi.py zmieniłem to że zwraca "nima" gdy nie znajdzie napisów. Problem jest też z tym że napisy w napiprojekcie są w różnych formatach i skrypt nie zawsze zadziała poprawnie.

Offline

 

#10  2011-02-14 22:14:32

  szczypior88 - Członek DUG

szczypior88
Członek DUG
Skąd: Poznań
Zarejestrowany: 2007-02-06
Serwis

Re: Edycja napisów - skrypt

Dzięki :)


[url=http://terapieautorskie.pl][img]http://www.szczypior88.republika.pl/cwp.gif[/img][/url]
pozdrawiam
szczypior

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.009 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00105 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.188.107.57' WHERE u.id=1
0.00074 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.188.107.57', 1732493489)
0.00061 SELECT * FROM punbb_online WHERE logged<1732493189
0.00052 SELECT topic_id FROM punbb_posts WHERE id=164920
0.00191 SELECT id FROM punbb_posts WHERE topic_id=18271 ORDER BY posted
0.00058 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=18271 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00082 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=18271 ORDER BY p.id LIMIT 0,25
0.00088 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=18271
Total query time: 0.0073 s