我想做的事
我正在尝试使用最新的 ffmpeg 在 Ubuntu 11.10 下剪辑一个科学项目的视频,我也尝试了 Kino 和 avidemux,但视频甚至无法正常打开,尽管它在 VLC 和 mplayer 上播放得很好。
到目前为止我最接近的是这些参数:
ffmpeg -ss 01:58 -t 21 -i row.avi -vcodec copy row_cut.avi
也尝试过
ffmpeg -ss 1 -i row.avi -vcodec copy -t 3 row_cut.avi
并且仍然有同样的错误:(
我得到了至少 21 秒的视频作为输出,并且没有明显的错误,但视频无法在 VLC(滚动但只显示 VLC 徽标)或 mplayer(“内部数据流错误”)中播放。
编码时 FFmpeg 输出
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 输出
我的猜测是视频有某种奇怪的格式,误解了 ffmpeg 的参数或者输出中的 Metada:encoder:Lavf53.3.0 部分?
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
和
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 输出
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%)
和
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%)
答案1
来自 ffmpeg 邮件列表的回答:
您不能在 pal8 rawvideo 上使用 -vcodec copy(这可能是一个错误),但您可以使用 -vcodec rawvideo 作为解决方法。
它在 VLC 中可以播放,但在 mplayer 中不行,所以现在就这样了。最终的工作命令是
ffmpeg -ss 1 -i row.avi -vcodec rawvideo -t 3 row_cut.avi