PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stück von Video wegschneiden?



Seiten : [1] 2

7.e.Q
25.04.06, 09:48
Hi Leute,

ich nutze mencoder und ffmpeg, um Videos zu konvertieren. Gibt es da eine Möglichkeit, automatisch eine bestimmte Anzahl Millisekunden eines Videos vorn abzuschneiden? Also sowas zum Beispiel, um 20ms am Anfang wegzuschneiden:



ffmpeg -cut-begin 0 -cut-end 20 -i test.avi test-cut.avi


oder so ähnlich? Oder gibt es andere Programme dafür, die sowas können? Keine X-Programme bitte, haben hier nur die Text Konsole.


Danke

Gruß,
Hendrik

buzz768
25.04.06, 10:05
mencoder -oac copy -ovc copy -ss 20 test.avi -o test-cut.avi

Kopiert test.avi abzüglich der (ungefähr) ersten 20 Sekunden. Wie ich der manpage von ffmpeg entnehme, gibt es da auch die Option -ss. Ein reines avi-Schnittprogramm ist avisplit, gehört zu transcode.

PS
Oh, habe überlesen, dass es um Milisekunden geht. Das Video müsste ja mindestens 50 Bilder pro Sekunde haben, damit man 20 ms, also ein Frame, wegschneiden kann...

7.e.Q
25.04.06, 10:38
PS
Das Video müsste ja mindestens 50 Bilder pro Sekunde haben, damit man 20 ms, also ein Frame, wegschneiden kann...

Ja, das frag ich mich auch... mein Chef meint, das muss gehen.

Also hier passiert folgendes:
Zwei Systeme. Eines fängt an mit aufzeichnen, das andere beginnt darauf mit abspielen. Da die Aufzeichnung messbar einige ms früher beginnt, als das Abspielen, kommt es am Anfang der Aufzeichnung unweigerlich zu einem Delay gegenüber dem Original Video.

Und dieses Delay gilt es abzuschneiden. Was aber tun, wenn das Delay nur zum Beispiel 20ms, 10ms, 2ms beträgt, bei einem Video mit 25fps?

quinte17
25.04.06, 11:25
ich frage mich, wie man daten früher abspielen kann, als sie aufgenommen wurden?
was heißt delay? wirklich "warten" bis das viedo ohne fehler abgespielt wird, oder ein verzug des tons?

greetz

7.e.Q
25.04.06, 12:38
Audio ist völlig außen vor. Geht um reine Video-Daten.

Nein, später abspielen, als aufzeichnen:




Aufzeichnung:
|----------------------------------------------------------------|

Wiedergabe:
|-------------------------------------------------------------|

Delay:
|--|



Die Aufzeichnung läuft an, die Wiedergabe startet ein wenig später. In der resultierenden Aufzeichnung soll das Delay am Anfang verschwinden, eine exakte Kopie des Original-Videos zu haben.

undefined
25.04.06, 12:48
Ich glaube die EDL funktion ist das was du suchst.

quinte17
25.04.06, 12:48
Aufzeichnung:
|----------------------------------------------------------------|

