Wie kann das cygwin fontconfig-Paket Windows-Schriftarten erben?

1692
Witiko

Ich verwende einen cygwin64-Build von ffmpeg ( 1, 2 ), um Untertitel wie folgt in eine Videodatei zu brennen :

$ ffmpeg -i file.mp4 -vf subtitles=file.srt file.ts ffmpeg version 1.2.3 Copyright (c) 2000-2013 the FFmpeg developers built on Sep 18 2013 01:11:22 with gcc 4.8.1 (GCC) configuration: --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/bin --incdir=/usr/include --mandir=/usr/share/man --disable-static --enable-shared --enable-gpl --enable-version3 --enable-postproc --enable-swscale --enable-avfilter --enable-pthreads --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libcdio --enable-libcelt --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwolame --disable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --disable-libxavs --enable-openal --enable-x11grab --enable-zlib --disable-debug --disable-optimizations --enable-yasm --disable-stripping libavutil 52. 18.100 / 52. 18.100 libavcodec 54. 92.100 / 54. 92.100 libavformat 54. 63.104 / 54. 63.104 libavdevice 54. 3.103 / 54. 3.103 libavfilter 3. 42.103 / 3. 42.103 libswscale 2. 2.100 / 2. 2.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 2.100 / 52. 2.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 2013-07-18 23:29:41 encoder : Lavf51.12.1 Duration: 00:21:59.66, start: 0.000000, bitrate: 5461 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 5135 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc Metadata: creation_time : 2013-07-19 02:21:28 handler_name : VideoHandler Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 319 kb/s Metadata: creation_time : 2013-07-19 02:21:28 handler_name : SoundHandler [srt @ 0x600057e80] Estimating duration from bitrate, this may be inaccurate Output #0, mpegts, to 'file.ts': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf54.63.104 Stream #0:0(eng): Video: mpeg2video, yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 59.94 tbc Metadata: creation_time : 2013-07-19 02:21:28 handler_name : VideoHandler Stream #0:1(eng): Audio: mp2, 48000 Hz, stereo, s16, 128 kb/s Metadata: creation_time : 2013-07-19 02:21:28 handler_name : SoundHandler Stream mapping: Stream #0:0 -> #0:0 (h264 -> mpeg2video) Stream #0:1 -> #0:1 (aac -> mp2) Press [q] to stop, [?] for help [Parsed_subtitles_0 @ 0x6000229c0] Neither PlayResX nor PlayResY defined. Assuming 384x288 

Die Untertitel erscheinen jedoch überhaupt nicht im resultierenden Videostream.

Die [Parsed_subtitles_0 @ 0x6000229c0] Neither PlayResX nor PlayResY defined. Assuming 384x288Warnung ist kein Teil des Problems, da durch die Konvertierung der Untertitel in .assvia ffmpeg -i file.srt file.assund die Angabe der Werte für PlayResX und Y die Warnung verschwindet, ohne das ursprüngliche Problem zu lösen.

Ich weiß, dass die libass-Bibliothek, die den Untertitel-Filter für ffmpeg bereitstellt, fontconfig verwendet, von dem bekannt ist, dass er unter Windows nicht direkt funktioniert . Das Fehlen von fontconfig-Warnungen lässt mich jedoch glauben, dass dies hier nicht das Problem ist. Gibt es Hinweise darauf, was die Ursache des Problems sein könnte?

EDIT: Ich habe ffmpeg selbst heruntergeladen und kompiliert:

$ git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg $ cd ffmpeg $ ./configure --enable-static --disable-shared --enable-libass $ make 

Die Ausgabe der Konvertierung ./ffmpeg -i file.mp4 -vf subtitles=file.srt file.tsist identisch mit der Ausnahme, dass diesmal keine Warnmeldungen gedruckt werden. Ich schaue, ob die fontconfig-Bibliothekskonfiguration der Schuldige sein könnte.

1
Und Ihre Programmierfrage lautet ........ KevinDTimm vor 9 Jahren 0
Die Frage ist, warum das so ist. Ich gehe davon aus, dass es sich nicht um einen Fehler handelt, sondern um eine Fehlkonfiguration / fehlende Befehlszeilenoptionen. Ich würde sagen, dass dies als Programmierfrage gilt? Wenn nicht, wo schlage ich vor, diese Anfrage zu posten? Witiko vor 9 Jahren 0
funktionieren Zerano-Builds? https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo ist alles, was ich darüber weiß ... rogerdpack vor 9 Jahren 0
Die Zeranoe-Builds leiden unter falscher Konfiguration von fontconfig und sind keine systemeigenen, ausführbaren Dateien von Cygwin. Deshalb habe ich, anstatt fontconfig manuell zu konfigurieren (http://ffmpeg.zeranoe.com/forum/viewtopic.php?f=10&t=318&start=10), versucht, diesen Build auszuführen, der behauptet, statisch mit der `libass`-Bibliothek verknüpft worden zu sein . Ich werde die Zeranoe-Builds ausprobieren und die Ergebnisse veröffentlichen. Witiko vor 9 Jahren 0
Ich habe eine Lösung gepostet, den Titel geändert, um das allgemeinere Problem zu berücksichtigen, das er löst, und die Frage für die Migration auf http://unix.stackexchange.com gekennzeichnet Witiko vor 9 Jahren 0

1 Antwort auf die Frage

9
Witiko

Wie es sich herausstellt, erbt das Paket cygwin fontconfig standardmäßig die Windows-Schriftarten nicht. Ich habe dies behoben, indem ich den C:\Windows\FontsOrdner mit einem der Ordner fontconfig symbolisch verknüpfte und den Cache für die Schriftart wie folgt aktualisiert:

$ ln -s /cygdrive/c/Windows/Fonts /usr/share/fonts/win-fonts $ fc-cache 

Alternativ enthält das Repository von cygwin ports zahlreiche font-*X11-Pakete, die auf ähnliche Weise installiert werden können, wobei die Zeichensätze von cygwin und Windows getrennt bleiben.