Yazdığım Python uygulamasında sorun var

Başlatan cemergun34, 24 Ekim 2014 - 12:56:24

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

cemergun34

Aşağıda verdiğim kodlar. mp4 (media dosyası) 1 saniyede resim dosyası oluşturuyor. işlem bittikden sonra python kapatmadan olşturduğu dosya yarım kalıyor nerde hata yaptım sizce

import os
import shutil
import sys
import subprocess
import time
from stat import S_ISREG, ST_CTIME, ST_MODE
import re
from PIL import Image
import hashlib
from decimal import Decimal
import pdb
import fnmatch
#ffmpeg kendi yaratır 18.08.2014 resimisle-ffmpeg dosyasında manuel ffmpeg calsıtırılıp segmentasyon islemine daha sonra gecilmistir

def dhash(image, hash_size = 1):
        # Grayscale and shrink the image in one step.
        image = image.convert('L').resize(
            (hash_size + 1, hash_size),
            Image.ANTIALIAS,
        )
        pixels = list(image.getdata())
        # Compare adjacent pixels.
        difference = []
        for row in xrange(hash_size):
            for col in xrange(hash_size):
                pixel_left = image.getpixel((col, row))
                pixel_right = image.getpixel((col + 1, row))
                difference.append(pixel_left > pixel_right)

        # Convert the binary array to a hexadecimal string.
        decimal_value = 0
        hex_string = []
        for index, value in enumerate(difference):
            if value:
                decimal_value += 2**(index % 8)
            if (index % 8) == 7:
                hex_string.append(hex(decimal_value)[2:].rjust(2, '0'))
                decimal_value = 0

        return ''.join(hex_string)

