ffmpeg: Ton mit HTML5-Player synchron, sonst nicht

ragan62

Lieutenant
Registriert
Jan. 2019
Beiträge
569
Hallo, folgende Sache.

Ich speichere Aufnahmen vom Sat-Receiver auf meinem NAS/Server mit Debian 9.
Die Dateien liegen als .TS-Dateien mit h264/ac3 vor.

Damit sich andere die Aufnahmen im Webbrowser ansehen können, wandeln sie die Aufnahmen nach Bedarf
mit ffmpeg in .mp4-Dateien um, die dann per HTML5-Player gestreamt werden.

Das Kommando lautet dabei: ffmpeg -y -i input.ts -c:v copy -c:a aac output.mp4

<?php
sleep(5);
if(isset($_GET["id"])) $alt = $_GET["id"];
$path_parts = pathinfo("$alt");
$dateiname = $path_parts['filename'];
$neu = "/MP4/$dateiname.mp4";
$alt = escapeshellarg($alt);
$neu = escapeshellarg($neu);
exec("ffmpeg -y -i $alt -c:v copy -c:a aac $neu > /dev/null & echo $!", $output);
?>

Ich hatte mir gedacht: Wandel alle .ts in .mp4 und das Umwandeln auf dem Server entfällt.
War wohl nichts: Bei ALLEN anderen Abspielern (auch VLC) ist der Ton ca. 1 Sekunde asynchron.

Die Fragen:
1. Wo liegt mein Fehler? (wenn´s mein Fehler ist)
2. Wie geht dann Richtig?

Danke, ragan62
 
Ok
mach ich mal.
Ergänzung ()

Leider immer noch asynchron, ausser beim HTML5.
Scheint aber nur noch 0,5 Sekunden zu sein, kann mich aber auch täuschen.

ragan62
 
Zuletzt bearbeitet:
Laut dieser Seite müsste -af "aresample=async=1:min_hard_comp=0.100000:first_pts=0" für synchonen Ton sorgen. Insbesondere der first_pts Teil, wenn ich das richtig verstehe. Ansonsten, sind meine Google-Skills aber auch am Ende.
 
Danke @Simon#G,

selbstverständlich habe ich selbst erstmal ausgiebig gesucht
aber auch nichts gefunden.

Das gehört sich so, bevor man ein Forum "bemüht".

ragan62
 
Wenn es immer um den gleichen Wert asynchron ist, dann könntest du -itsoffset nutzen.

Bei einer Sekunde würde es dann so aussehen:
Code:
ffmpeg -i input.ts -itsoffset 1.0 -i input.ts -c:v copy -c:a aac -map 0:0 -map 1:1 output.mp4

Was mich mal interessieren würde: Tritt das Problem eigentlich auch auf wenn du statt mp4 mkv nutzen würdest?
 
Matzegr schrieb:
Was mich mal interessieren würde: Tritt das Problem eigentlich auch auf wenn du statt mp4 mkv nutzen würdest?

MKV nie getestet.
Ich check erstmal deinen Code;)
 
@Matzegr
funktioniert mit Feintuning.
Aber:
1. Kodieren dauert 150 Minuten für 45 Minuten Serienfolge. (.ts zu .mp4 ohne sync etwa 4 Minuten)
2. Jetzt ist HTML5-Player asynchron. (wie erwartet)

Habe aber von euch frischen Input erhalten.:)

Da scheint sich ein Workaround abzuzeichnen.
 
Zurück
Oben