需要JavaCV FFmpegFrameRecorder属性说明 [英] JavaCV FFmpegFrameRecorder properties explanation needed

查看:10083
本文介绍了需要JavaCV FFmpegFrameRecorder属性说明的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 FFmpegFrameRecorder 从我的网络摄像头获取视频输入并将其记录到视频文件中。问题是我使用我发现的几个不同的演示源代码来构建我的应用程序,我使用的属性有些不完全清楚。



,这里是我的代码片段:

  FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(FILENAME,grabber.getImageWidth(),grabber.getImageHeight() ); 

recorder.setVideoCodec(13);
recorder.setFormat(mp4);
recorder.setPixelFormat(avutil.PIX_FMT_YUV420P);
recorder.setFrameRate(30);
recorder.setVideoBitrate(10 * 1024 * 1024);

recorder.start();




  • setVideoCodec(13) - 什么是这个(13)的含义如何理解什么实际的编解码器背后任何数字?

  • setPixelFormat - 只是得到这个,不知道它在做什么一般

  • setFrameRate(30) - 我认为这应该是很清楚,但仍然是什么逻辑背后我们选择什么帧速率(不是越高越好?)

  • setVideoBitrate(10 * 1024 * 1024) - 再次几乎不知道这是什么是否和数字背后的逻辑是什么?



最后我只想提到一个最后一个问题,我会录制这样的视频。如果视频的实际长度是20秒。当我播放从程序创建的视频文件时,运行速度明显更快。不能确定它是否比应该快两倍,但一般来说,如果我录制一个20秒的视频,那么它的播放约10秒。什么可能导致这个,如何解决?

解决方案

VideoCodec 可以从此列表中选择在 avcodec.h中找到 / avcodec.java (可以看到,13号得到我们的MPEG4,那里是其他人,但FFmpeg没有所有编码器):

  AV_CODEC_ID_MPEG1VIDEO = 1,
