2013-01-02 7 views
8

Ich benutze FFmpegFrameRecorder, um den Videoeingang von meiner Webcam zu bekommen und es in eine Videodatei aufzunehmen. Das Problem ist, dass ich meine Anwendung mit ein paar verschiedenen Demo-Quellcodes erstelle, die ich gefunden habe, und ich verwende Eigenschaften, von denen einige mir nicht völlig klar sind.JavaCV FFmpegFrameRecorder Eigenschaften Erklärung benötigt

Als erstes ist hier mein Code-Schnipsel:

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) - Was ist der Sinn dieser (13) wie kann ich verstehen, was tatsächlich Codec hinter jeder Zahl steht?
  • SetPixelFormat - gerade dies umgehen, weiß nicht, was es im Allgemeinen
  • setFrameRate tut (30) - ich denke, das ist aber immer noch ziemlich klar sein sollte, was ist die Logik hinter dem, was Frame-Rate wählen wir (ist das nicht besser desto besser?)
  • setVideoBitrate (10 * 1024 * 1024) - wieder fast keine Ahnung was das macht und was steckt hinter den Zahlen?

Am Ende möchte ich nur ein letztes Problem erwähnen, das ich Aufnahme Video wie folgt bekommen. Wenn die tatsächliche Länge des Videos 20 Sekunden beträgt. Wenn ich die aus dem Programm erstellte Videodatei abspiele, läuft sie deutlich schneller. Kann nicht sagen, ob es genau 2 mal schneller ist, als es sein sollte, aber im Allgemeinen, wenn ich ein 20sek Video aufnehme, wird es ungefähr 10 Sekunden lang abgespielt. Was kann dies verursachen und wie kann ich es beheben?

Antwort

20

Videocodec Aus dieser Liste kann in avcodec.h/avcodec.java gefunden gewählt werden (Wie Sie sehen können, die Zahl 13 bringt uns MPEG4, und es gibt andere, aber FFmpeg nicht über einen Encoder für alle):

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 kann aus dieser Liste in pixfmt.h/avutil.java, aber jeder Codec nur wenige von ihnen unterstützt ausgewählt werden (die meisten von ihnen zumindest AV_PIX_FMT_YUV420P unterstützen):

/** 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 gibt die Anzahl der Bilder pro Sekunde an, in denen das Video abgespielt werden soll (es hat nichts mit der Anzahl oder dem Timing von tatsächlich aufgenommenen Bildern zu tun, obwohl es eine Basis für die Codier-Bitrate bietet) . Also, im Falle von 30 FPS, um 20 Sekunden Video abzudecken, müssen Sie record() 30 * 20 = 600 mal anrufen. Wenn Sie record() 600 Mal nicht anrufen, dann ist dies die Ursache Ihres Problems.

VideoBitrate liefert die Videobitrate (in Bits pro Sekunde), bei der der Videostream codiert werden soll. Wikipedia hat a nice article about that.

+0

Danke, Samuel nette Antwort. Schätzen. – Leron

+0

Sicher! Übrigens, einige Codecs (FLV1 und MPEG4 vielleicht?) Unterstützen variable Framerates, die wir bekommen, wenn wir setTimestamp (playbackTimeInMicroseconds) vor jedem 'record (image)' aufrufen. Das kann helfen, wenn aus irgendeinem Grund keine konstante Bildrate erreicht werden kann. –

+0

Hallo wundervolle Erklärung. Können Sie bitte über Zeitstempel-Mechanismus beschreiben. Wie Zeitstempel für Ihr Video in FFmpegFrameRecorder? – Dilip