2017-02-05 4 views
1

Ich habe MoviePy verwendet, um ein Video aus einem Bild zu erstellen und am unteren Bildrand Anmerkungen hinzuzufügen. Das Problem ist, dass der Text, den ich hinzufügen möchte, Vietnamesisch (nicht Englisch) ist, damit MoviePy es nicht richtig anzeigen kann.MoviePy kann nicht-englischen Text nicht korrekt anzeigen

Insbesondere unter meinem Code ist

# -*- coding: utf-8 -*- 
from moviepy.editor import * 

# create clip from image 
clip = ImageClip('img/1.jpg').on_color((1920, 1080)) 
clip = clip.set_duration(2) 

# add annotation to clip 
txtclip = TextClip('Truyện Kiều Nguyễn Du', fontsize=50, color='red') 
cvc = CompositeVideoClip([ clip, txtclip.set_pos(('center', 'bottom'))]) 
cvc = cvc.set_duration(2) 

# write video to file 
cvc.write_videofile("text.mp4", fps=24) 

Statt Truyện Kiều Nguyễn Du anzuzeigen, zeigt es Truy?n Ki?u Nguy?n Du.

denke ich, das Hauptproblem von ImageMagick ist, weil, wenn ich Befehl

verwenden

convert -size 400x200 xc:khaki -gravity Center -pointsize 30 -annotate 0 "Truyện Kiều Nguyễn Du" u8_an.png

auch ImageMagick ein Bild mit dem gleichen Problem schafft. Bitte lassen Sie es mich wissen, wenn Sie mir helfen können, es zu beheben.

UPDATE: Ich versuche auch, um die Zeichenfolge zu konvertieren, um UTF-8, aber es nicht

t = u'Truyện Kiều Nguyễn Du'.encode('utf-8') txtclip = TextClip(t, fontsize=50, color='red')

+0

Es könnte ein Problem mit der Standardschriftart sein. Geben Sie einen an, von dem Sie wissen, dass er vietnamesische Zeichen enthält. Möglicherweise müssen Sie den Text auch explizit in UTF-8 codieren. –

+0

BTW, mit Unicode-Fragen ist es immer eine gute Idee, die Python-Version und das Betriebssystem zu erwähnen. –

+0

Hallo, die Version von Python, die ich verwendet habe, ist 2.7.12. Mein Betriebssystem ist Ubuntu 16.04 LTS 64bit. Ich habe auch den Text zu UTF8 explizit kodieren, aber es funktioniert nicht '' t = u'Truyện Kiều Nguyễn Du'.encode ('utf-8') txtclip = TextClip (t, Schriftgröße = 50, color =‘ rot ') '' würden Sie mir mehr Vorschlag der Schriftart geben? – tndoan

Antwort

0

Aus dem Vorschlag von @Gloin funktioniert, ich meine Lösung als Antwort posten.

Es wird mit einer anderen Schriftart für TextClip behoben. Insbesondere ist dies die Lösung

# -*- coding: utf-8 -*- 
from moviepy.editor import * 

# create clip from image 
clip = ImageClip('img/1.jpg').on_color((1920, 1080)) 
clip = clip.set_duration(2) 

# add annotation to clip 
t = u'Truyện Kiều Nguyễn Du'.encode('utf-8') 
txtclip = TextClip(t, fontsize=50, color='red', font='FreeMono') 
cvc = CompositeVideoClip([ clip, txtclip.set_pos(('center', 'bottom'))]) 
cvc = cvc.set_duration(2) 

# write video to file 
cvc.write_videofile("text.mp4", fps=24) 

ich glaube, das Problem ist, dass wir (1) verwenden, utf-8 zu kodieren, die Zeichenfolge (2) verwenden, um die geeignete Schriftart zu ImageMagick schieben (in meinem Fall berücksichtigen müssen FreeMono ist die passende)

Verwandte Themen