Wiedergabe:
|---------------------------------------------------------------| (hier dauert der film dann auch ein wenig länger(

Delay:
|--|

warum nicht sowas?

7.e.Q
25.04.06, 13:11
@quinte: ja, natürlich, sorry... Aber wir haben das halt so, daß die Aufzeichnung so lange läuft, bis die Wiedergabe zuende ist, unabhängig davon, wann sie beginnt. Darum meine Darstellung.

@undefined: EDL? Erklär bitte genauer!

quinte17
25.04.06, 13:21
http://de.wikipedia.org/wiki/Edit_Decision_List zum thema edl, aber viel ist des nicht...

greetz

undefined
25.04.06, 13:58
Das hier ist etwas Ausführlicher http://www.mplayerhq.hu/DOCS/HTML/en/edl.html
EDIT:
http://www.mplayerhq.hu/DOCS/HTML/de/edl.html#edl_using

Henni
25.04.06, 15:46
Natürlich kannst du Teile eines Videos wegschneiden, aber man kann nur Frames abschneiden, keine 'Teilframes'. Somit wenn ein Video 25FPS (PAL) bzw 50FPS (PAL Interlaced) hat, kann man es eben nur 40 bzw. 20ms genau schneiden und genauer braucht man es auch nicht. Denn dein 'Aufnahmegerät' (z.B. eine TV Karte) sorgt für die Frame Synchronisation womit die Unterschiede nur 'ganze' Frames ausmachen kann.

lg, Helmut

7.e.Q
28.04.06, 09:14
Dann muss mir mal jemand erklären, was passiert, wenn die Wiedergabe einen halben Frame nach der Aufzeichnung beginnt.

Ich muss dazu sagen, es handelt sich bei der Wiedergabe um einen Streaming-Server, der ein Video von der Platte streamt, und bei der Aufnahme um einen entsprechenden Client, der die aufgezeichnete Video Daten auf die Platte schreibt.

Henni
28.04.06, 09:42
Dann bekommst du einen Frame der nichts zeigt von der TV Karte und dann erst einen vollen Frame.

Bei dir kann die Aufnahme vom Client erst dann beginnen wenn der Server anfängt zu senden, früher ist es nicht möglich. Dadurch ist dein Problem inexistent. Da hast du eher das Problem, dass die Aufnahme nach der Wiedergabe anfängt. Nicht umgekehrt.

lg, Helmut

JAF
30.04.06, 11:36
das problem ist, dass du in der regel eine avi-datei vor einem keyframe (bei MPEG ist das ein I-Frame) schneiden kannst, sonst wird das video bis zum naechsten keyframe zu muell.

7.e.Q
02.05.06, 12:42
Frage zwischendurch: wie mach ich das mit dem mencoder, daß am Ende "NUR" die rohen Datenpakete in der -o Datei landen? Also völlig ohne Container. Bei H263 z.B. also nur die RTP Payloads.

Henni
02.05.06, 14:00
Man Page Leser wissen mehr:


-dumpvideo (MPlayer only)
Dump raw compressed video stream to ./stream.dump (not very us-
able). If you give more than one of -dumpaudio, -dumpvideo,
-dumpstream on the command line only the last one will work.

7.e.Q
02.05.06, 14:04
RTFM... jojo... hmm... okay, versuch ich mal...


äh, das geht aber wohl nur mit dem mplayer... heißt das, ich müsste das Video vorher mit besagter Commandline encodieren, dann im mplayer abspielen und währenddessen dumpen?

Ein Problem, das dabei wohl entstehen wird ist, daß derer mehrere Prozesse gleichzeitig laufen. Heißt, wenn alle nach stream.dump dumpen, wird da wohl nix brauchbares bei rauskommen...

Teetrinker
02.05.06, 15:15
Frage zwischendurch: wie mach ich das mit dem mencoder, daß am Ende "NUR" die rohen Datenpakete in der -o Datei landen? Also völlig ohne Container. Bei H263 z.B. also nur die RTP Payloads.

Aus der Manpage von MPlayer:


-of rawvideo
raw video stream (no muxing - one video stream only)

Teetrinker
02.05.06, 15:17
Ein Problem, das dabei wohl entstehen wird ist, daß derer mehrere Prozesse gleichzeitig laufen. Heißt, wenn alle nach stream.dump dumpen, wird da wohl nix brauchbares bei rauskommen...

Aus der Manpage von MPlayer:


-dumpfile <filename> (MPlayer only)
Specify which file MPlayer should dump to. Should be used together with
-dumpaudio / -dumpvideo / -dumpstream.

JAF
02.05.06, 15:32
was hast du vor? soweit ich mich erinnerer geht das nicht mit mplayer/mencoder.. bin mir aber nicht sicher, bin nicht mehr aktiv dabei.

du kannst es aber mit -oac copy und -ovc copy in einen avi-container verpacken. (btw. auch einen anderen container)

nur die datenpakete zu speichern waere ja auch fuer einen videoplayer btw. videoencoder kaum eine sinnvolle anwendung.

7.e.Q
03.05.06, 07:43
Was ich vorhabe: ich muss ein AVI File aus dem unkomprimierten 25fps 24bit Video Format in ein proprietäres Datenformat konvertieren, das die Video-Daten im Codec H.263 codiert blockweise als RTP Payloads beinhalten soll. Dazu benötige ich immer eine RTP Payload zur Zeit, die ich als Paket in dieses Dateiformat einpacken kann. Dort käme nur noch ein von uns eigens kreierter Header vor und ab in die Datei damit.

Deswegen brauche ich auch nur die Datenpakete. Allerdings auch irgendwie verwertbar abgegrenzt, damit ich weiß, wo eine Payload aufhört und die nächste beginnt.

Ich brauche also RTP Payloads (H.263 encodiert). Und ich brauche wirklich dringend Informationen dazu, wie man diese erzeugen kann. Ich bin da schon seit Monaten dran und komme einfach nicht weiter... ich bin am verzweifeln!

Kann mir mal einer verraten, wieso bei


bash# mencoder -ovc lavc -lavcopts vbitrate=16 -lavcopts vcodec=h263p foreman.avi -of rawvideo -o foreman.rtp
.
.
.


einige viele Frames am Ende des generierten Videos fehlen (mPlayer kann's abspielen)? Wenn ich denn das


bash# mencoder -ovc raw foreman.rtp -o foreman-new.avi
.
.
.

mache, fehlen die Frames in dem foreman-new.avi immer noch. Was läuft hier schief???

JAF
03.05.06, 09:23
fehlen die frames auch beim abspielen des videos mit mplayer?

du willst also die datei dann auf einem server zum streaming anbieten?
dafuer ist mplayer nicht ausgelegt. es kann dir keine RTP files/stream erzeugen!

Teetrinker
03.05.06, 09:37
Ich brauche also RTP Payloads (H.263 encodiert). Und ich brauche wirklich dringend Informationen dazu, wie man diese erzeugen kann. Ich bin da schon seit Monaten dran und komme einfach nicht weiter... ich bin am verzweifeln!


Vielleicht hilft es dir ja, wenn du einen Blick in die Sourcen von http://gpac.sf.net wirfst und dir anschaust wie MP4Box einen Hint Track für 3gp Dateien mit einem H263 Elemantary Stream erstellt.

Weiter kannst du dir dann ja mal ansehen wie der Darwin Streaming Server dann diesen Hint Track beim Streamen auswertet.

7.e.Q
03.05.06, 09:53
Ouhah, da kommen wieder neue Fremdwörter auf mich zu... Hint Track? 3gp Dateien?

Teetrinker
03.05.06, 10:12
Informationen über 3gp kann man hier finden: http://www.3gpp.org/.
Der Hint Track sagt dem Streaming Server wie er die RTP Pakete zu packen hat.

7.e.Q
03.05.06, 10:32
fehlen die frames auch beim abspielen des videos mit mplayer?

du willst also die datei dann auf einem server zum streaming anbieten?
dafuer ist mplayer nicht ausgelegt. es kann dir keine RTP files/stream erzeugen!

Ja, die Frames fehlen auch beim Abspielen im MPlayer. Sie fehlen auch beim Abspielen mit VLC.

Zur Info:

Die Datei soll nachher über eine von uns entwickelte Software gestreamed werden. Die Gegenstelle ist ebenfalls unsere Software, welche die dann empfangenen Daten wieder in eine unkomprimierte unkodierte AVI Datei verwandeln soll (natürlich MIT den Qualitätsverlusten, die durch die Komprimierung entstehen - daß es nicht möglich ist, diese wieder herauszurechnen, ist mir bewusst).

Es geht im Prinzip darum, ein Übertragungsmedium mit RTP zu testen, bei welcher Bitrate das Medium ab wieviel simulierten Teilnehmern einknickt, also anfängt, Fehler zu fabrizieren. Aus dem übertragenen Video wird ein Qualitätswert berechnet und wir sehen, wie qualitativ hochwertig das zu prüfende Medium mit H.263 kodierten Videos/Streams umgeht.

Dafür benötigen wir nun Video Daten im H.263 Format. Diese Daten müssen für uns als RTP Payloads vorliegen, klar von Payload zu Payload abgegrenzt, damit wir diese als RTP Pakete auch übertragen können. Wir packen da also nur noch einen RTP Header vor die Payload und schicken das ganze per UDP über's Netz, zu unserer ebenfalls selbstentwickelten Gegenstelle.

Diese macht daraus wieder das gewünschte AVI. Original AVI und übertragenes & regeneriertes AVI werden gegeneinander geprüft, Verzögerungen, Fehler, Qualitätsverluste etc. berechnet und so weiter...

Die von uns verschickten RTP Pakete sollen auch kompatibel zu entsprechenden Gegenstellen von Drittherstellern sein (Netmeeting etc.).

Nenn mir bitte einer ein Programm für Linux' Textkonsole, das fähig ist, mir aus einer AVI QCIF Sequenz einen H.263 encodierten RTP Stream erzeugen, und diesen auch auf der Festplatte ablegen kann!

7.e.Q
10.05.06, 12:03
Neuigkeiten? Hilfen? Bitte helfen! :( *bump*

JAF
10.05.06, 21:46
leider nein, mit faellt nix ein, und private personen werden sich wohl kaum mit video streamen per RTP beschaeftigen. vielleicht gibt es so ein programm auch gar nicht (bisher), weil das keiner so benoetigt hat?

das ganz hoert sich auch sehr nach kommerziellen anwendung an, oder?

7.e.Q
10.05.06, 21:51
Ja, ist kommerziell. Stellt das in Bezug auf meine Bitte um Hilfe ein Problem dar?

Es handelt sich dabei um eine kommerzielle Last- und Teilnehmersimulationsumgebung. Video Codec ist nur ein winziger Teil der Anwendungsbereiche des Simulators. Aber eben allein betrachtet trotzdem noch riesen groß...

JAF
10.05.06, 21:58
nein, aber ich denke, dass wenn es eine kommerzielle anwendung ist, heisst das noch lange nicht, dass deshalb die - fuer deinen fall speziellen - anwendungen schon alle existieren muessen oder das sich jetzt die leute dafuer bemuehen um programme nur fuer dich umzuschreiben, wenn es fuer die "allgemeinheit" keinen nutzen hat...

ausserdem, wenn keiner was dazu weisst, wird auch mit "gewalt" keine antwort bekommen ;)