/ ** MPEG-1/2视频解码的首选ID * /
AV_CODEC_ID_MPEG2VIDEO = 2,
AV_CODEC_ID_MPEG2VIDEO_XVMC = 3,
AV_CODEC_ID_H261 = 4,
AV_CODEC_ID_H263 = 5,
AV_CODEC_ID_RV10 = 6,
AV_CODEC_ID_RV20 = 7,
AV_CODEC_ID_MJPEG = 8,
AV_CODEC_ID_MJPEGB = 9,
AV_CODEC_ID_LJPEG = 10,
AV_CODEC_ID_SP5X = 11,
AV_CODEC_ID_JPEGLS = 12,
AV_CODEC_ID_MPEG4 = 13,
AV_CODEC_ID_RAWVIDEO = 14,
AV_CODEC_ID_MSMPEG4V1 = 15,
AV_CODEC_ID_MSMPEG4V2 = 16,
AV_CODEC_ID_MSMPEG4V3 = 17,
AV_CODEC_ID_WMV1 = 18,
AV_CODEC_ID_WMV2 = 19,
AV_CODEC_ID_H263P = 20,
AV_CODEC_ID_H263I = 21,
AV_CODEC_ID_FLV1 = 22,
AV_CODEC_ID_SVQ1 = 23,
AV_CODEC_ID_SVQ3 = 24,
AV_CODEC_ID_DVVIDEO = 25,
AV_CODEC_ID_HUFFYUV = 26,
AV_CODEC_ID_CYUV = 27,
AV_CODEC_ID_H264 = 28,
AV_CODEC_ID_INDEO3 = 29,
AV_CODEC_ID_VP3 = 30,
AV_CODEC_ID_THEORA = 31,
AV_CODEC_ID_ASV1 = 32,
AV_CODEC_ID_ASV2 = 33,
AV_CODEC_ID_FFV1 = 34,
AV_CODEC_ID_4XM = 35,
AV_CODEC_ID_VCR1 = 36,
AV_CODEC_ID_CLJR = 37,
AV_CODEC_ID_MDEC = 38,
AV_CODEC_ID_ROQ = 39,
AV_CODEC_ID_INTERPLAY_VIDEO = 40,
AV_CODEC_ID_XAN_WC3 = 41,
AV_CODEC_ID_XAN_WC4 = 42,
AV_CODEC_ID_RPZA = 43,
AV_CODEC_ID_CINEPAK = 44,
AV_CODEC_ID_WS_VQA = 45,
AV_CODEC_ID_MSRLE = 46,
AV_CODEC_ID_MSVIDEO1 = 47,
AV_CODEC_ID_IDCIN = 48,
AV_CODEC_ID_8BPS = 49,
AV_CODEC_ID_SMC = 50,
AV_CODEC_ID_FLIC = 51,
AV_CODEC_ID_TRUEMOTION1 = 52,
AV_CODEC_ID_VMDVIDEO = 53,
AV_CODEC_ID_MSZH = 54,
AV_CODEC_ID_ZLIB = 55,
AV_CODEC_ID_QTRLE = 56,
AV_CODEC_ID_TSCC = 57,
AV_CODEC_ID_ULTI = 58,
AV_CODEC_ID_QDRAW = 59,
AV_CODEC_ID_VIXL = 60,
AV_CODEC_ID_QPEG = 61,
AV_CODEC_ID_PNG = 62,
AV_CODEC_ID_PPM = 63,
AV_CODEC_ID_PBM = 64,
AV_CODEC_ID_PGM = 65,
AV_CODEC_ID_PGMYUV = 66,
AV_CODEC_ID_PAM = 67,
AV_CODEC_ID_FFVHUFF = 68,
AV_CODEC_ID_RV30 = 69,
AV_CODEC_ID_RV40 = 70,
AV_CODEC_ID_VC1 = 71,
AV_CODEC_ID_WMV3 = 72,
AV_CODEC_ID_LOCO = 73,
AV_CODEC_ID_WNV1 = 74,
AV_CODEC_ID_AASC = 75,
AV_CODEC_ID_INDEO2 = 76,
AV_CODEC_ID_FRAPS = 77,
AV_CODEC_ID_TRUEMOTION2 = 78,
AV_CODEC_ID_BMP = 79,
AV_CODEC_ID_CSCD = 80,
AV_CODEC_ID_MMVIDEO = 81,
AV_CODEC_ID_ZMBV = 82,
AV_CODEC_ID_AVS = 83,
AV_CODEC_ID_SMACKVIDEO =
AV_CODEC_ID_NUV = 85,
AV_CODEC_ID_KMVC = 86,
AV_CODEC_ID_FLASHSV = 87,
AV_CODEC_ID_CAVS = 88,
AV_CODEC_ID_JPEG2000 = 89,
AV_CODEC_ID_VMNC = 90,
AV_CODEC_ID_VP5 = 91,
AV_CODEC_ID_VP6 = 92,
AV_CODEC_ID_VP6F = 93,
AV_CODEC_ID_TARGA = 94,
AV_CODEC_ID_DSICINVIDEO = 95,
AV_CODEC_ID_TIERTEXSEQVIDEO = 96,
AV_CODEC_ID_TIFF = 97,
AV_CODEC_ID_GIF = 98,
AV_CODEC_ID_DXA = 99,
AV_CODEC_ID_DNXHD = 100,
AV_CODEC_ID_THP = 101,
AV_CODEC_ID_SGI = 102,
AV_CODEC_ID_C93 = 103,
AV_CODEC_ID_BETHSOFTVID = 104,
AV_CODEC_ID_PTX = 105,
AV_CODEC_ID_TXD = 106,
AV_CODEC_ID_VP6A = 107,
AV_CODEC_ID_AMV = 1 08,
AV_CODEC_ID_VB = 109,
AV_CODEC_ID_PCX = 110,
AV_CODEC_ID_SUNRAST = 111,
AV_CODEC_ID_INDEO4 = 112,
AV_CODEC_ID_INDEO5 = 113,
AV_CODEC_ID_MIMIC =
AV_CODEC_ID_RL2 = 115,
AV_CODEC_ID_ESCAPE124 = 116,
AV_CODEC_ID_DIRAC = 117,
AV_CODEC_ID_BFI = 118,
AV_CODEC_ID_CMV = 119,
AV_CODEC_ID_MOTIONPIXELS = 120,
AV_CODEC_ID_TGV = 121,
AV_CODEC_ID_TGQ = 122,
AV_CODEC_ID_TQI = 123,
AV_CODEC_ID_AURA = 124,
AV_CODEC_ID_AURA2 = 125,
AV_CODEC_ID_V210X = 126,
AV_CODEC_ID_TMV = 127,
AV_CODEC_ID_V210 = 128,
AV_CODEC_ID_DPX = 129,
AV_CODEC_ID_MAD = 130,
AV_CODEC_ID_FRWU = 131,
AV_CODEC_ID_FLASHSV2 = 132,
AV_CODEC_ID_CDGRAPHICS = 133,
AV_CODEC_ID_R210 = 134,
AV_CODEC_ID_ANM = 135,
AV_CODEC_ID_BINKVIDEO = 136,
AV_CODEC_ID_IFF_ILBM = 137,
AV_CODEC_ID_IFF_BYTERUN1 = 138,
AV_CODEC_ID_KGV1 = 139,
AV_CODEC_ID_YOP = 140,
AV_CODEC_ID_VP8 = 141,
AV_CODEC_ID_PICTOR = 142,
AV_CODEC_ID_ANSI = 143,
AV_CODEC_ID_A64_MULTI = 144,
AV_CODEC_ID_A64_MULTI5 = 145,
AV_CODEC_ID_R10K = 146,
AV_CODEC_ID_MXPEG = 147,
AV_CODEC_ID_LAGARITH = 148,
AV_CODEC_ID_PRORES = 149,
AV_CODEC_ID_JV =
AV_CODEC_ID_DFA = 151,
AV_CODEC_ID_WMV3IMAGE = 152,
AV_CODEC_ID_VC1IMAGE = 153,
AV_CODEC_ID_UTVIDEO = 154,
AV_CODEC_ID_BMV_VIDEO = 155,
AV_CODEC_ID_VBLE = 156,
AV_CODEC_ID_DXTORY = 157,
AV_CODEC_ID_V410 = 158,
AV_CODEC_ID_XWD = 159,
AV_CODEC_ID_CDXL = 160,
AV_CODEC_ID_XBM = 161,
AV_CODEC_ID_ZEROCODEC = 162,
AV_CODEC_ID_MSS1 = 163,
AV_CODEC_ID_MSA1 = 164,
AV_CODEC_ID_TSCC2 = 165,
AV_CODEC_ID_MTS2 = 166,
AV_CODEC_ID_CLLC = 167,
AV_CODEC_ID_MSS2 = 168,
AV_CODEC_ID_VP9 = 169,
AV_CODEC_ID_AIC = 170,
// etc

