当前位置: 首页 > news >正文

网站百度权重没有数据导购wordpress主题

网站百度权重没有数据,导购wordpress主题,淄博网站制作高端形象,wordpress源码最新介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力#xff0c;只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API#xff0c;将avcodec_encode_audio2(…介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API将avcodec_encode_audio2()作为音频的解码函数 API从 3.4版本开始已经将二者标记为废弃过时 APIattribute_deprecated。新版本 FFmpeg 将 avcodec_send_frame() 与 avcodec_receive_packet() 作为音视频的解码函数 API但同时仍然保留了对老接口的兼容通过avcodec_encode_video2()、avcodec_encode_audio2()调用 compat_decode()完成对新 API 的封装。 //具体可以参考 FFmpeg 中 doc/APIchanges 中的记录.2016-04-21 - 7fc329e - lavc 57.37.100 - avcodec.hAdd a new audio/video encoding and decoding API with decoupled inputand output -- avcodec_send_packet(), avcodec_receive_frame(),avcodec_send_frame() and avcodec_receive_packet().可以通过命令行ffmpeg configure -encoders查看支持哪些编码器格式但是好像configure 里说明的和源码不完全一致源码里有支持 kvazaar 编码器一种符合h265编码标准的开源编码器但 configure 并没有体现出来。 Encoders:V..... VideoA..... AudioS..... Subtitle.F.... Frame-level multithreading..S... Slice-level multithreading...X.. Codec is experimental....B. Supports draw_horiz_band.....D Supports direct rendering method 1------V....D a64multi Multicolor charset for Commodore 64 (codec a64_multi)V....D a64multi5 Multicolor charset for Commodore 64, extended with 5th color (colram) (codec a64_multi5)V....D alias_pix Alias/Wavefront PIX imageV..... amv AMV VideoV....D apng APNG (Animated Portable Network Graphics) imageV....D asv1 ASUS V1V....D asv2 ASUS V2V....D libaom-av1 libaom AV1 (codec av1)V....D librav1e librav1e AV1 (codec av1)V..... libsvtav1 SVT-AV1(Scalable Video Technology for AV1) encoder (codec av1)V....D avrp Avid 1:1 10-bit RGB PackerV..X.D avui Avid Meridien UncompressedV....D ayuv Uncompressed packed MS 4:4:4:4VF...D bitpacked BitpackedV....D bmp BMP (Windows and OS/2 bitmap)VF...D cfhd GoPro CineForm HDV....D cinepak CinepakV....D cljr Cirrus Logic AccuPakV.S..D vc2 SMPTE VC-2 (codec dirac)VFS..D dnxhd VC3/DNxHDV....D dpx DPX (Digital Picture Exchange) imageVFS..D dvvideo DV (Digital Video)VF...D exr OpenEXR imageV.S..D ffv1 FFmpeg video codec #1VF...D ffvhuff Huffyuv FFmpeg variantV....D fits Flexible Image Transport SystemV....D flashsv Flash Screen VideoV....D flashsv2 Flash Screen Video Version 2V..... flv FLV / Sorenson Spark / Sorenson H.263 (Flash Video) (codec flv1)V....D gif GIF (Graphics Interchange Format)V..... h261 H.261V..... h263 H.263 / H.263-1996V.S... h263p H.263 / H.263-1998 / H.263 version 2V....D libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)V....D libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)V....D h264_videotoolbox VideoToolbox H.264 Encoder (codec h264)V.S..D hap Vidvox HapVF...D hdr HDR (Radiance RGBE format) imageV....D libx265 libx265 H.265 / HEVC (codec hevc)V....D hevc_videotoolbox VideoToolbox H.265 Encoder (codec hevc)VF...D huffyuv Huffyuv / HuffYUVV....D jpeg2000 JPEG 2000VF.... libopenjpeg OpenJPEG JPEG 2000 (codec jpeg2000)VF...D jpegls JPEG-LSVF...D ljpeg Lossless JPEGVF...D magicyuv MagicYUV videoVFS... mjpeg MJPEG (Motion JPEG)V.S... mpeg1video MPEG-1 videoV.S... mpeg2video MPEG-2 videoV.S... mpeg4 MPEG-4 part 2V....D libxvid libxvidcore MPEG-4 part 2 (codec mpeg4)V..... msmpeg4v2 MPEG-4 part 2 Microsoft variant version 2V..... msmpeg4 MPEG-4 part 2 Microsoft variant version 3 (codec msmpeg4v3)V..... msvideo1 Microsoft Video-1V....D pam PAM (Portable AnyMap) imageV....D pbm PBM (Portable BitMap) imageV....D pcx PC Paintbrush PCX imageV....D pfm PFM (Portable FloatMap) imageV....D pgm PGM (Portable GrayMap) imageV....D pgmyuv PGMYUV (Portable GrayMap YUV) imageV....D phm PHM (Portable HalfFloatMap) imageVF...D png PNG (Portable Network Graphics) imageV....D ppm PPM (Portable PixelMap) imageVF...D prores Apple ProResVF...D prores_aw Apple ProRes (codec prores)VFS... prores_ks Apple ProRes (iCodec Pro) (codec prores)V....D prores_videotoolbox VideoToolbox ProRes Encoder (codec prores)VF...D qoi QOI (Quite OK Image format) imageV....D qtrle QuickTime Animation (RLE) videoV....D r10k AJA Kona 10-bit RGB CodecV....D r210 Uncompressed RGB 10-bitVF...D rawvideo raw videoV....D roqvideo id RoQ video (codec roq)V....D rpza QuickTime video (RPZA)V..... rv10 RealVideo 1.0V..... rv20 RealVideo 2.0V....D sgi SGI imageV....D smc QuickTime Graphics (SMC)V....D snow SnowV..... speedhq NewTek SpeedHQV....D sunrast Sun Rasterfile imageV....D svq1 Sorenson Vector Quantizer 1 / Sorenson Video 1 / SVQ1V....D targa Truevision Targa imageV....D libtheora libtheora Theora (codec theora)VF...D tiff TIFF imageVF...D utvideo Ut VideoVF...D v210 Uncompressed 4:2:2 10-bitV....D v308 Uncompressed packed 4:4:4V....D v408 Uncompressed packed QT 4:4:4:4V....D v410 Uncompressed 4:4:4 10-bitV.S..D vbn Vizrt Binary ImageV..... vnull null videoV....D libvpx libvpx VP8 (codec vp8)V....D libvpx-vp9 libvpx VP9 (codec vp9)VF...D wbmp WBMP (Wireless Application Protocol Bitmap) imageV....D libwebp_anim libwebp WebP image (codec webp)V....D libwebp libwebp WebP image (codec webp)V..... wmv1 Windows Media Video 7V..... wmv2 Windows Media Video 8V..... wrapped_avframe AVFrame to AVPacket passthroughV....D xbm XBM (X BitMap) imageV....D xface X-face imageV....D xwd XWD (X Window Dump) imageV....D y41p Uncompressed YUV 4:1:1 12-bitV....D yuv4 Uncompressed packed 4:2:0VF...D zlib LCL (LossLess Codec Library) ZLIBV....D zmbv Zip Motion Blocks VideoA....D aac AAC (Advanced Audio Coding)A..... aac_at aac (AudioToolbox) (codec aac)A....D ac3 ATSC A/52A (AC-3)A....D ac3_fixed ATSC A/52A (AC-3) (codec ac3)A....D adpcm_adx SEGA CRI ADX ADPCMA....D adpcm_argo ADPCM Argonaut GamesA....D g722 G.722 ADPCM (codec adpcm_g722)A....D g726 G.726 ADPCM (codec adpcm_g726)A....D g726le G.726 little endian ADPCM (right-justified) (codec adpcm_g726le)A....D adpcm_ima_alp ADPCM IMA High Voltage Software ALPA....D adpcm_ima_amv ADPCM IMA AMVA....D adpcm_ima_apm ADPCM IMA Ubisoft APMA....D adpcm_ima_qt ADPCM IMA QuickTimeA....D adpcm_ima_ssi ADPCM IMA Simon Schuster InteractiveA....D adpcm_ima_wav ADPCM IMA WAVA....D adpcm_ima_ws ADPCM IMA WestwoodA....D adpcm_ms ADPCM MicrosoftA....D adpcm_swf ADPCM Shockwave FlashA....D adpcm_yamaha ADPCM YamahaA....D alac ALAC (Apple Lossless Audio Codec)A..... alac_at alac (AudioToolbox) (codec alac)A....D libopencore_amrnb OpenCORE AMR-NB (Adaptive Multi-Rate Narrow-Band) (codec amr_nb)A..... anull null audioA....D aptx aptX (Audio Processing Technology for Bluetooth)A....D aptx_hd aptX HD (Audio Processing Technology for Bluetooth)A....D comfortnoise RFC 3389 comfort noise generatorA....D dfpwm DFPWM1a audioA..X.D dca DCA (DTS Coherent Acoustics) (codec dts)A....D eac3 ATSC A/52 E-AC-3A....D flac FLAC (Free Lossless Audio Codec)A....D g723_1 G.723.1A..... ilbc_at ilbc (AudioToolbox) (codec ilbc)A..X.D mlp MLP (Meridian Lossless Packing)A....D mp2 MP2 (MPEG audio layer 2)A....D mp2fixed MP2 fixed point (MPEG audio layer 2) (codec mp2)A....D libmp3lame libmp3lame MP3 (MPEG audio layer 3) (codec mp3)A....D nellymoser Nellymoser AsaoA..X.D opus OpusA....D libopus libopus Opus (codec opus)A....D pcm_alaw PCM A-law / G.711 A-lawA..... pcm_alaw_at pcm_alaw (AudioToolbox) (codec pcm_alaw)A....D pcm_bluray PCM signed 16|20|24-bit big-endian for Blu-ray mediaA....D pcm_dvd PCM signed 16|20|24-bit big-endian for DVD mediaA....D pcm_f32be PCM 32-bit floating point big-endianA....D pcm_f32le PCM 32-bit floating point little-endianA....D pcm_f64be PCM 64-bit floating point big-endianA....D pcm_f64le PCM 64-bit floating point little-endianA....D pcm_mulaw PCM mu-law / G.711 mu-lawA..... pcm_mulaw_at pcm_mulaw (AudioToolbox) (codec pcm_mulaw)A....D pcm_s16be PCM signed 16-bit big-endianA....D pcm_s16be_planar PCM signed 16-bit big-endian planarA....D pcm_s16le PCM signed 16-bit little-endianA....D pcm_s16le_planar PCM signed 16-bit little-endian planarA....D pcm_s24be PCM signed 24-bit big-endianA....D pcm_s24daud PCM D-Cinema audio signed 24-bitA....D pcm_s24le PCM signed 24-bit little-endianA....D pcm_s24le_planar PCM signed 24-bit little-endian planarA....D pcm_s32be PCM signed 32-bit big-endianA....D pcm_s32le PCM signed 32-bit little-endianA....D pcm_s32le_planar PCM signed 32-bit little-endian planarA....D pcm_s64be PCM signed 64-bit big-endianA....D pcm_s64le PCM signed 64-bit little-endianA....D pcm_s8 PCM signed 8-bitA....D pcm_s8_planar PCM signed 8-bit planarA....D pcm_u16be PCM unsigned 16-bit big-endianA....D pcm_u16le PCM unsigned 16-bit little-endianA....D pcm_u24be PCM unsigned 24-bit big-endianA....D pcm_u24le PCM unsigned 24-bit little-endianA....D pcm_u32be PCM unsigned 32-bit big-endianA....D pcm_u32le PCM unsigned 32-bit little-endianA....D pcm_u8 PCM unsigned 8-bitA....D pcm_vidc PCM Archimedes VIDCA....D real_144 RealAudio 1.0 (14.4K) (codec ra_144)A....D roq_dpcm id RoQ DPCMA..X.D s302m SMPTE 302MA....D sbc SBC (low-complexity subband codec)A..X.D sonic SonicA..X.D sonicls Sonic losslessA....D libspeex libspeex Speex (codec speex)A..X.D truehd TrueHDA....D tta TTA (True Audio)A..X.D vorbis VorbisA....D libvorbis libvorbis (codec vorbis)A....D wavpack WavPackA....D wmav1 Windows Media Audio 1A....D wmav2 Windows Media Audio 2S..... ssa ASS (Advanced SubStation Alpha) subtitle (codec ass)S..... ass ASS (Advanced SubStation Alpha) subtitleS..... dvbsub DVB subtitles (codec dvb_subtitle)S..... dvdsub DVD subtitles (codec dvd_subtitle)S..... mov_text 3GPP Timed Text subtitleS..... srt SubRip subtitle (codec subrip)S..... subrip SubRip subtitleS..... text Raw text subtitleS..... ttml TTML subtitleS..... webvtt WebVTT subtitleS..... xsub DivX subtitles (XSUB)视频编码详细流程 从流程可以看到完成编码的核心函数就是 do_video_out()里面实现编码的核心 API 就是 avcodec_send_frame() 和 avcodec_receive_packet() 两个函数两个函数有点类似状态机收到帧frame 到输出包 packet通过判断 buffer 中是否有数据完成编码。 编码核心 API 介绍 avcodec_send_frame() API申明介绍 /*** Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet()* to retrieve buffered output packets.** param avctx codec context* param[in] frame AVFrame containing the raw audio or video frame to be encoded.* Ownership of the frame remains with the caller, and the* encoder will not write to the frame. The encoder may create* a reference to the frame data (or copy it if the frame is* not reference-counted).* It can be NULL, in which case it is considered a flush* packet. This signals the end of the stream. If the encoder* still has packets buffered, it will return them after this* call. Once flushing mode has been entered, additional flush* packets are ignored, and sending frames will return* AVERROR_EOF.** For audio:* If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame* can have any number of samples.* If it is not set, frame-nb_samples must be equal to* avctx-frame_size for all frames except the last.* The final frame may be smaller than avctx-frame_size.* return 0 on success, otherwise negative error code:* AVERROR(EAGAIN): input is not accepted in the current state - user* must read output with avcodec_receive_packet() (once* all output is read, the packet should be resent, and* the call will not fail with EAGAIN).* AVERROR_EOF: the encoder has been flushed, and no new frames can* be sent to it* AVERROR(EINVAL): codec not opened, refcounted_frames not set, it is a* decoder, or requires flush* AVERROR(ENOMEM): failed to add packet to internal queue, or similar* other errors: legitimate encoding errors*/ int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);定义分析 avcodec_send_frame()内部调用encode_send_frame_internal() 来检查 frame buffer 里是否有数据当 buffer_pkt中没有数据时调用encode_receive_packet_internal() 是完成编码的核心函数 在encode_receive_packet_internal()中主要调用encode_simple_receive_packet() 完成视频编码 在encode_simple_receive_packet()调用encode_simple_internal() 完成视频编码 在encode_simple_internal()主要利用函数指针 (*encode2)() 对各类第三方的编码器的调用此外若涉及到多线程编码则会通过ff_thread_video_encode_frame()来完成。 (*encode2)() 通过该函数指针指向不同的编码器完成具体的编码过程比如 x264、openh264、x265、avs2、videotoolbox 等等 AVCodec ff_libx264_encoder {.name libx264,.long_name NULL_IF_CONFIG_SMALL(libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_H264,.priv_data_size sizeof(X264Context),.init X264_init,.encode2 X264_frame,.close X264_close,.capabilities AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS |AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,.priv_class x264_class,.defaults x264_defaults,.init_static_data X264_init_static, #if X264_BUILD 158.caps_internal FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_INIT_THREADSAFE, #else.caps_internal FF_CODEC_CAP_INIT_CLEANUP, #endif.wrapper_name libx264, };AVCodec ff_libx265_encoder {.name libx265,.long_name NULL_IF_CONFIG_SMALL(libx265 H.265 / HEVC),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_HEVC,.init libx265_encode_init,.init_static_data libx265_encode_init_csp,.encode2 libx265_encode_frame,.close libx265_encode_close,.priv_data_size sizeof(libx265Context),.priv_class class,.defaults x265_defaults,.capabilities AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS |AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE,.wrapper_name libx265, };AVCodec ff_libopenh264_encoder {.name libopenh264,.long_name NULL_IF_CONFIG_SMALL(OpenH264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_H264,.priv_data_size sizeof(SVCContext),.init svc_encode_init,.encode2 svc_encode_frame,.close svc_encode_close,.capabilities AV_CODEC_CAP_AUTO_THREADS,.caps_internal FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP,.pix_fmts (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P,AV_PIX_FMT_NONE },.defaults svc_enc_defaults,.priv_class class,.wrapper_name libopenh264, };AVCodec ff_h264_videotoolbox_encoder {.name h264_videotoolbox,.long_name NULL_IF_CONFIG_SMALL(VideoToolbox H.264 Encoder),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_H264,.priv_data_size sizeof(VTEncContext),.pix_fmts avc_pix_fmts,.init vtenc_init,.encode2 vtenc_frame,.close vtenc_close,.capabilities AV_CODEC_CAP_DELAY,.priv_class h264_videotoolbox_class,.caps_internal FF_CODEC_CAP_INIT_THREADSAFE |FF_CODEC_CAP_INIT_CLEANUP, };AVCodec ff_hevc_videotoolbox_encoder {.name hevc_videotoolbox,.long_name NULL_IF_CONFIG_SMALL(VideoToolbox H.265 Encoder),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_HEVC,.priv_data_size sizeof(VTEncContext),.pix_fmts hevc_pix_fmts,.init vtenc_init,.encode2 vtenc_frame,.close vtenc_close,.capabilities AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE,.priv_class hevc_videotoolbox_class,.caps_internal FF_CODEC_CAP_INIT_THREADSAFE |FF_CODEC_CAP_INIT_CLEANUP,.wrapper_name videotoolbox, };AVCodec ff_libxavs_encoder {.name libxavs,.long_name NULL_IF_CONFIG_SMALL(libxavs Chinese AVS (Audio Video Standard)),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_CAVS,.priv_data_size sizeof(XavsContext),.init XAVS_init,.encode2 XAVS_frame,.close XAVS_close,.capabilities AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS,.pix_fmts (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },.priv_class xavs_class,.defaults xavs_defaults,.wrapper_name libxavs, };AVCodec ff_libxavs2_encoder {.name libxavs2,.long_name NULL_IF_CONFIG_SMALL(libxavs2 AVS2-P2/IEEE1857.4),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_AVS2,.priv_data_size sizeof(XAVS2EContext),.init xavs2_init,.encode2 xavs2_encode_frame,.close xavs2_close,.capabilities AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS,.pix_fmts (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P,AV_PIX_FMT_NONE },.priv_class libxavs2,.defaults xavs2_defaults,.wrapper_name libxavs2, } ;AVCodec ff_libvpx_vp8_encoder {.name libvpx,.long_name NULL_IF_CONFIG_SMALL(libvpx VP8),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_VP8,.priv_data_size sizeof(VPxContext),.init vp8_init,.encode2 vpx_encode,.close vpx_free,.capabilities AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS,.pix_fmts (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUVA420P, AV_PIX_FMT_NONE },.priv_class class_vp8,.defaults defaults,.wrapper_name libvpx, };AVCodec ff_libvpx_vp9_encoder {.name libvpx-vp9,.long_name NULL_IF_CONFIG_SMALL(libvpx VP9),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_VP9,.priv_data_size sizeof(VPxContext),.init vp9_init,.encode2 vpx_encode,.close vpx_free,.capabilities AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS,.profiles NULL_IF_CONFIG_SMALL(ff_vp9_profiles),.priv_class class_vp9,.defaults defaults,.init_static_data ff_vp9_init_static,.wrapper_name libvpx, };AVCodec ff_libxvid_encoder {.name libxvid,.long_name NULL_IF_CONFIG_SMALL(libxvidcore MPEG-4 part 2),.type AVMEDIA_TYPE_VIDEO,.id AV_CODEC_ID_MPEG4,.priv_data_size sizeof(struct xvid_context),.init xvid_encode_init,.encode2 xvid_encode_frame,.close xvid_encode_close,.pix_fmts (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE },.priv_class xvid_class,.caps_internal FF_CODEC_CAP_INIT_THREADSAFE |FF_CODEC_CAP_INIT_CLEANUP,.wrapper_name libxvid, };avcodec_receive_packet() API 申明介绍 /*** Read encoded data from the encoder.** param avctx codec context* param avpkt This will be set to a reference-counted packet allocated by the* encoder. Note that the function will always call* av_packet_unref(avpkt) before doing anything else.* return 0 on success, otherwise negative error code:* AVERROR(EAGAIN): output is not available in the current state - user* must try to send input* AVERROR_EOF: the encoder has been fully flushed, and there will be* no more output packets* AVERROR(EINVAL): codec not opened, or it is a decoder* other errors: legitimate encoding errors*/ int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);定义分析 从 avcode_receive_packet()函数内部实现逻辑可以看到首先判断buffer_pkt是否有数据如果有则调用 av_packet_move_ref() 函数完成数据包 packet 的拷贝过程如果buffer_pak里没有数据则需要调用 encode_receive_packet_internal() 来完成编码此过程跟 send frame 模块中相同。 官方编码实例 /** Copyright (c) 2001 Fabrice Bellard** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the Software), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is* furnished to do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in* all copies or substantial portions of the Software.** THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN* THE SOFTWARE.*//*** file* video encoding with libavcodec API example** example encode_video.c*/#include stdio.h #include stdlib.h #include string.h#include libavcodec/avcodec.h#include libavutil/opt.h #include libavutil/imgutils.hstatic void encode(AVCodecContext *enc_ctx, AVFrame *frame, AVPacket *pkt,FILE *outfile) {int ret;/* send the frame to the encoder */if (frame)printf(Send frame %3PRId64\n, frame-pts);ret avcodec_send_frame(enc_ctx, frame);if (ret 0) {fprintf(stderr, Error sending a frame for encoding\n);exit(1);}while (ret 0) {ret avcodec_receive_packet(enc_ctx, pkt);if (ret AVERROR(EAGAIN) || ret AVERROR_EOF)return;else if (ret 0) {fprintf(stderr, Error during encoding\n);exit(1);}printf(Write packet %3PRId64 (size%5d)\n, pkt-pts, pkt-size);fwrite(pkt-data, 1, pkt-size, outfile);av_packet_unref(pkt);} }int main(int argc, char **argv) {const char *filename, *codec_name;const AVCodec *codec;AVCodecContext *c NULL;int i, ret, x, y;FILE *f;AVFrame *frame;AVPacket *pkt;uint8_t endcode[] { 0, 0, 1, 0xb7 };if (argc 2) {fprintf(stderr, Usage: %s output file codec name\n, argv[0]);exit(0);}filename argv[1];codec_name argv[2];/* find the mpeg1video encoder */codec avcodec_find_encoder_by_name(codec_name);if (!codec) {fprintf(stderr, Codec %s not found\n, codec_name);exit(1);}c avcodec_alloc_context3(codec);if (!c) {fprintf(stderr, Could not allocate video codec context\n);exit(1);}pkt av_packet_alloc();if (!pkt)exit(1);/* put sample parameters */c-bit_rate 400000;/* resolution must be a multiple of two */c-width 352;c-height 288;/* frames per second */c-time_base (AVRational){1, 25};c-framerate (AVRational){25, 1};/* emit one intra frame every ten frames* check frame pict_type before passing frame* to encoder, if frame-pict_type is AV_PICTURE_TYPE_I* then gop_size is ignored and the output of encoder* will always be I frame irrespective to gop_size*/c-gop_size 10;c-max_b_frames 1;c-pix_fmt AV_PIX_FMT_YUV420P;if (codec-id AV_CODEC_ID_H264)av_opt_set(c-priv_data, preset, slow, 0);/* open it */ret avcodec_open2(c, codec, NULL);if (ret 0) {fprintf(stderr, Could not open codec: %s\n, av_err2str(ret));exit(1);}f fopen(filename, wb);if (!f) {fprintf(stderr, Could not open %s\n, filename);exit(1);}frame av_frame_alloc();if (!frame) {fprintf(stderr, Could not allocate video frame\n);exit(1);}frame-format c-pix_fmt;frame-width c-width;frame-height c-height;ret av_frame_get_buffer(frame, 0);if (ret 0) {fprintf(stderr, Could not allocate the video frame data\n);exit(1);}/* encode 1 second of video */for (i 0; i 25; i) {fflush(stdout);/* make sure the frame data is writable */ret av_frame_make_writable(frame);if (ret 0)exit(1);/* prepare a dummy image *//* Y */for (y 0; y c-height; y) {for (x 0; x c-width; x) {frame-data[0][y * frame-linesize[0] x] x y i * 3;}}/* Cb and Cr */for (y 0; y c-height/2; y) {for (x 0; x c-width/2; x) {frame-data[1][y * frame-linesize[1] x] 128 y i * 2;frame-data[2][y * frame-linesize[2] x] 64 x i * 5;}}frame-pts i;/* encode the image */encode(c, frame, pkt, f);}/* flush the encoder */encode(c, NULL, pkt, f);/* add sequence end code to have a real MPEG file */if (codec-id AV_CODEC_ID_MPEG1VIDEO || codec-id AV_CODEC_ID_MPEG2VIDEO)fwrite(endcode, 1, sizeof(endcode), f);fclose(f);avcodec_free_context(c);av_frame_free(frame);av_packet_free(pkt);return 0; }参考 http://ffmpeg.org/
http://www.tj-hxxt.cn/news/135516.html

