首页 > 编程语言 >音视频:JavaCV 视频转码(硬件加速)(GPU)

音视频:JavaCV 视频转码(硬件加速)(GPU)

时间:2022-12-31 11:55:32浏览次数:45  
标签:转码 h264 音视频 grabber qsv JavaCV 硬件加速 recorder

需要进行简单的音视频编程,如果不是特别数据C/C++,那么JavaCV应该是比较好的选择,下面记录一下使用JavaCV 分离AAC视频数据(转封装的方式,不需要转码)的方法。

使用硬件加速编码,需要使用VideoCodecName的方式设置编码器

1. 实现代码

这里需要注意的是编码器设置成h264_qsv,另外格式不能是YUV420,qsv要求必须是AV_PIX_FMT_NV12。

public class Sample11 {

	public static void main(String[] args) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception {
		FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("E:\\lpl.mp4");
		grabber.setVideoCodecName("h264_qsv");
		grabber.start();

		FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(new File("E:\\lpl.h264"), grabber.getImageWidth(), grabber.getImageHeight());
		recorder.setVideoCodecName("h264_qsv");
		recorder.setPixelFormat(avutil.AV_PIX_FMT_NV12);
		recorder.setFormat("h264");
		recorder.start();
		
		Frame frame = null;
		while ((frame = grabber.grab())   != null) {
			if (frame.image != null) {
				recorder.record(frame);
			}
		}
		recorder.close();
		grabber.close();
	}
}

可以通过下面命令查看支持的硬件加速方法:

ffmpeg -hwaccels

如:

Hardware acceleration methods:
dxva2
qsv

标签:转码,h264,音视频,grabber,qsv,JavaCV,硬件加速,recorder
From: https://www.cnblogs.com/michong2022/p/17016400.html

相关文章