Was ich machen will; was ich vorhabe zu tun
Ich versuche, mit dem neuesten ffmpeg unter Ubuntu 11.10 ein Video für ein wissenschaftliches Projekt zu schneiden. Ich habe auch Kino und Avidemux ausprobiert, wo das Video nicht einmal richtig geöffnet werden konnte, obwohl es sowohl in VLC als auch in Mplayer gut abgespielt werden konnte.
Mit diesen Parametern bin ich bisher am nächsten gekommen:
ffmpeg -ss 01:58 -t 21 -i row.avi -vcodec copy row_cut.avi
Auch versucht
ffmpeg -ss 1 -i row.avi -vcodec copy -t 3 row_cut.avi
und habe immer noch den gleichen Fehler :(
Dabei erhalte ich als Ausgabe ein mindestens 21 Sekunden langes Video und keine erkennbaren Fehler, aber das Video lässt sich weder im VLC (der Ticker läuft, aber nur das VLC-Logo wird angezeigt) noch im MPlayer („Interner Datenstromfehler“) abspielen.
FFmpeg-Ausgabe beim Kodieren
ffmpeg version git-2012-02-02-c853124 Copyright (c) 2000-2012 the FFmpeg developers
built on Feb 2 2012 23:17:50 with gcc 4.6.1
configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable --libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab
libavutil 51. 37.100 / 51. 37.100
libavcodec 54. 0.102 / 54. 0.102
libavformat 54. 0.100 / 54. 0.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 61.100 / 2. 61.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 6.100 / 0. 6.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, avi, from 'row.avi':
Duration: 00:03:13.93, start: 0.000000, bitrate: 46210 kb/s
Stream #0:0: Video: rawvideo, pal8, 640x300, 30 tbr, 30 tbn, 30 tbc
File 'row_cut.avi' already exists. Overwrite ? [y/N] y
Output #0, avi, to 'row_cut.avi':
Metadata:
ISFT : Lavf54.0.100
Stream #0:0: Video: rawvideo, pal8, 640x300, q=2-31, 30 tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 631 fps=125 q=-1.0 Lsize= 118334kB time=00:00:21.03 bitrate=46088.4kbits/s
video:118312kB audio:0kB global headers:0kB muxing overhead 0.018043%
FFmpeg-Ausgabe beim Laden der Videos
Ich vermute, dass das Video ein seltsames Format hat, die ffmpeg-Parameter falsch verstanden wurden oder vielleicht der Teil Metada:encoder:Lavf53.3.0 in der Ausgabe?
user@computer:/somewhere$ ffmpeg -i row.avi
Input #0, avi, from 'row.avi':
Duration: 00:03:13.93, start: 0.000000, bitrate: 46210 kb/s
Stream #0.0: Video: rawvideo, pal8, 640x300, 30 tbr, 30 tbn, 30 tbc
Und
user@computer:/somewhere$ ffmpeg -i row_cut.avi
Input #0, avi, from 'row_cut.avi':
Metadata:
encoder : Lavf54.0.100
Duration: 00:00:21.03, start: 0.000000, bitrate: 46088 kb/s
Stream #0.0: Video: rawvideo, bgr24, 640x300, 30 tbr, 30 tbn, 30 tbc
Mediainfo-Ausgabe
General
Complete name : row.avi
Format : AVI
Format/Info : Audio Video Interleave
Format profile : OpenDML
File size : 1.04 GiB
Duration : 3mn 13s
Overall bit rate : 46.2 Mbps
Video
ID : 0
Format : RGB
Codec ID : 0x00000000
Codec ID/Info : Basic Windows bitmap format. 1, 4 and 8 bpp versions are palettised. 16, 24 and 32bpp contain raw RGB samples
Duration : 3mn 13s
Bit rate : 46.1 Mbps
Width : 640 pixels
Height : 300 pixels
Display aspect ratio : 2.2:1
Frame rate : 30.000 fps
Bit depth : 8 bits
Bits/(Pixel*Frame) : 8.000
Stream size : 1.04 GiB (100%)
Und
General
Complete name : row_cut.avi
Format : AVI
Format/Info : Audio Video Interleave
File size : 116 MiB
Duration : 21s 33ms
Overall bit rate : 46.1 Mbps
Writing application : Lavf54.0.100
Video
ID : 0
Format : RGB
Codec ID : 0x00000000
Codec ID/Info : Basic Windows bitmap format. 1, 4 and 8 bpp versions are palettised. 16, 24 and 32bpp contain raw RGB samples
Duration : 21s 33ms
Bit rate : 46.1 Mbps
Width : 640 pixels
Height : 4294966 996 pixels
Display aspect ratio : 0.000
Frame rate : 30.000 fps
Bit depth : 8 bits
Stream size : 116 MiB (100%)
Antwort1
Antwort aus der ffmpeg-Mailingliste:
Sie können -vcodec copy nicht auf PAL8-RAW-Video verwenden (das kann ein Fehler sein), aber als Workaround können Sie -vcodec Rawvideo verwenden.
Es funktioniert irgendwie, wenn es in VLC abgespielt wird, aber nicht in mplayer, also wird es für den Moment reichen. Der endgültige funktionierende Befehl wäre
ffmpeg -ss 1 -i row.avi -vcodec rawvideo -t 3 row_cut.avi