问题描述
我正在尝试使用 JavaCV 制作视频播放器。 获取图像后,我现在正在尝试获取音频。
这是我当前的代码:
package robomow;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.sourceDataLine;
import javax.sound.sampled.AudioFormat;
import javax.swing.JOptionPane;
import java.nio.ShortBuffer;
import java.nio.ByteBuffer;
import org.bytedeco.javacv.FrameGrabber.Exception;
import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.Frame;
public class client {
public static void main(String[] args) {
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("rtsp://192.168.101.22:554/stream0?username=UUUUU&password=PPPPP");
grabber.setimageWidth(960);
grabber.setimageHeight(540);
grabber.setFrameRate(25);
grabber.setoption("rtsp_transport","tcp");
grabber.setoption("flags","nobuffer");
grabber.setoption("flags","low_delay");
grabber.setAudioOption("crf","0");
grabber.setAudioBitrate(64000);
grabber.setSampleRate(8000);
grabber.setAudioChannels(1);
grabber.setAudioCodec(avcodec.AV_CODEC_ID_PCM_MULAW);
try {
grabber.start();
} catch (Exception e) {
e.printstacktrace();
}
final CanvasFrame cFrame = new CanvasFrame("Camera Preview",CanvasFrame.getDefaultGamma() / grabber.getGamma());
Frame capturedFrame = null;
final AudioFormat audioFormat = new AudioFormat(grabber.getSampleRate(),16,grabber.getAudioChannels(),true,true);
final DataLine.Info info = new DataLine.Info(SourceDataLine.class,audioFormat);
SourceDataLine soundLine;
try {
soundLine = (SourceDataLine) AudioSystem.getLine(info);
soundLine.open(audioFormat);
soundLine.start();
} catch (LineUnavailableException e2) {
// Todo Auto-generated catch block
e2.printstacktrace();
}
try {
while ((capturedFrame = grabber.grab()) != null)
{
if (cFrame.isVisible())
{
cFrame.showImage(capturedFrame);
}
}
} catch (org.bytedeco.javacv.FFmpegFrameGrabber.Exception e1) {
e1.printstacktrace();
}
cFrame.dispose();
try {
//soundLine.stop();
grabber.stop();
} catch (org.bytedeco.javacv.FFmpegFrameGrabber.Exception e) {
e.printstacktrace();
}
}
}
问题是没有播放音频。 我可以使用 vlc-player 从流中听到音频,没有任何问题。
有人可以建议我做错什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)