PixelFormat 可以从 pixfmt.h / avutil.java ,但每个编解码器只支持其中的几个(大多数支持至少 AV_PIX_FMT_YUV420P ):

  / **平面YUV 4:2:0,12bpp,(1 Cr&每2×2个样本的Cb样本)* / 
AV_PIX_FMT_YUV420P = 0,
/ **打包YUV 4:2:2,16bpp,Y0 Cb Y1 Cr * /
AV_PIX_FMT_YUYV422 = 1,
/ **打包RGB 8:8:8,24bpp,RGBRGB ... * /
AV_PIX_FMT_RGB24 = 2,
/ **打包RGB 8:8:8,24bpp,BGRBGR ... * /
AV_PIX_FMT_BGR24 = 3,
/ **平面YUV 4:2:2,16bpp,(每2×1个样本1 Cr& Cb样本)* /
AV_PIX_FMT_YUV422P = 4,
/ **平面YUV 4:4:4,24bpp,(每1×1个样本1个Cr& Cb样本)* /
AV_PIX_FMT_YUV444P = 5,
/ **平面YUV 4:1 :0,9bpp,(每4x4Y样品1 Cr& Cb样品)* /
AV_PIX_FMT_YUV410P = 6,
/ **平面YUV 4:1:1,12bpp,(1 Cr& Cb每4x1 Y样本的样本)* /
AV_PIX_FMT_YUV411P = 7,
/ ** Y,8bpp * /
AV_PIX_FMT_GRAY8 = 8,
/ ** Y,1bpp,0为白色,1是黑色的,每个字节的像素都是从msb到lsb * /
的顺序AV_PIX_FMT_MONOWHITE = 9 ,
/ ** Y,1bpp,0为黑色,1为白色,每个字节中的像素从msb排序到lsb * /
AV_PIX_FMT_MONOBLACK = 10,
/ ** 8使用PIX_FMT_RGB32调色板* /
AV_PIX_FMT_PAL8 = 11,
/ **平面YUV 4:2:0,12bpp,满刻度(JPEG),弃用PIX_FMT_YUV420P并设置color_range * /
AV_PIX_FMT_YUVJ420P = 12,
/ **平面YUV 4:2:2,16bpp,满量程(JPEG),弃用PIX_FMT_YUV422P并设置color_range * /
AV_PIX_FMT_YUVJ422P = 13,
/ **平面YUV 4:4:4,24bpp,满量程(JPEG),不利于PIX_FMT_YUV444P并设置color_range * /
AV_PIX_FMT_YUVJ444P = 14,
/ **通过公共数据包的XVideo运动加速通过* /
AV_PIX_FMT_XVMC_MPEG2_MC = 15,
AV_PIX_FMT_XVMC_MPEG2_IDCT = 16;
/ **打包YUV 4:2:2,16bpp,Cb Y0 Cr Y1 * /
AV_PIX_FMT_UYVY422 = 17,
/ **打包YUV 4:1:1,12bpp,Cb Y0 Y1 Cr Y2 Y3 * /
AV_PIX_FMT_UYYVYY411 = 18,
/ **打包RGB 3:3:2,8bpp,(msb)2B 3G 3R(lsb)* /
AV_PIX_FMT_BGR8 =
/ **打包RGB 1:2:1比特流,4bpp,(msb)1B 2G 1R(lsb),一个字节包含两个像素,字节中的第一个像素是4 msb位* /
AV_PIX_FMT_BGR4 = 20,
/ **打包RGB 1:2:1,8bpp,(msb)1B 2G 1R(lsb)* /
AV_PIX_FMT_BGR4_BYTE = 21,
/ **打包RGB 3:3:2,8bpp,(msb)2R 3G 3B(lsb)* /
AV_PIX_FMT_RGB8 = 22,
/ **打包RGB 1:2:1比特流,4bpp,( msb)1R 2G 1B(lsb),一个字节包含两个像素,字节中的第一个像素是由4 msb位组成的一个* /
AV_PIX_FMT_RGB4 = 23,
/ **打包RGB 1 :2:1,8bpp,(msb)1R 2G 1B(lsb)* /
AV_PIX_FMT_RGB4_BYTE = 24,
/ **平面YUV 4:2:0,12bpp,1和1个交织的平面(第一个字节U和随后的字节V)* /
AV_PIX_FMT_NV12 = 25,
/ **如上所述,但U和V字节被交换* /
AV_PIX_FMT_NV21 = 26,

/ **打包ARGB 8:8:8:8,32bpp,ARGBARGB ... * /
AV_PIX_FMT_ARGB = 27,
/ **包装RGBA 8:8:8:8,3bpp,RGBARGBA ... * /
AV_PIX_FMT_RGBA = 28,
/ **打包ABGR 8:8:8:8,332pp,ABGRABGR .. 。* /
AV_PIX_FMT_ABGR = 29,
/ **包装BGRA 8:8:8:8,32bpp,BGRABGRA ... * /
AV_PIX_FMT_BGRA = 30,

