bytedeco/javacv

How to set encoding parameters for video and audio on Android?

Open

#1,405 opened on Apr 23, 2020

View on GitHub
 (10 comments) (0 reactions) (0 assignees)Java (1,583 forks)batch import
help wantedquestion

Repository metrics

Stars
 (6,985 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

Have 2 usb cameras, which has different resolution, and the one lower was able to push both video and audio to rtmp server but the higher one only worked with video while audio just behaved noisy. Following is my code:

	private int imageWidth = 640;
	private int imageHeight = 480;
	private int frameRate = 28;
        private int sampleAudioRateInHz = 44100;
private void initRecorder() {


		recorder = new FFmpegFrameRecorder(ffmpegLink, imageWidth, imageHeight, 1);

		recorder.setInterleaved(true);


		recorder.setVideoOption("tune", "zerolatency");


		recorder.setVideoOption("preset", "fast");


		recorder.setVideoOption("crf", "25");

		recorder.setVideoBitrate(1000000);


		recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);

		recorder.setFormat("flv");


		recorder.setFrameRate(frameRate);

		recorder.setGopSize(frameRate * 2);


//		recorder.setAudioOption("crf", "0");


//		recorder.setAudioBitrate(192000);
		recorder.setAudioBitrate(64000);


//		recorder.setAudioQuality(0);

		recorder.setSampleRate(sampleAudioRateInHz);


//		recorder.setAudioChannels(2);

		recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
	}

Contributor guide