FFMPEG 4, das MKV in MP4 umcodiert, hat mit DASHJS ein seltsames Problem

449
Mike

Ich bin nicht ganz sicher, ob ich weiß, was das Problem ist oder wo ich mit der Fehlersuche beginnen soll. Auf meiner CentOS 7-Box habe ich 4.0.1-static https://johnvansickle.com/ffmpeg/installiert und versuche, MKV-Dateien in MP4 umzucodieren, damit ich Bento4 zum Fragmentieren und Dash / HLS der Dateien für die Wiedergabe verwenden kann. Wenn ich eine MKV-Datei transcodiere, wird sie aus irgendeinem Grund nicht über Dash JS wiedergegeben. Bei der Konvertierung von MP4-Dateien habe ich jedoch kein Problem. Seltsam ist, wenn ich ein funktionierendes MP4 in MKV umwandle, funktioniert es.

Ich war nicht sicher, dass FFMPEG das Problem war, also habe ich eine andere Box, die Ubuntu mit FFMPEG 3.4 installiert hat, und ich kann MKV ohne Probleme transcodieren. Also habe ich meinen gleichen FFMPEG-Befehl verwendet, um den MKV in MP4 umzuwandeln und Bento4 zu verwenden, und es hat gut funktioniert. Es scheint also ein Problem bei der Umcodierung von MKV in MP4 mit Version 4 zu geben ... aber nicht sicher. Ich habe verschiedene MKVs ausprobiert und jeder gibt das Problem an.

Hier ist meine FFMPEG-Info:

ffmpeg version 4.0.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2018 the FFmpeg developers built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516  configuration:  --enable-gpl  --enable-version3 --enable-static  --disable-debug  --disable-ffplay  --disable-indev=sndio  --disable-outdev=sndio  --cc=gcc-6  --enable-fontconfig  --enable-frei0r  --enable-gnutls  --enable-gray  --enable-libaom  --enable-libfribidi  --enable-libass  --enable-libvmaf  --enable-libfreetype  --enable-libmp3lame  --enable-libopencore-amrnb  --enable-libopencore-amrwb  --enable-libopenjpeg  --enable-librubberband  --enable-libsoxr  --enable-libspeex  --enable-libvorbis  --enable-libopus  --enable-libtheora  --enable-libvidstab  --enable-libvo-amrwbenc  --enable-libvpx  --enable-libwebp  --enable-libx264  --enable-libx265  --enable-libxml2  --enable-libxvid  --enable-libzimg  libavutil 56. 14.100 / 56. 14.100 libavcodec 58. 18.100 / 58. 18.100 libavformat 58. 12.100 / 58. 12.100 libavdevice 58. 3.100 / 58. 3.100 libavfilter 7. 16.100 / 7. 16.100 libswscale 5. 1.100 / 5. 1.100 libswresample 3. 1.100 / 3. 1.100 libpostproc 55. 1.100 / 55. 1.100  Hyper fast Audio and Video encoder  usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... 

Einige der Dinge, die ich ausprobiert habe, sind das FFMPEG-Wiki und haben über die Installationsanleitung eine andere Version installiert und das gleiche Ergebnis erzielt. Wenn ich die Ausgabedatei direkt und nicht über den Dash Player lade, funktioniert alles, aber nicht das gewünschte Ergebnis.

Wenn es hilft, hier ist der Fehler, den ich im Browser bekomme:

ERROR DOMException: Failed to read the 'buffered' property from 'SourceBuffer': This SourceBuffer has been removed from the parent media source. 

Irgendwelche Ideen, woran das liegen könnte? Wenn ich nicht die richtigen Informationen gebe, lass es mich wissen und ich werde mehr liefern.

BEARBEITEN

Ich habe FFMPEG 4 entfernt und das neueste RPM installiert ffmpeg version 2.6.8und alles funktioniert einwandfrei. Ich möchte das Neueste und Beste verwenden, aber ich denke, ich muss warten.

FFMPEG-BEFEHL