def getLength(filename):
result = subprocess.Popen(["ffprobe", filename],
    stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
return [x for x in result.stdout.readlines() if "Duration" in x]

def toplamsaniye(zaman):
saat=int(zaman[14:16])
dakika=int(zaman[17:19])
saniye=int(zaman[20:22])
topsaniye = 0
topsaniye += 60 * 60 * saat
topsaniye += 60 * dakika
topsaniye += saniye
return topsaniye

def tekdosyakopyala():
shutil.copy(pat[0]+"/slide_0001_full.jpg", pat[1]+"/slide_0001_full.jpg")

def isimolustur(sirano):
    sira=int(sirano)
    if sira<10:
       return "slide_000%s_full.jpg" % (sirano)
    if sira<100:
       return "slide_00%s_full.jpg" % (sirano)
    if sira<1000:
       return "slide_0%s_full.jpg" % (sirano)
    if sira<10000:
       return "slide_%s_full.jpg" % (sirano)

def standbaslik(dosyaismi,sure):
baslik="""/*global Mediasite:true*/
if (typeof Mediasite === "undefined" || !Mediasite) {
var Mediasite = {};
}

Mediasite.PlaybackManifest = function () { };

Mediasite.PlaybackManifest.CreateSlide = function (text, time, description) {
return { Text: text, Time: time, Description: description };
};

Mediasite.PlaybackManifest.CreateChapter = function (text, time) {
return { Text: text, Time: time };
};

Mediasite.PlaybackManifest.CreateLink = function (description, url) {
return { Description: description, Url: url };
};

Mediasite.PlaybackManifest.CreatePresenter = function (name, imageUrl, email, bioUrl) {
return { Name: name, ImageUrl: imageUrl, Email: email, BioUrl: bioUrl };
};

Mediasite.PlaybackManifest.CreateTranscriptEvent = function (text, sourceText, startTime) {
return { Text: text, SourceText: sourceText, Time: startTime };
};
//Mediasite.PlaybackManifest.ServerClockSkew= new Date().getTime() - 136205746959;
Mediasite.PlaybackManifest.Version="6.1.1821";
Mediasite.PlaybackManifest.IsStandAlone=true;
Mediasite.PlaybackManifest.VideoUrls= [];
Mediasite.PlaybackManifest.VideoUrls[0] = {MimeType:"video/x-ms-wmv", Location:"Content/04a0e88b-fe2b-4ef2-a701-09768190f2d2.wmv"};
Mediasite.PlaybackManifest.VideoUrls[1] = {MimeType:"video/mp4", Location:"Content/%s"};
Mediasite.PlaybackManifest.SlideBaseUrl="Content/";
Mediasite.PlaybackManifest.SlideImageFileNameTemplate="slide_{0:D4}_full.jpg";
Mediasite.PlaybackManifest.PlaybackTicketId="";
Mediasite.PlaybackManifest.SlidePlaybackTicketId="";
Mediasite.PlaybackManifest.IsLive=false;
Mediasite.PlaybackManifest.IsOnDemand=true;
Mediasite.PlaybackManifest.PollingEnabled=false;
Mediasite.PlaybackManifest.ForumEnabled=false;
Mediasite.PlaybackManifest.SharingEnabled=false;
Mediasite.PlaybackManifest.PresentationThumbImage="";
Mediasite.PlaybackManifest.SearchPresentationTextOnServer=false;
Mediasite.PlaybackManifest.HasSlideContent=true;
Mediasite.PlaybackManifest.PlayStatus="OnDemand";
Mediasite.PlaybackManifest.AnonymousAllowed=true;
//Mediasite.PlaybackManifest.PresentationId="587ae5893645434abfdf3d568c974b421d";
Mediasite.PlaybackManifest.Title="bu ülkenin güzel insanlari";
Mediasite.PlaybackManifest.Description="Konuşmacı: Dr. Abigail Fowden Moderatör:Prof.Dr. Dilara Ergün";
Mediasite.PlaybackManifest.Duration=%s;
Mediasite.PlaybackManifest.AirDate="2/27/2013";
Mediasite.PlaybackManifest.AirTime="2:00 PM GTBST";
Mediasite.PlaybackManifest.Slides = [];"""%(dosyaismi,str(sure)+"000")
return baslik

def standaltbaslik():
cem= """Mediasite.PlaybackManifest.HasSlideDescriptions=false;
Mediasite.PlaybackManifest.Chapters = [];
Mediasite.PlaybackManifest.SupportingLinks = [];
Mediasite.PlaybackManifest.Presenters = [];
Mediasite.PlaybackManifest.Presenters[0] = Mediasite.PlaybackManifest.CreatePresenter("Konuşmacı:","","","");
Mediasite.PlaybackManifest.Transcript = [];"""
return cem

def olustur():
    cmd=['ffmpeg', '-i', 'SCREEN.mp4', '-an', '-f', 'image2', '-vf', 'fps=fps=1', "slide_%04d_full.jpg"]
    subprocess.call(cmd)

def resimolc(im):       
    if not isinstance(im, Image.Image):
        im = Image.open(im)
    im = im.resize((8, 8), Image.ANTIALIAS).convert('L')
    avg = reduce(lambda x, y: x + y, im.getdata()) / 64.
    return reduce(lambda x, (y, z): x | (z << y),
                  enumerate(map(lambda i: 0 if i < avg else 1, im.getdata())),
                  0)

def karsilastir(h1, h2):
    h, d = 0, h1 ^ h2
    while d:
        h += 1
        d &= d - 1
    return h

kopyalanmisresim=[]
#once nerede oldugunu buluyoruz :(path)
ffmpegolusturan = os.getcwd()
esasklasor=ffmpegolusturan + "/Content"
pat=[ffmpegolusturan,esasklasor]
#camera dosyası content klasorune kopyalanır
shutil.copy(ffmpegolusturan+"/CAMERA.mp4",esasklasor+ "/CAMERA.mp4")
#standolone dosyasında yaratılacak dosya isimleri için arttırma yapar
standslaytsayisi=0
#sira numarası için incirmet
sira=0
# videonun toplam saniyesini hesapladi
toplamsure= toplamsaniye(str(getLength('SCREEN.mp4')))
# standolone icin deger tanımlıyoruz
ekle=""
ekle=standbaslik('CAMERA.mp4', toplamsure) + "\n"
# videonun toplam saatini baz alarak zamani 5 er 5 er arttirdi
olustur()
for sureizle in range(1,toplamsure,1):
    sira=sira+1
   #ffmpeg ile olusturlan dosyaların isim olusmasını sağlar
    dosyaismi=isimolustur(sira)
    #ffmpeg ile resim dosyasi olusturdu
    if sira==1:
        tekdosyakopyala()
        ekle=ekle + """Mediasite.PlaybackManifest.Slides[0] = Mediasite.PlaybackManifest.CreateSlide("",0,"");""" + "\n"
    else:
        # once esas klasor icindeki dosya sayisi ardından esas klasordeki son dosya ismi olusturuluyor
        dosyasayisi=len(fnmatch.filter(os.listdir(pat[1]), '*.jpg'))
        sondosya=isimolustur(dosyasayisi)
        #pdb.set_trace()
        gresim=pat[0] + "/" + dosyaismi
        eresim=pat[1] + "/" + sondosya
        hash1 = resimolc(gresim)
        hash2 = resimolc(eresim)
        dist = int(karsilastir(hash1, hash2))
        print "benzeme orani=" + str(dist)+ "sure" + str(sureizle)
        if dist>=2:
           #pdb.set_trace()
           #fark gordu
           dosyasayisi=len(fnmatch.filter(os.listdir(pat[1]), '*.jpg'))
           #burada dosya ismi verlir.
           sondosya = isimolustur(dosyasayisi+1)
           eresim=pat[1] + "/" + sondosya
           shutil.copy(gresim, eresim)
           #burada dosya okudukdan sonra iki degeride alacak
           standslaytsayisi=standslaytsayisi+1
           ekle=ekle + """Mediasite.PlaybackManifest.Slides[%s] = Mediasite.PlaybackManifest.CreateSlide("",%s,"");"""%(str(standslaytsayisi),str(sureizle)+ "000") + "\n"
           #pdb.set_trace()
        os.remove(gresim)
dosya= open("standalone-manifest.js","w")
altbaslik= standaltbaslik()
yaz=ekle + altbaslik
dosya.write(yaz)
dosya.close
print "islem bitti"

if

Konu başlığını sorunu yansıtacak şekilde düzeltin. Kodları da kod etiketi içine alın.

sem

Şu aşamada pek yardımcı olamayacağım, iletiniz ve başlığınız anlamlı değil.

Sadece ilk cümlenize binaen şu konuya bakmanızı önerebilirim, (sadece ilk cümleye göre söylüyorum): yazdığınız buffer'lara flush uygulamadan uygulamayı sonlandırmayın. Bu konuyu kontrol edebilirsiniz.

İyi çalışmalar.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?