最近接触了 javacv 准备弄一个 mp4 切片 m3u8 的工具。
网上找了一些资料,也直接扣了别人的 demo 来运行。
但是最终出来的视频播放效果都很模糊
不知道是不是哪里姿势不对 有大佬能指点一下吗
public static void hls(String input) throws Exception, org.bytedeco.javacv.FrameGrabber.Exception {
FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(input);
grabber.start();
int frameRate = 25;
String output="D:\\test\\hls";
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(output+"\\index.m3u8", grabber.getImageWidth(), grabber.getImageHeight(), grabber.getAudioChannels());
recorder.setFormat("hls");
recorder.setOption("hls_time", "2");
recorder.setOption("hls_list_size", "0");
recorder.setOption("hls_segment_type", "mpegts");
recorder.setOption("strftime", "1");
recorder.setOption("hls_segment_filename", output+"\\%Y%m%d_%H%M%S.ts");
recorder.setFrameRate(frameRate);//设置帧率
recorder.setGopSize(2 * frameRate);//设置 gop
recorder.setVideoQuality(1.0); //视频质量
recorder.setVideoBitrate(3000);//码率
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
recorder.setAudioCodec(avcodec.AV_CODEC_ID_AAC);
recorder.start();
Frame frame = null;
// 只抓取图像画面
for (; (frame = grabber.grabImage()) != null; ) {
try {
recorder.record(frame);
} catch (org.bytedeco.javacv.FrameRecorder.Exception e) {
e.printStackTrace();
}
}
recorder.close();
grabber.close();
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.