ffmpeg  -i $/temp/master.mkv  -progress $/logs/transcode.log  -s 320x240  -c:v libx264  -b:v 235k  -minrate 235k  -maxrate 235k  -bufsize 470k  -g 120  -keyint_min 120  -sc_threshold 0  -profile:v high  -flags +cgop  -movflags faststart  -preset veryfast  -pix_fmt yuv420p  $/temp/ffmpeg_320_240_235.mp4 &> $/logs/ffmpeg.log 

Bento4-Fragmentbefehl

$/mp4fragment  $/temp/ffmpeg_320_240_235.mp4  $/temp/fragment.mp4 &> $/logs/fragment.log 

Bento4 schneidig

$/mp4dash  --verbose  --debug  -o $ -f  --mpd-name=episode.mpd  --profiles=on-demand  --rename-media  --media-prefix=media  --exec-dir=$  --hls  --hls-master-playlist-name=episode.m3u8  $/temp/fragment.mp4 &> $/segment.log 
0
Downvotes, bitte erläutern, damit ich die Frage verbessern kann. Mike vor 5 Jahren 1
Testen Sie mit dem neuesten Git-Build. Wenn dies fehlschlägt, reichen Sie einen Fehlerbericht bei trac.ffmpeg.org ein Gyan vor 5 Jahren 0
@Gyan - Ich werde es versuchen und dann einen Fehlerbericht übermitteln, wenn Probleme auftreten. Mike vor 5 Jahren 0
Sie geben eigentlich nicht viele Informationen darüber, was Sie gerade tun, wenn Sie "Transcoding" sagen, welche spezifischen Befehle Sie verwenden, wo Sie testen usw. slhck vor 5 Jahren 1
@slhck Ich bin nicht der Grund warum ich den Befehl nicht gepostet habe ... Ich entschuldige mich ... Ich werde es jetzt tun. Was das Transcoding angeht, so bin ich immer noch neu im Bereich Video, also ärgern Sie sich über mich, aber ist das Transcoding nicht nur eine "Konvertierung" von Videocontainern (Demuxing und Muxing) (MKV in MP4)? Ich bin sicher, dass mein Befehl definiert, was meine "Transkodierung" ist. Gibt es einige empfohlene Tests, die ich durchführen kann, abgesehen von dem, was ich in meinem Beitrag erwähnt habe? Wie ich bereits erwähnt habe, bin ich neu bei FFMPEG, daher kann ich mir keine richtigen Tests vorstellen, die ich durchführen kann. Mike vor 5 Jahren 0
Keine Sorge, es ist einfach einfacher, den vollständigen Befehl und die enthaltene ffmpeg-Ausgabe anzuzeigen, um nur einige "falsche Annahmen" oder Missverständnisse auszuschließen. Transkodierung ist leider ein ziemlich vager Begriff. Transmuxing wäre präziser, wenn Sie lediglich den Container ändern. Und mit Dash JS meinen Sie die Referenzimplementierung von `dash.js '? Wenn Sie die Bento4-Befehle anzeigen können, hilft dies auch, um Ihr Problem reproduzieren zu können. Vielleicht werden sie nicht benötigt, und es ist ein Fehler in der neuesten Version, aber wer weiß! slhck vor 5 Jahren 1
Transmuxing macht mehr Sinn ... all diese Begriffe, lol. Ja, mein Endergebnis wird über 'dash.js' oder HLS abgespielt, wenn ein iOS-Gerät erkannt wird. Mein Entwicklungscomputer verwendet FFMPEG Version 3.4, und ich habe keine Probleme mit meinem Prozess. Ich habe FFMPEG ausgemacht, um den MKV auf meiner Arbeitsmaschine zu konvertieren und Bento4 zu verwenden, um den Prozess abzuschließen, und es hat funktioniert. Aus diesem Grund denke ich, dass es sich nicht um Bento4 handelt, sondern um FFMPEG, aber meine Fähigkeiten zur Fehlersuche sind nicht die besten. Ich werde auch die Bento4-Befehle posten. Mike vor 5 Jahren 0

0 Antworten auf die Frage