ffmpeg 图像格式转换

ffmpeg 将AVFrame转换为dscFrame格式

av_image_to(pFrame, &dscFrame, AV_PIX_FMT_YUVJ420P, pFrame->width,
				pFrame->height);
int av_image_to(AVFrame *pFrame, AVFrame **pdscFrame, int dscFormat, int dscW,
		int dscH) {
	struct SwsContext *m_pSwsContext;
	AVFrame *frame = av_frame_alloc();
	int ret = 0;

	frame->format = dscFormat; //pFrame->format;
	frame->width = dscW;
	frame->height = dscH;

	//	int x, y;  //nv12->yuv420
	//	for (y = 0; y < frame->height; y++) {
	//		for (x = 0; x < frame->width; x++) {
	//			frame->data[0][y * frame->linesize[0] + x] = pFrame->data[0][(y + 0)
	//			* pFrame->linesize[0] + 0 + x];
	//		}
	//	}
	//	for (y = 0; y < frame->height / 2; y++) {
	//		for (x = 0; x < frame->width / 2; x++) {
	//			frame->data[1][y * frame->linesize[1] + x] = pFrame->data[1][(y + 0)* pFrame->linesize[1] * 2 + 0 + x * 2];
	//			frame->data[2][y * frame->linesize[2] + x] = pFrame->data[1][(y + 0)* pFrame->linesize[1] * 2 + 0 + x * 2 + 1];
	//		}
	//	}
	if (av_frame_get_buffer(frame, 1) < 0) {
		printf("pickupPic av_frame_get_buffer failed ! \n");
		av_frame_free(&frame);
		return -1;
	}

	if (av_frame_make_writable(frame) < 0) {
		printf("pickupPic av_frame_make_writable failed ! \n");
		av_frame_free(&frame);
		return -1;
	}

	m_pSwsContext = sws_getContext(pFrame->width, pFrame->height,
			(enum AVPixelFormat) pFrame->format, dscW, dscH, dscFormat,
			SWS_BICUBIC, NULL, NULL,
			NULL);

	ret = sws_scale(m_pSwsContext, pFrame->data, pFrame->linesize, 0,
			pFrame->height, frame->data, frame->linesize);

	sws_freeContext(m_pSwsContext);

	*pdscFrame = frame;
	return ret;
}
ffmpeg -pix_fmt nv12 -s 1920x1080 -i 2019-06-03_19_14_25_018_1920x1080.yuv aa.jpg
ffmpeg -pix_fmt nv12 -s 1920x1080 -i aa.jpg yuv.yuv
ffmpeg -pix_fmt nv12 -s 1920x1080 -i 2019-06-03_19_14_25_018_1920x1080.yuv -vf crop=100:300:20:80 bbb.jpg
ffplay -f rawvideo -pixel_format nv12 -video_size 1920x1080 tt.yuv
ffplay -f rawvideo -pixel_format nv12 -video_size 1920x1080 -vf crop=100:100:100:0
ffplay -i test.pcm  -f s16le  -ac 1  -ar 8000
ffplay -i test.g711a  -f alaw  -ac 1  -ar 8000
ffplay -i test.g711u  -f mulaw  -ac 1  -ar 8000
#-ac: 音频通道数
#-ar:音频采样率
#-f: 文件格式

#ffmpeg

播放视频

在windows下请使用ffmpeg4.0.2版本的支持flv格式的HEVC(h265)编码的扩展.

ffplay -i http://xxxx.flv -x 640 -y 480

拉流录像

ffmpeg -i http://xxxx.flv -vcodec copy  out.mp4

不录声音, -an告诉FFmpeg不要复制音频

ffmpeg -i xxxx.mp4 -c:v copy -an out.mp4

推流

ffmpeg -re -i input.mp4 -vcodec copy -f flv -y rtmp://192.168.1.50:1935/camera/test
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值