相关文章:

  • 织梦怎么做中英文网站怎么制作微信网站
  • 网站建设与维护教学视频如何查找昆明公司的网站
  • 淘客网站代理地震网最新消息今天
  • 销售网站建设的意义wordpress 标签中文
  • 苏州网站建设致宇100个无水印短视频素材免费
  • 龙岗公司做网站做网站主要学什么条件
  • 使用flashfxp上传网站域名和网站的建设实训报告
  • 昆明体育城微网站建设兰州碧桂园
  • 做网站什么价位湘阴网页定制
  • 上海平台网站建设公网站制作公司上海
  • win8 风格网站模板vi设计模板源文件
  • 制作ppt的网站网站建设的开票编码
  • 网站制作费用是多少网站流量怎样挣钱
  • 昆明专业网站设计公司三门峡住房城乡建设局网站
  • 网站建设需要多少钱?qq企业邮箱怎么注册
  • 秀屿区建设局网站制作网站的软件下载
  • 建设网站论文网站策划与建设实训心得
  • 用phpcms建网站流程如何通过网络营销自己
  • 做网页网站医院网址
  • 做装修的推广网站有那种wordpress logo 编辑器
  • 微页制作网站模板下载软件全国造价信息网官网
  • 站长之家网站介绍彩页设计图片模板
  • 秦皇岛金洋建设集团网站如何创作网站
  • 专业制作网站系统谷歌浏览器官网下载安装
  • 宝安公司网站制作哪家公司好西安电子商务网站
  • 备案停止网站长沙网站推广合作
  • 个人网站 免费wordpress 音频插件
  • 昆明网络优化网站优化软件推荐
  • 做的好的阅读类的网站有哪些长沙哪里做网站
  • 成都建站价格wordpress打赏链接