问题标签 [ijkplayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android-mediacodec - IJK MediaCodec 缓冲区 (J4A) 未加载
在使用 ijkmediaplayer 时,未加载来自 J4A 加载器的必要包(如 MediacodecInfo、MediaCodecBufferInfo、java.nio.ByteBuffer、Buffer)这就是为什么我收到资源不足来实例化解码器的错误。
02-21 14:23:59.335 2719-16555/? E/OMX-VDEC-1080P:由于 HW_OVERLOAD 02-21 14:23:59.335 2719-16555/,无法在 OUTPUT 上调用流 E/OMX-VDEC-1080P:empty_this_buffer_proxy 由于硬件过载而失败 02-21 14:23:59.337 2719-16555/? E/OMX-VDEC-1080P:错误:向客户端发送 OMX_ErrorInsufficientResources 02-21 14:23:59.341 2719-16555/?E/OMX-VDEC-1080P:无法 qbuf 到驱动程序 02-21 14:23:59.343 2719-16555/?E/OMX-VDEC-1080P:无法 qbuf 到驱动程序
谁能告诉我为什么没有加载或调用 J4A 缓冲模块?如何解决这个问题?
ios - IJK 播放器(iOS)如何确保播放器始终位于流中的最新点
有没有办法确保当前播放时间尽可能接近实时?例如,如果它正在缓冲 - 我如何确保它再次开始播放时会跳到当前时间?
android - 节目类型已经存在:tv.danmaku.ijk.media.player.AbstractMediaPlayer
我在 app.gradle 中定义了以下 gradles
并且在集成的模块之一中也定义了相同的内容。
当我尝试运行代码时,它会引发如下错误
AGPBI: {"kind":"error","text":"程序类型已经存在:tv.danmaku.ijk.media.player.AbstractMediaPlayer","sources":[{}],"tool":"D8" }
java - Android 9.0 ijkplayer setSpeed 失败
当我尝试在 Android 9.0 上更改视频速度时,它不起作用。仅适用于 9.0 且仅当设置速度超过 1.0 时。我只是使用 mIjkVideoPlayer.setSpeed(1.0)。它适用于 9.0 以下的所有其他设备。ijkplayer 版本:0.8.8,这是错误日志:
11-29 15:55:14.241 6747-6801/com.xiao.nicevieoplayer E/J4A: J4AC_android_media_AudioTrack__setSpeed 1.100000 11-29 15:55:14.241 6747-6801/com.xiao.nicevieoplayer D/AudioTrack: isSampleRateSpeed80 mAfLatency_count denied :1920 mAfSampleRate:48000 sampleRate:44100 speed:1.100000 mFrameCount:3544 < minFrameCount:3888 11-29 15:55:14.241 6747-6801/com.xiao.nicevieoplayer W/AudioTrack: setPlaybackRate(1.100000, 1.000000) 失败11-29 15:55:14.242 6747-6801/com.xiao.nicevieoplayer W/System.err: java.lang.IllegalArgumentException: 参数超出范围 11-29 15:55:14.242 6747-6801/com.xiao.nicevieoplayer W/System.err: at android.media.AudioTrack.native_set_playback_params(Native Method) 11-29 15:55:14.242 6747-6801/com.xiao.nicevieoplayer W/System.err: at android.media.AudioTrack.setPlaybackParams(音轨。java:1902) 11-29 15:55:14.242 6747-6801/com.xiao.nicevieoplayer W/System.err: java.lang.IllegalArgumentException: 参数超出范围 11-29 15:55:14.242 6747-6801/com .xiao.nicevieoplayer W/System.err: at android.media.AudioTrack.native_set_playback_params(Native Method) 11-29 15:55:14.242 6747-6801/com.xiao.nicevieoplayer W/System.err: at android.media. AudioTrack.setPlaybackParams(AudioTrack.java:1902)
merge - 将四个解码帧合并成一个大帧,然后使用ijkplayer显示
谁能帮我提供有关如何合并来自四个不同视频的四个解码帧然后将其发送到显示的建议。
我在 video_refresh() 函数中观察到解码的帧从帧缓冲区中出列
vp = frame_queue_peek(&is->pictq);
然后在里面调用video_display2() , video_image_display2()使用SDL_VoutDisplayYUVoverlay API显示在屏幕上。
我想将从四个视频中获得的四个帧(vp_1、vp_2、vp_3、vp_4)合并到最终帧vp中,然后显示在屏幕上。
谁能告诉我如何实现这一目标。我必须在 ff_ffplay.c 代码中进行哪些修改。任何形式的帮助将不胜感激。
decoding - 使用ijkplayer解码后为什么解码的帧没有Y,U,V帧数据虽然是YUVJ420P
在ijkplayer中,解码后得到的帧没有YUV平面data[0],data[1],data[2]都是null,同样linesize[i],虽然pix_fmt是YUVJ420P。谁能告诉我为什么?
decoding - 如何在ijkplayer中合并两个解码图像并将其显示在同一表面上
如何在使用 ijkplayer 解码时将相同的解码帧合并两次。我的解码帧大小为 4096*2048。我创建了一个大小为 4096*4096 的大叠加层,并希望将同一个框架两次放在另一个之上。这是我在 ijkplayer 中使用的一段代码
src_frame 是 AVFrame* 类型的解码帧。谁能告诉我在合并时我在哪里犯了错误,因为我只能在 android 上看到黑屏。
虽然pix_fmt
是 YUVJ420P 但我无法观察到三个数据平面。data[0]
,data[1]
并且data[2]
都是空指针。
谁能帮助我如何使用 ijkplayer 合并两个解码图像并将其显示在同一表面上。
flutter - 如何在 ijkplayer 中更改 HLS 质量以获得颤振或替代解决方案?
嗨,谁能帮我解决这个问题,我们决定使用flutter ijkplayer,因为它是flutter上唯一支持更改播放速度选项的播放器,但它没有更改hls质量的选项,也没有其他玩家根据我的发现,如果有人知道请分享。
至于我尝试过的,我下载文件并将其拆分为 4 个文件,每个文件只有一个视频和音频流,并使用按钮更改文件。
我还尝试考虑使用播放器从 master 更改曲目,但是虽然 FFMpeg 确实支持这一点,但我不确定如何从颤振中做到这一点。
目前它可以工作,但是拆分是硬编码的,可能需要针对不同的主 m3u8 进行更改(我们使用 vimeo 并期望主 m3u8 具有相同的文件格式,但他们可以在以后更改它,或者我们可以更改视频服务),并且最好从播放器本身更改流,而不是使用外部 ui 按钮,例如在全屏模式下不可用,您希望大多数人都可以在其中观看视频。
我正在尝试使拆分部分更加通用,但想知道其他人如何处理这个问题。
编辑我已经使分裂变得有点动态,但我刚刚遇到了另一个问题,在 ffmpeg 中(在 ijk 播放器中编译它是 4-5 岁而不是最新版本)我必须使用格式选项 - 协议白名单,'http, https, tls, file, crypto, tcp, udp, concat' 所以我可以播放本地文件,但播放器默认设置格式选项 - fflags 'fastseek' 以允许播放速度超过 1,但由于某种原因,该功能会破坏fastseek,或者换句话说,如果我播放本地文件,我不能使用大于 1 的速度,而我可以在从 Internet 播放的文件上使用。
使用这个版本的flutter ijkplayer github
android - 从 Android Sudio 3.2.1 切换到 4.1.2 后的 java.lang.UnsatisfiedLinkError
我有一个使用带有 ffmpeg*.so 库的 IJKPlayer 的 android 应用程序。在一个小型测试应用程序中,IJKPlayer 库是这样的引用:
这适用于 Android Studio 3.2.1。在什么都不做之后,使用 Android Studio 4.1.2 打开项目并构建/运行它,应用程序失败并出现错误:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.nvp.test.nvptest-N7MgBlkuRYXx_vQKF6j4jw==/base.apk"],nativeLibraryDirectories=[/data/app/com.nvp.test.nvptest-N7MgBlkuRYXx_vQKF6j4jw==/lib/arm64, /system/lib64, /system/vendor/lib64]]] couldn't find "libijkffmpeg.so"
知道为什么吗?查看错误消息,这些是android搜索库的目录吗:
/lib/arm64, /system/lib64, /system/vendor/lib64
?
在这种情况下,它必须失败,因为库存储在/lib/armeabi-v7a
. 必须做什么才能让android搜索这条路径?那么,为什么它不适用于 3.2.1 呢?
欢迎任何提示。
android - Android 11 IjkMediaPlayer 和 GiraffePlayer2 问题
我正在使用 GiraffePlayer2,它使用 IjkMediaPlayer 来实现。我在使用lazyLoad 库时在 Android 11 及更高版本上崩溃。这是logcat:-
和其他logcat:-
我正在使用Github上提到的 Proguard 配置。