/ ** Y,16bpp,big-endian * /
AV_PIX_FMT_GRAY16BE = 31,
/ ** Y,16bpp,little-endian * /
AV_PIX_FMT_GRAY16LE = 32,
/ **平面YUV 4:4:0(1 Cr&每个1x2 Y样本的Cb样本)* /
AV_PIX_FMT_YUV440P = 33,
/ **平面YUV 4:4:0满量程(JPEG),弃用PIX_FMT_YUV440P并设置color_range * /
AV_PIX_FMT_YUVJ440P = 34,
/ **平面YUV 4:2:0,20bpp,(每2X& A样本1 Cr& Cb样本)* /
AV_PIX_FMT_YUVA420P = 35,
/ **使用VDPAU的H.264硬件解码,数据[0]包含一个vdpau_render_state结构,其中包含片段的比特流以及从头部提取的各种字段* /
AV_PIX_FMT_VDPAU_H264 = 36,
/ **使用VDPAU的MPEG-1硬件解码,数据[0]包含一个vdpau_render_state结构,其中包含片段的比特流以及从标题中提取的各种字段* /
AV_PIX_FMT_VDPAU_MPEG1 = 37,
/ **使用VDPAU的MPEG-2硬件解码,数据[0]包含一个vdpau_render_state结构,其中包含片段的比特流以及从头部提取的各种字段* /
AV_PIX_FMT_VDPAU_MPEG2 = 38,
/ **使用VDPAU的WMV3硬件解码,数据[0]包含一个包含片段的比特流的vdpau_render_state结构以及从头提取的各种字段* /
AV_PIX_FMT_VDPAU_WMV3 = 39,
/ **使用VDPAU的VC-1 HW解码,数据[0]包含一个vdpau_render_state结构,其中包含片段的比特流以及从标题中提取的各种字段* /
AV_PIX_FMT_VDPAU_VC1 = 40,
/ **打包RGB 16:16:16,48bpp,16R,16G,16B,每个R / G / B组件的2字节值存储为big-endian * /
AV_PIX_FMT_RGB48BE = 41,
/ **打包RGB 16:16:16,48bpp,16R,16G,16B,每个R / G / B组件的2字节值存储为小尾数* /
AV_PIX_FMT_RGB48LE = 42,

/ **打包RGB 5:6:5,16bpp,(msb)5R 6G 5B(lsb),big-endian * /
AV_PIX_FMT_RGB565BE = 43,
/ * *包装RGB 5:6:5,16bpp,(msb)5R 6G 5B(lsb),little-endian * /
AV_PIX_FMT_RGB565LE = 44,
/ **打包RGB 5:5:5,16bpp,(msb)1A 5R 5G 5B(lsb),大端,最高有效位为0 * /
AV_PIX_FMT_RGB555BE = 45,
/ **包装RGB 5:5:5,16bpp,(msb)1A 5R 5G 5B(lsb),小端,最高有效位为0 * /
AV_PIX_FMT_RGB555LE = 46,

/ * *包装BGR 5:6:5,16bpp,(msb)5B 6G 5R(lsb),big-endian * /
AV_PIX_FMT_BGR565BE = 47,
/ **打包BGR 5:6:5,16bpp ,(msb)5B 6G 5R(lsb),little-endian * /
AV_PIX_FMT_BGR565LE = 48,
/ **打包BGR 5:5:5,16bpp,(msb)1A 5B 5G 5R(lsb ),big-endian,最高有效位到1 * /
AV_PIX_FMT_BGR555BE = 49,
/ **打包BGR 5:5:5,16bpp,(msb)1A 5B 5G 5R(lsb) -endian,最高有效位到1 * /
AV_PIX_FMT_BGR555LE = 50,

/ **通过VA API在运动补偿入口处的HW加速,Picture.data [3]包含一个vaapi_render_state struct包含宏块以及从头文件* /
提取的各种字段AV_PIX_FMT_VAAPI_MOCO = 51,
/ **通过IDC入口点的VA API加速硬件,Picture.data [3]包含一个vaapi_render_state结构,其中包含从头部提取的字段* /
AV_PIX_FMT_VAAPI_IDCT = 52,
/ **通过VA API进行HW解码,Picture.data [3]包含一个vaapi_render_state结构,其中包含片段的比特流以及从标题中提取的各种字段* /
AV_PIX_FMT_VAAPI_VLD = 53,

