基于FFMPEG的原始视频灰度流
我有一个原始视频文件(testvideo_1000f.raw),我正在尝试使用ffmpeg以灰度流形式传输该文件,并将灰度视频输出到output.swf。我用于执行此操作的命令是:基于FFMPEG的原始视频灰度流,ffmpeg,grayscale,Ffmpeg,Grayscale,我有一个原始视频文件(testvideo_1000f.raw),我正在尝试使用ffmpeg以灰度流形式传输该文件,并将灰度视频输出到output.swf。我用于执行此操作的命令是: ffmpeg/ffmpeg -qmin 2 -qmax 31 -s 320x240 -f rawvideo -flags gray -pix_fmt:output gray -an -i testvideo_1000f.raw output.swf 然而,该命令的结果是灰度级的视频流,但仍然包含一些色度数据。此命令
ffmpeg/ffmpeg -qmin 2 -qmax 31 -s 320x240 -f rawvideo -flags gray -pix_fmt:output gray -an -i testvideo_1000f.raw output.swf
然而,该命令的结果是灰度级的视频流,但仍然包含一些色度数据。此命令的输出粘贴在下面:
3 [volta]/home/student/elliott> ffmpeg/ffmpeg -qmin 2 -qmax 31 -s 320x240 -f rawvideo -flags gray -pix_fmt:output gray -an -i testvideo_1000f.raw output.swf
ffmpeg version N-41632-g2b1fc56 Copyright (c) 2000-2012 the FFmpeg developers
built on Jul 29 2012 10:27:26 with gcc 4.1.2 20080704 (Red Hat 4.1.2-51)
configuration:
libavutil 51. 58.100 / 51. 58.100
libavcodec 54. 25.100 / 54. 25.100
libavformat 54. 6.101 / 54. 6.101
libavdevice 54. 0.100 / 54. 0.100
libavfilter 2. 80.100 / 2. 80.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
*** CHOOSING 8
[rawvideo @ 0xdda9660] Estimating duration from bitrate, this may be inaccurate
Input #0, rawvideo, from 'testvideo_1000f.raw':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (Y800 / 0x30303859), gray, 320x240, 25 tbr, 25 tbn, 25 tbc
File 'output.swf' already exists. Overwrite ? [y/N] y
w:320 h:240 pixfmt:gray tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2
[ffmpeg_buffersink @ 0xddb7b40] No opaque field provided
[format @ 0xddb7d40] auto-inserting filter 'auto-inserted scaler 0' between the filter 'Parsed_null_0' and the filter 'format'
[auto-inserted scaler 0 @ 0xddb7920] w:320 h:240 fmt:gray sar:0/1 -> w:320 h:240 fmt:yuv420p sar:0/1 flags:0x4
*** CHOOSING 8
Output #0, swf, to 'output.swf':
Metadata:
encoder : Lavf54.6.101
Stream #0:0: Video: flv1, yuv420p, 320x240, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo -> flv)
Press [q] to stop, [?] for help
Truncating packet of size 76800 to 1 2875kB time=00:00:40.84 bitrate= 576.7kbits/s
frame= 1500 fps=1035 q=24.8 Lsize= 4194kB time=00:01:00.00 bitrate= 572.6kbits/s
video:4166kB audio:0kB global headers:0kB muxing overhead 0.669245%
我对FFMPEG相当陌生,恐怕我在命令行中使用了错误的语法或参数。出于某种原因,输出的格式是yuv420p。我试着到处寻找这个答案,但没有成功。谁能帮我一下,告诉我为什么在我发出8位灰度的命令时,输出是用yuv420p格式化的?任何帮助都将不胜感激。多谢各位
Marc Elliott没有ffmpeg标志允许您执行此操作 视频格式是为YUV设计的,而不仅仅是为Y设计的。因此,如果不修改您的方法,您将无法做到这一点。您将不得不使用mjpeg来获得Y-only流。Mjpeg支持8位输出,但我不认为Mjpeg可以放在swf中。它可以进入mp4或ts,如果这足以满足您的目的
当然,另一个选项是解码/显示侧仅解码/显示亮度而非色度。同样,这是一个自定义要求,不直接支持。