资源简介
本教程是最简单的基于FFmpeg的libswscale进行像素处理的教程。它包含了两个工程:
simplest_ffmpeg_swscale: 最简单的libswscale的教程(YUV420P转RGB24)。
simplest_pic_gen: 生成各种测试图片的工具。
1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
代码片段和文件信息
/**
* 最简单的基于FFmpeg的Swscale示例
* Simplest FFmpeg Swscale
*
* 雷霄骅 Lei Xiaohua
* leixiaohua1020@126.com
* 中国传媒大学/数字电视技术
* Communication University of China / Digital TV Technology
* http://blog.csdn.net/leixiaohua1020
*
* 本程序使用libswscale对像素数据进行缩放转换等处理。
* 它中实现了YUV420P格式转换为RGB24格式,
* 同时将分辨率从480x272拉伸为1280x720
* 它是最简单的libswscale的教程。
*
* This software uses libswscale to scale / convert pixels.
* It convert YUV420P format to RGB24 format
* and changes resolution from 480x272 to 1280x720.
* It‘s the simplest tutorial about libswscale.
*/
#include
#define __STDC_CONSTANT_MACROS
#ifdef _WIN32
//Windows
extern “C“
{
#include “libswscale/swscale.h“
#include “libavutil/opt.h“
#include “libavutil/imgutils.h“
};
#else
//Linux...
#ifdef __cplusplus
extern “C“
{
#endif
#include
#include
#include
#ifdef __cplusplus
};
#endif
#endif
int main(int argc char* argv[])
{
//Parameters
FILE *src_file =fopen(“sintel_480x272_yuv420p.yuv“ “rb“);
const int src_w=480src_h=272;
AVPixelFormat src_pixfmt=AV_PIX_FMT_YUV420P;
int src_bpp=av_get_bits_per_pixel(av_pix_fmt_desc_get(src_pixfmt));
FILE *dst_file = fopen(“sintel_1280x720_rgb24.rgb“ “wb“);
const int dst_w=1280dst_h=720;
AVPixelFormat dst_pixfmt=AV_PIX_FMT_RGB24;
int dst_bpp=av_get_bits_per_pixel(av_pix_fmt_desc_get(dst_pixfmt));
//Structures
uint8_t *src_data[4];
int src_linesize[4];
uint8_t *dst_data[4];
int dst_linesize[4];
int rescale_method=SWS_BICUBIC;
struct SwsContext *img_convert_ctx;
uint8_t *temp_buffer=(uint8_t *)malloc(src_w*src_h*src_bpp/8);
int frame_idx=0;
int ret=0;
ret= av_image_alloc(src_data src_linesizesrc_w src_h src_pixfmt 1);
if (ret< 0) {
printf( “Could not allocate source image\n“);
return -1;
}
ret = av_image_alloc(dst_data dst_linesizedst_w dst_h dst_pixfmt 1);
if (ret< 0) {
printf( “Could not allocate destination image\n“);
return -1;
}
//-----------------------------
//Init Method 1
img_convert_ctx =sws_alloc_context();
//Show AVOption
av_opt_show2(img_convert_ctxstdoutAV_OPT_FLAG_VIDEO_PARAM0);
//Set Value
av_opt_set_int(img_convert_ctx“sws_flags“SWS_BICUBIC|SWS_PRINT_INFO0);
av_opt_set_int(img_convert_ctx“srcw“src_w0);
av_opt_set_int(img_convert_ctx“srch“src_h0);
av_opt_set_int(img_convert_ctx“src_format“src_pixfmt0);
//‘0‘ for MPEG (Y:0-235);‘1‘ for JPEG (Y:0-255)
av_opt_set_int(img_convert_ctx“src_range“10);
av_opt_set_int(img_convert_ctx“dstw“dst_w0);
av_opt_set_int(img_convert_ctx“dsth“dst_h0);
av_opt_set_int(img_convert_ctx“dst_format“dst_pixfmt0);
av_opt_set_int(img_convert_ctx“dst_range“10);
sws_init_context(img_convert_ctxNULLNULL);
//Init Method 2
//img_convert_ctx = sws_getContext(src_w src_hsrc_pixfmt dst_w dst_h dst_pixfmt
// rescale_method NULL NULL NULL);
//-
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 29 2015-02-12 17:39 .gitignore
文件 718 2015-02-12 17:39 ReadMe.txt
文件 1397 2015-02-12 17:39 simplest_ffmpeg_swscale.sln
文件 28672 2015-02-12 17:39 simplest_ffmpeg_swscale.suo
目录 0 2015-02-12 17:39 simplest_ffmpeg_swscale\
文件 88 2015-02-12 17:39 simplest_ffmpeg_swscale\.gitignore
文件 456 2015-02-12 17:39 simplest_ffmpeg_swscale\ReadMe.txt
文件 418304 2015-02-12 17:39 simplest_ffmpeg_swscale\avutil-52.dll
文件 230400 2015-02-12 17:39 simplest_ffmpeg_swscale\colorbar_320x240_rgb24.rgb
文件 539 2015-02-12 17:39 simplest_ffmpeg_swscale\compile_cl.bat
文件 412 2015-02-12 17:39 simplest_ffmpeg_swscale\compile_gcc.sh
文件 431 2015-02-12 17:39 simplest_ffmpeg_swscale\compile_mingw.sh
文件 115200 2015-02-12 17:39 simplest_ffmpeg_swscale\graybar_320x240_0_255_yuv420p.yuv
文件 115200 2015-02-12 17:39 simplest_ffmpeg_swscale\graybar_320x240_16_235_yuv420p.yuv
目录 0 2015-02-12 17:39 simplest_ffmpeg_swscale\include\
文件 7976 2015-02-12 17:39 simplest_ffmpeg_swscale\include\_mingw.h
文件 5721 2015-02-12 17:39 simplest_ffmpeg_swscale\include\inttypes.h
目录 0 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\
文件 1584 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\adler32.h
文件 1834 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\aes.h
文件 4230 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\attributes.h
文件 4414 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\audio_fifo.h
文件 82 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\audioconvert.h
文件 2113 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\avassert.h
文件 211 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\avconfig.h
文件 12473 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\avstring.h
文件 8561 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\avutil.h
文件 2079 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\ba
文件 2313 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\blowfish.h
文件 7733 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\bprint.h
文件 2901 2015-02-12 17:39 simplest_ffmpeg_swscale\include\libavutil\bswap.h
............此处省略76个文件信息
相关资源
- ffmpeg-2.5.2-win32-shared
- 利用FFmpeg将mkv视频转换为H.264
- 安卓交叉编译ffmepgx86_64版本
- ffmepg的安卓arm(armeabi-v7a)版本
- 基于ARM9的远程视频监控系统
- 最简单的基于FFmpeg的封装格式转换器
- SDK播放器加速.zip
- 基于ffmpeg的经典版 ffplay 音视频播放
- ffmpeg api实现视频转码音视频
- FFMPEG入门基础资料pdf
- ffmpeg ffdoc (FFMPEG的最完整教程)
- ffmpeg转码为hls代码
- ffmpeg-4.0.2最新版 windows vs2013编译动态
- ffmpeg实现直播功能
- linuxubuntu下ffmpeg + alsa 的音频播放器
- 内存H264+PCM发布rtmp.rar
- ffmpeg-4.2.1-win32-dev.zip
- M3U8视频PC机64位辅助工具2.0 —&md
- ( YUV420(YV12)与YUY2(YUV422YUYV)格式
- ffmpeg-3.2.tar.bz2
- 适用于VC的FFMpeg静态库已编译)
- 使用ffmpeg api解码h264视频码流,并且能
- YUV Viewer 附测试文件格式:yuv420
- MP4v2录制rtsp流存为MP4文件
- qt opengl(after ver2.1) 渲染 nv12
- [8] ffmpeg + SDL2 实现的视频播放器「快
- yuvtools_v2
- libyuv vs2013工程
- JpegToYUV源代码
- 各种格式mp4、wmv、avi、mov等的视频转
评论
共有 条评论