/ **平面YUV 4:2:0,24bpp,(1 Cr&每个2x2 Y样本的Cb样本),little-endian * /
AV_PIX_FMT_YUV420P16LE = 54,
/ **平面YUV 4:2:0,248pp,(每2×2个样本1 Cr& Cb样本) ,big-endian * /
AV_PIX_FMT_YUV420P16BE = 55,
/ **平面YUV 4:2:2,32bpp,(每2×1个样本1 Cr& Cb样本),little-endian * /
AV_PIX_FMT_YUV422P16LE = 56,
/ **平面YUV 4:2:2,32bpp,(每2×1个样本1 Cr& Cb样本),big-endian * /
AV_PIX_FMT_YUV422P16BE =
/ **平面YUV 4:4:4,48bpp,(每1×1个样本1 Cr& Cb样本),小尾数* /
AV_PIX_FMT_YUV444P16LE = 58,
/ **平面YUV 4:4:4,48bpp,(每1×1个样品1 Cr& Cb样品),big-endian * /
AV_PIX_FMT_YUV444P16BE = 59,
/ **使用VDPAU的MPEG4硬件解码,数据[0]包含一个vdpau_render_state结构,其中包含片段的比特流以及从头部提取的各种字段* /
AV_PIX_FMT_VDPAU_MPEG4 = 60,
/ **硬解码thr哦DXVA2,Picture.data [3]包含一个LPDIRECT3DSURFACE9指针* /
AV_PIX_FMT_DXVA2_VLD = 61,

/ **打包RGB 4:4:4,16bpp,(msb)4A 4R 4G 4B(lsb),小端,最高有效位为0 * /
AV_PIX_FMT_RGB444LE = 62,
/ **打包RGB 4:4:4,16bpp,(msb)4A 4R 4G 4B(lsb ),big-endian,最高有效位为0 * /
AV_PIX_FMT_RGB444BE = 63,
/ **打包BGR 4:4:4,16bpp,(msb)4A 4B 4G 4R(lsb) -endian,最高有效位为1 * /
AV_PIX_FMT_BGR444LE = 64,
/ **打包BGR 4:4:4,16bpp,(msb)4A 4B 4G 4R(lsb),big-endian,最高有效位为1 * /
AV_PIX_FMT_BGR444BE = 65,
/ ** 8位灰色,8位alpha * /
AV_PIX_FMT_YA8 = 66,
// etc

FrameRate 表示视频应播放的每秒帧数(没有什么可以尽管它提供了一个bas,但是您可以使用实际记录的图像的数量或时间用于编码比特率)。所以,在30 FPS的情况下,要覆盖20秒的视频,您需要调用 record() 30 * 20 = 600次。如果您没有拨打电话 record() 600次,那么这是您问题的原因。



VideoBitrate 提供视频流应在其上进行编码的视频比特率(以每秒位数表示)。维基百科有关于这个的好文章


I'm using FFmpegFrameRecorder to get the video input from my webcam and record it into a video file. The problem is that I'm building my application using a few different demo source codes that I found and I use properties some of which are not completely clear to me.

First, here is my code snippet :

FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(FILENAME,  grabber.getImageWidth(),grabber.getImageHeight());

        recorder.setVideoCodec(13);
        recorder.setFormat("mp4");
        recorder.setPixelFormat(avutil.PIX_FMT_YUV420P);
        recorder.setFrameRate(30);
        recorder.setVideoBitrate(10 * 1024 * 1024);

        recorder.start();

  • setVideoCodec(13) - What is the meaning of this (13) how can I understand what actual codec stands behind any number?
  • setPixelFormat - Just get this, don't know what it's doing in general
  • setFrameRate(30) - I think this should be pretty clear but still what is the logic behind what frame rate we choose (isn't the high the better?)
  • setVideoBitrate(10*1024*1024) - again almost no idea what this does and what's the logic behind the numbers?

At the end I just want to mention one last problem that I get recording video like this. If the actual length of the video is let's say 20secs. When I play the video file created from the program it runs significantly faster. Can't tell if it's exactly 2 times faster than it should be but in general if I record a 20sec video then it's played for about 10secs. What may cause this and how can I fix it?

解决方案

VideoCodec can be chosen from this list found in avcodec.h/avcodec.java (As you can see, the number 13 gets us MPEG4, and there are others, but FFmpeg doesn't have an encoder for all of them):

    AV_CODEC_ID_MPEG1VIDEO = 1,
    /** preferred ID for MPEG-1/2 video decoding */
    AV_CODEC_ID_MPEG2VIDEO = 2,
    AV_CODEC_ID_MPEG2VIDEO_XVMC = 3,
    AV_CODEC_ID_H261 = 4,
    AV_CODEC_ID_H263 = 5,
    AV_CODEC_ID_RV10 = 6,
    AV_CODEC_ID_RV20 = 7,
    AV_CODEC_ID_MJPEG = 8,
    AV_CODEC_ID_MJPEGB = 9,
    AV_CODEC_ID_LJPEG = 10,
    AV_CODEC_ID_SP5X = 11,
    AV_CODEC_ID_JPEGLS = 12,
    AV_CODEC_ID_MPEG4 = 13,
    AV_CODEC_ID_RAWVIDEO = 14,
    AV_CODEC_ID_MSMPEG4V1 = 15,
    AV_CODEC_ID_MSMPEG4V2 = 16,
    AV_CODEC_ID_MSMPEG4V3 = 17,
    AV_CODEC_ID_WMV1 = 18,
    AV_CODEC_ID_WMV2 = 19,
    AV_CODEC_ID_H263P = 20,
    AV_CODEC_ID_H263I = 21,
    AV_CODEC_ID_FLV1 = 22,
    AV_CODEC_ID_SVQ1 = 23,
    AV_CODEC_ID_SVQ3 = 24,
    AV_CODEC_ID_DVVIDEO = 25,
    AV_CODEC_ID_HUFFYUV = 26,
    AV_CODEC_ID_CYUV = 27,
    AV_CODEC_ID_H264 = 28,
    AV_CODEC_ID_INDEO3 = 29,
    AV_CODEC_ID_VP3 = 30,
    AV_CODEC_ID_THEORA = 31,
    AV_CODEC_ID_ASV1 = 32,
    AV_CODEC_ID_ASV2 = 33,
    AV_CODEC_ID_FFV1 = 34,
    AV_CODEC_ID_4XM = 35,
    AV_CODEC_ID_VCR1 = 36,
    AV_CODEC_ID_CLJR = 37,
    AV_CODEC_ID_MDEC = 38,
    AV_CODEC_ID_ROQ = 39,
    AV_CODEC_ID_INTERPLAY_VIDEO = 40,
    AV_CODEC_ID_XAN_WC3 = 41,
    AV_CODEC_ID_XAN_WC4 = 42,
    AV_CODEC_ID_RPZA = 43,
    AV_CODEC_ID_CINEPAK = 44,
    AV_CODEC_ID_WS_VQA = 45,
    AV_CODEC_ID_MSRLE = 46,
    AV_CODEC_ID_MSVIDEO1 = 47,
    AV_CODEC_ID_IDCIN = 48,
    AV_CODEC_ID_8BPS = 49,
    AV_CODEC_ID_SMC = 50,
    AV_CODEC_ID_FLIC = 51,
    AV_CODEC_ID_TRUEMOTION1 = 52,
    AV_CODEC_ID_VMDVIDEO = 53,
    AV_CODEC_ID_MSZH = 54,
    AV_CODEC_ID_ZLIB = 55,
    AV_CODEC_ID_QTRLE = 56,
    AV_CODEC_ID_TSCC = 57,
    AV_CODEC_ID_ULTI = 58,
    AV_CODEC_ID_QDRAW = 59,
    AV_CODEC_ID_VIXL = 60,
    AV_CODEC_ID_QPEG = 61,
    AV_CODEC_ID_PNG = 62,
    AV_CODEC_ID_PPM = 63,
    AV_CODEC_ID_PBM = 64,
    AV_CODEC_ID_PGM = 65,
    AV_CODEC_ID_PGMYUV = 66,
    AV_CODEC_ID_PAM = 67,
    AV_CODEC_ID_FFVHUFF = 68,
    AV_CODEC_ID_RV30 = 69,
    AV_CODEC_ID_RV40 = 70,
    AV_CODEC_ID_VC1 = 71,
    AV_CODEC_ID_WMV3 = 72,
    AV_CODEC_ID_LOCO = 73,
    AV_CODEC_ID_WNV1 = 74,
    AV_CODEC_ID_AASC = 75,
    AV_CODEC_ID_INDEO2 = 76,
    AV_CODEC_ID_FRAPS = 77,
    AV_CODEC_ID_TRUEMOTION2 = 78,
    AV_CODEC_ID_BMP = 79,
    AV_CODEC_ID_CSCD = 80,
    AV_CODEC_ID_MMVIDEO = 81,
    AV_CODEC_ID_ZMBV = 82,
    AV_CODEC_ID_AVS = 83,
    AV_CODEC_ID_SMACKVIDEO = 84,
    AV_CODEC_ID_NUV = 85,
    AV_CODEC_ID_KMVC = 86,
    AV_CODEC_ID_FLASHSV = 87,
    AV_CODEC_ID_CAVS = 88,
    AV_CODEC_ID_JPEG2000 = 89,
    AV_CODEC_ID_VMNC = 90,
    AV_CODEC_ID_VP5 = 91,
    AV_CODEC_ID_VP6 = 92,
    AV_CODEC_ID_VP6F = 93,
    AV_CODEC_ID_TARGA = 94,
    AV_CODEC_ID_DSICINVIDEO = 95,
    AV_CODEC_ID_TIERTEXSEQVIDEO = 96,
    AV_CODEC_ID_TIFF = 97,
    AV_CODEC_ID_GIF = 98,
    AV_CODEC_ID_DXA = 99,
    AV_CODEC_ID_DNXHD = 100,
    AV_CODEC_ID_THP = 101,
    AV_CODEC_ID_SGI = 102,
    AV_CODEC_ID_C93 = 103,
    AV_CODEC_ID_BETHSOFTVID = 104,
    AV_CODEC_ID_PTX = 105,
    AV_CODEC_ID_TXD = 106,
    AV_CODEC_ID_VP6A = 107,
    AV_CODEC_ID_AMV = 108,
    AV_CODEC_ID_VB = 109,
    AV_CODEC_ID_PCX = 110,
    AV_CODEC_ID_SUNRAST = 111,
    AV_CODEC_ID_INDEO4 = 112,
    AV_CODEC_ID_INDEO5 = 113,
    AV_CODEC_ID_MIMIC = 114,
    AV_CODEC_ID_RL2 = 115,
    AV_CODEC_ID_ESCAPE124 = 116,
    AV_CODEC_ID_DIRAC = 117,
    AV_CODEC_ID_BFI = 118,
    AV_CODEC_ID_CMV = 119,
    AV_CODEC_ID_MOTIONPIXELS = 120,
    AV_CODEC_ID_TGV = 121,
    AV_CODEC_ID_TGQ = 122,
    AV_CODEC_ID_TQI = 123,
    AV_CODEC_ID_AURA = 124,
    AV_CODEC_ID_AURA2 = 125,
    AV_CODEC_ID_V210X = 126,
    AV_CODEC_ID_TMV = 127,
    AV_CODEC_ID_V210 = 128,
    AV_CODEC_ID_DPX = 129,
    AV_CODEC_ID_MAD = 130,
    AV_CODEC_ID_FRWU = 131,
    AV_CODEC_ID_FLASHSV2 = 132,
    AV_CODEC_ID_CDGRAPHICS = 133,
    AV_CODEC_ID_R210 = 134,
    AV_CODEC_ID_ANM = 135,
    AV_CODEC_ID_BINKVIDEO = 136,
    AV_CODEC_ID_IFF_ILBM = 137,
    AV_CODEC_ID_IFF_BYTERUN1 = 138,
    AV_CODEC_ID_KGV1 = 139,
    AV_CODEC_ID_YOP = 140,
    AV_CODEC_ID_VP8 = 141,
    AV_CODEC_ID_PICTOR = 142,
    AV_CODEC_ID_ANSI = 143,
    AV_CODEC_ID_A64_MULTI = 144,
    AV_CODEC_ID_A64_MULTI5 = 145,
    AV_CODEC_ID_R10K = 146,
    AV_CODEC_ID_MXPEG = 147,
    AV_CODEC_ID_LAGARITH = 148,
    AV_CODEC_ID_PRORES = 149,
    AV_CODEC_ID_JV = 150,
    AV_CODEC_ID_DFA = 151,
    AV_CODEC_ID_WMV3IMAGE = 152,
    AV_CODEC_ID_VC1IMAGE = 153,
    AV_CODEC_ID_UTVIDEO = 154,
    AV_CODEC_ID_BMV_VIDEO = 155,
    AV_CODEC_ID_VBLE = 156,
    AV_CODEC_ID_DXTORY = 157,
    AV_CODEC_ID_V410 = 158,
    AV_CODEC_ID_XWD = 159,
    AV_CODEC_ID_CDXL = 160,
    AV_CODEC_ID_XBM = 161,
    AV_CODEC_ID_ZEROCODEC = 162,
    AV_CODEC_ID_MSS1 = 163,
    AV_CODEC_ID_MSA1 = 164,
    AV_CODEC_ID_TSCC2 = 165,
    AV_CODEC_ID_MTS2 = 166,
    AV_CODEC_ID_CLLC = 167,
    AV_CODEC_ID_MSS2 = 168,
    AV_CODEC_ID_VP9 = 169,
    AV_CODEC_ID_AIC = 170,
    // etc

PixelFormat can be selected from this list in pixfmt.h/avutil.java, but each codec only supports a few of them (most of them support at least AV_PIX_FMT_YUV420P):

    /** planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) */
    AV_PIX_FMT_YUV420P = 0,
    /** packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr */
    AV_PIX_FMT_YUYV422 = 1,
    /** packed RGB 8:8:8, 24bpp, RGBRGB... */
    AV_PIX_FMT_RGB24 = 2,
    /** packed RGB 8:8:8, 24bpp, BGRBGR... */
    AV_PIX_FMT_BGR24 = 3,
    /** planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) */
    AV_PIX_FMT_YUV422P = 4,
    /** planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) */
    AV_PIX_FMT_YUV444P = 5,
    /** planar YUV 4:1:0,  9bpp, (1 Cr & Cb sample per 4x4 Y samples) */
    AV_PIX_FMT_YUV410P = 6,
    /** planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) */
    AV_PIX_FMT_YUV411P = 7,
    /**        Y        ,  8bpp */
    AV_PIX_FMT_GRAY8 = 8,
    /**        Y        ,  1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb */
    AV_PIX_FMT_MONOWHITE = 9,
    /**        Y        ,  1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb */
    AV_PIX_FMT_MONOBLACK = 10,
    /** 8 bit with PIX_FMT_RGB32 palette */
    AV_PIX_FMT_PAL8 = 11,
    /** planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range */
    AV_PIX_FMT_YUVJ420P = 12,
    /** planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range */
    AV_PIX_FMT_YUVJ422P = 13,
    /** planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range */
    AV_PIX_FMT_YUVJ444P = 14,
    /** XVideo Motion Acceleration via common packet passing */
    AV_PIX_FMT_XVMC_MPEG2_MC = 15,
    AV_PIX_FMT_XVMC_MPEG2_IDCT = 16;
    /** packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 */
    AV_PIX_FMT_UYVY422 = 17,
    /** packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 */
    AV_PIX_FMT_UYYVYY411 = 18,
    /** packed RGB 3:3:2,  8bpp, (msb)2B 3G 3R(lsb) */
    AV_PIX_FMT_BGR8 = 19,
    /** packed RGB 1:2:1 bitstream,  4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits */
    AV_PIX_FMT_BGR4 = 20,
    /** packed RGB 1:2:1,  8bpp, (msb)1B 2G 1R(lsb) */
    AV_PIX_FMT_BGR4_BYTE = 21,
    /** packed RGB 3:3:2,  8bpp, (msb)2R 3G 3B(lsb) */
    AV_PIX_FMT_RGB8 = 22,
    /** packed RGB 1:2:1 bitstream,  4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits */
    AV_PIX_FMT_RGB4 = 23,
    /** packed RGB 1:2:1,  8bpp, (msb)1R 2G 1B(lsb) */
    AV_PIX_FMT_RGB4_BYTE = 24,
    /** planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) */
    AV_PIX_FMT_NV12 = 25,
    /** as above, but U and V bytes are swapped */
    AV_PIX_FMT_NV21 = 26,

    /** packed ARGB 8:8:8:8, 32bpp, ARGBARGB... */
    AV_PIX_FMT_ARGB = 27,
    /** packed RGBA 8:8:8:8, 32bpp, RGBARGBA... */
    AV_PIX_FMT_RGBA = 28,
    /** packed ABGR 8:8:8:8, 32bpp, ABGRABGR... */
    AV_PIX_FMT_ABGR = 29,
    /** packed BGRA 8:8:8:8, 32bpp, BGRABGRA... */
    AV_PIX_FMT_BGRA = 30,

    /**        Y        , 16bpp, big-endian */
    AV_PIX_FMT_GRAY16BE = 31,
    /**        Y        , 16bpp, little-endian */
    AV_PIX_FMT_GRAY16LE = 32,
    /** planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) */
    AV_PIX_FMT_YUV440P = 33,
    /** planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range */
    AV_PIX_FMT_YUVJ440P = 34,
    /** planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) */
    AV_PIX_FMT_YUVA420P = 35,
    /** H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers */
    AV_PIX_FMT_VDPAU_H264 = 36,
    /** MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers */
    AV_PIX_FMT_VDPAU_MPEG1 = 37,
    /** MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers */
    AV_PIX_FMT_VDPAU_MPEG2 = 38,
    /** WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers */
    AV_PIX_FMT_VDPAU_WMV3 = 39,
    /** VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers */
    AV_PIX_FMT_VDPAU_VC1 = 40,
    /** packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian */
    AV_PIX_FMT_RGB48BE = 41,
    /** packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian */
    AV_PIX_FMT_RGB48LE = 42,

    /** packed RGB 5:6:5, 16bpp, (msb)   5R 6G 5B(lsb), big-endian */
    AV_PIX_FMT_RGB565BE = 43,
    /** packed RGB 5:6:5, 16bpp, (msb)   5R 6G 5B(lsb), little-endian */
    AV_PIX_FMT_RGB565LE = 44,
    /** packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 */
    AV_PIX_FMT_RGB555BE = 45,
    /** packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 */
    AV_PIX_FMT_RGB555LE = 46,

    /** packed BGR 5:6:5, 16bpp, (msb)   5B 6G 5R(lsb), big-endian */
    AV_PIX_FMT_BGR565BE = 47,
    /** packed BGR 5:6:5, 16bpp, (msb)   5B 6G 5R(lsb), little-endian */
    AV_PIX_FMT_BGR565LE = 48,
    /** packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 */
    AV_PIX_FMT_BGR555BE = 49,
    /** packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 */
    AV_PIX_FMT_BGR555LE = 50,

    /** HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers */
    AV_PIX_FMT_VAAPI_MOCO = 51,
    /** HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers */
    AV_PIX_FMT_VAAPI_IDCT = 52,
    /** HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers */
    AV_PIX_FMT_VAAPI_VLD = 53,

    /** planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian */
    AV_PIX_FMT_YUV420P16LE = 54,
    /** planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian */
    AV_PIX_FMT_YUV420P16BE = 55,
    /** planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian */
    AV_PIX_FMT_YUV422P16LE = 56,
    /** planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian */
    AV_PIX_FMT_YUV422P16BE = 57,
    /** planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian */
    AV_PIX_FMT_YUV444P16LE = 58,
    /** planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian */
    AV_PIX_FMT_YUV444P16BE = 59,
    /** MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers */
    AV_PIX_FMT_VDPAU_MPEG4 = 60,
    /** HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer */
    AV_PIX_FMT_DXVA2_VLD = 61,

    /** packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 */
    AV_PIX_FMT_RGB444LE = 62,
    /** packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 */
    AV_PIX_FMT_RGB444BE = 63,
    /** packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 */
    AV_PIX_FMT_BGR444LE = 64,
    /** packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 */
    AV_PIX_FMT_BGR444BE = 65,
    /** 8bit gray, 8bit alpha */
    AV_PIX_FMT_YA8 = 66,
    // etc

FrameRate indicates the number of frames per second the video should be played back at (it has nothing to do with the number or the timing of images you actually record, although it provides a basis for the encoding bitrate). So, in the case of 30 FPS, to cover 20 seconds of video, you need to call record() 30 * 20 = 600 times. If you do no call record() 600 times, then this is the cause of your problem.

VideoBitrate provides the video bitrate (in bits per second) at which the video stream should be encoded at. Wikipedia has a nice article about that.

这篇关于需要JavaCV FFmpegFrameRecorder属性说明的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