Hallo,
Wie bringe ich am besten ffmpeg / libav auf einen aktuellen stand? Ist das überhaupt ohne weiteres möglich, oder zerschieße ich mir alles? Ich möchte für softhddevice eine aktuellere Version verwenden um die Frameratenerkennung der letzten GIT Stände zu nutzen.
ffmpeg / libav auf Aktuellen Stand bringen?
-
-
Das ist mit Ubuntu Precise/yaVDR 0.5 leider nicht so einfach - zumindest ist es mir nicht gelungen ffmpeg 2.x dafür zu paketieren.
Man müsste dann auch alle Plugins, die libav bzw. ffmpeg nutzen neu dagegen bauen.Mit Ubuntu trusty klappt es hingegen, da sind die entsprechenden ffmpeg-Versionen und passend gebaute Plugins auch in den yaVDR-PPAs unstable-main und unstable-vdr.
-
Die Version von Trusty passt ja ohnehin schon.
Kann man nicht der Lib nicht einfach ein anderes Suffix mitgeben und dann nur softhddevice damit neu bauen? -
Es scheitert schon beim bauen von ffmpeg: http://ffmpeg.org/pipermail/li…/2013-October/005773.html
-
ohja super...
Dann hoffe ich mal auf ein baldiges yaVDR auf Trusty Basis... -
How about using static builds ? http://johnvansickle.com/ffmpeg/
-
The static prebuild packages do not contain any header files nor libraries, only ffmpeg-binaries - so how would you build the softhddevice-plugin using this?
-
Alternativ könnte man auch suchen wie man die Frameratenerkennung mit alten ffmpeg hinbekommt.
Johns
-
johns
Hast du diesen patch übersehen? softhddevice git 4f4d304 fehler
Oder mit Absicht nicht übernommen?
Der scheint ja das alte ffmpeg auch zu beachten. -
Der Patch macht nicht anderes als der meinige im GIT.
Die framerate wird für alte ffmpegs einfach fest als 50Hz / 25 Hz angenommen.
Also für alte ffmpeg hat SoftHdDevice keine automatische Frameratenerkennung.
Die funktioniert nur mit neuen.time_base könnte mit alten ffmpeg gehen, aber noch nicht weiter getestet.
Johns
-
Anbei ein Patch zum testen, geht hier mit 1.2.9.
Diff
Alles anzeigen--- a/video.c +++ b/video.c @@ -457,11 +457,20 @@ static void VideoSetPts(int64_t * pts_p, int interlaced, // FIXME: using framerate as workaround for av_frame_get_pkt_duration // #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(56,13,100) - // FIXME: need frame rate for older versions - duration = interlaced ? 40 : 20; // 50Hz -> 20ms default + // version for older ffmpeg without framerate + if (video_ctx->time_base.num && video_ctx->time_base.den) { + duration = + (video_ctx->ticks_per_frame * 1000 * video_ctx->time_base.num) / + video_ctx->time_base.den; + } else { + duration = interlaced ? 40 : 20; // 50Hz -> 20ms default + } + Debug(4, "video: %d/%d %" PRIx64 " -> %d\n", video_ctx->time_base.den, + video_ctx->time_base.num, av_frame_get_pkt_duration(frame), duration); #else - if (video_ctx->framerate.num != 0 && video_ctx->framerate.den != 0) { - duration = 1000 * video_ctx->framerate.den / video_ctx->framerate.num; + if (video_ctx->framerate.num && video_ctx->framerate.den) { + duration = + (1000 * video_ctx->framerate.den) / video_ctx->framerate.num; } else { duration = interlaced ? 40 : 20; // 50Hz -> 20ms default }
Johns
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!