JavaCV + FFmpeg 播放音视频
- 1、导入JavaCV库
-
- [1.1 使用ffmpeg必要库](#1.1 使用ffmpeg必要库)
- [1.2 简单FFmpeg命令](#1.2 简单FFmpeg命令)
- 待续~~~~
FFmpeg documentation
bytedeco/javacv - GitHub
参考资料:
FFmpeg简易播放器的实现3-音频播放
雷霄骅(leixiaohua1020)的专栏 FFmpeg
1、导入JavaCV库
gradle
下面这种会导入javacv-platform
所有包,非常耗时:https://repo.maven.apache.org/maven2/org/bytedeco/
xml
dependencies {
implementation group: 'org.bytedeco', name: 'javacv-platform', version: '1.5.9'
}
1.1 使用ffmpeg必要库
https://repo.maven.apache.org/maven2/org/bytedeco/
xml
ext {
javacvVersion = '1.5.9'
ffmpegVersion = '6.0'
windowsVersion = 'windows-x86_64'
}
dependencies {
implementation "org.bytedeco:javacpp:${javacvVersion}"
implementation "org.bytedeco:javacpp:${javacvVersion}:${windowsVersion}"
implementation "org.bytedeco:javacv:${javacvVersion}"
implementation "org.bytedeco:ffmpeg:${ffmpegVersion}-${javacvVersion}"
implementation "org.bytedeco:ffmpeg:${ffmpegVersion}-${javacvVersion}:${windowsVersion}"
}
1.2 简单FFmpeg命令
- ffmpeg -i input.avi -hide_banner
java
String url = "C:\\Users\\Administrator\\Desktop\\input.avi";
// 解封装上下文
AVFormatContext pFormatCtx = new AVFormatContext(null);
if (null == pFormatCtx) {
XLog.e("获取解封装上下文失败");
return;
}
// 打开流媒体
if (avformat_open_input(pFormatCtx, url, null, null) != 0) {
XLog.e("打开媒体失败");
return;
}
// 读取流媒体数据,以获得流的信息
if (avformat_find_stream_info(pFormatCtx, (PointerPointer<Pointer>) null) < 0) {
XLog.e("获得媒体流信息失败");
return;
}
// 控制台打印流媒体信息
av_dump_format(pFormatCtx, 0, (BytePointer) null, 0);
- ffplay "Let Me Down Slowly.mp3" -hide_banner 工具播放音乐