Leiten Sie die Ausgabe von ffmpeg / avconv über ssh in eine Datei

1

Ich mag die Ausgabe von ffmpeg / avconv über ssh in eine Datei umleiten. Ich würde gerne so etwas machen.

ssh USER_NAME@SERVER_IP "avconv -i "http://svtplay20k-f.akamaihd.net/i/se/open/20141013/1368164-001A/EPISOD-1368164-001A-c49ff75135a27611_,144,252,360,468,892,1584,2700,.mp4.csmil/index_6_av.m3u8?null=" -acodec copy -vcodec copy -bsf aac_adtstoasc -f mp4 pipe:1" | cat > pipeOutput.mp4

Ich habe es oben versucht aber bekommen Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted

Ich habe versucht zu wechseln -f avi und pipeOutput.avi. Das gab mir eine sehr große, aber nicht funktionierende Datei.

Irgendwelche Vorschläge, was ich falsch mache?

g3blv
quelle

Antworten:

1

Damit ffmpeg in eine MP4-Datei schreibt, muss die Ausgabe suchbar sein (um die erforderlichen MP4-Atome zu erstellen). MP4 ist jedoch kein streambarer Container. Dies bedeutet, dass Sie keine "rohen" MP4-Daten über eine SSH-Verbindung oder nur eine normale Unix-Pipe leiten können.

Sie könnten Matroska als Format verwenden:

ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -f matroska pipe:1" | cat > out.mkv

Oder verwenden Sie MPEG-2-Transportströme, für die jedoch eine Filterung des MP4-Bitstroms in einen H.264 Annex B-Bytestream erforderlich ist, der paketiert werden kann:

ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -bsf:v h264_mp4toannexb -f mpegts pipe:1" | cat > out.ts

Hinweis: Ich habe verwendet ffmpeg hier kann ich da nicht testen avconv.

slhck
quelle
Danke für deine Antwort. Ich habe beide Ansätze ausprobiert. Die erste (MKV) funktionierte ohne Probleme. Die zweite (MPEG-2) gab eine Fehlermeldung. h264_mp4toannexb failed for stream 0, codec copy: Invalid argument. Vielleicht ist es das Ergebnis der Verwendung avconv.
g3blv
Hm. In dem avconv Handbuch Es ist als Beispiel aufgeführt, daher weiß ich nicht, was genau schief geht. Aber ich benutze kein avconv ... :)
slhck