Top Related Projects
This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
Android开源弹幕引擎·烈焰弹幕使 ~
视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,16k page size,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。
业内为数不多致力于极致体验的超强全自研跨平台(windows/linux/android/iOS)流媒体内核,通过模块化自由组合,支持实时RTMP推流、RTSP推流、RTMP播放器、RTSP播放器、录像、多路流媒体转发、音视频导播、动态视频合成、音频混音、直播互动、内置轻量级RTSP服务等,比快更快,业界真正靠谱的超低延迟直播SDK(1秒内,低延迟模式下200~400ms)。
Infinite cycle ViewPager with two-way orientation and interactive effect.
Quick Overview
JiaoZiVideoPlayer is an open-source Android video player library that provides a customizable and feature-rich video playback experience. It offers a simple API for integration into Android applications and supports various video formats and streaming protocols.
Pros
- Easy integration with Android projects
- Customizable UI and controls
- Supports multiple video formats and streaming protocols
- Includes features like full-screen mode, gesture controls, and adaptive playback
Cons
- Limited documentation in English
- Some reported issues with memory leaks in older versions
- May require additional configuration for certain video formats or streaming services
- Not actively maintained (last update was in 2021)
Code Examples
- Basic video playback:
Jzvd.setVideoImageDisplayType(Jzvd.VIDEO_IMAGE_DISPLAY_TYPE_ADAPTER);
JzvdStd jzvdStd = findViewById(R.id.jz_video);
jzvdStd.setUp("http://example.com/video.mp4", "Video Title");
jzvdStd.startVideo();
- Customizing player appearance:
JzvdStd jzvdStd = findViewById(R.id.jz_video);
jzvdStd.posterImageView.setScaleType(ImageView.ScaleType.FIT_XY);
jzvdStd.backButton.setVisibility(View.GONE);
- Handling fullscreen mode:
@Override
public void onBackPressed() {
if (Jzvd.backPress()) {
return;
}
super.onBackPressed();
}
Getting Started
- Add the JiaoZiVideoPlayer dependency to your app's
build.gradle
:
dependencies {
implementation 'cn.jzvd:jiaozivideoplayer:7.7.0'
}
- Add the JzvdStd view to your layout XML:
<cn.jzvd.JzvdStd
android:id="@+id/jz_video"
android:layout_width="match_parent"
android:layout_height="200dp"/>
- Initialize and start the video in your Activity or Fragment:
JzvdStd jzvdStd = findViewById(R.id.jz_video);
jzvdStd.setUp("http://example.com/video.mp4", "Video Title");
jzvdStd.startVideo();
- Override
onPause()
,onResume()
, andonDestroy()
in your Activity:
@Override
protected void onPause() {
super.onPause();
Jzvd.releaseAllVideos();
}
@Override
protected void onResume() {
super.onResume();
Jzvd.goOnPlayOnResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
Jzvd.releaseAllVideos();
}
Competitor Comparisons
This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
Pros of ExoPlayer
- More comprehensive and feature-rich, supporting a wide range of media formats and streaming protocols
- Backed by Google, ensuring regular updates and extensive documentation
- Highly customizable and extensible, allowing developers to create custom components
Cons of ExoPlayer
- Steeper learning curve due to its complexity and extensive API
- Larger library size, which may impact app size and performance for simpler use cases
Code Comparison
ExoPlayer:
val player = SimpleExoPlayer.Builder(context).build()
player.setMediaItem(MediaItem.fromUri(videoUri))
player.prepare()
player.play()
JiaoZiVideoPlayer:
JzvdStd jzvdStd = findViewById(R.id.videoplayer);
jzvdStd.setUp("http://jzvd.nathen.cn/video.mp4", "Title");
jzvdStd.startVideo();
Summary
ExoPlayer offers a more robust and feature-rich solution for advanced media playback needs, while JiaoZiVideoPlayer provides a simpler implementation for basic video playback. ExoPlayer's extensive capabilities come at the cost of increased complexity and library size, whereas JiaoZiVideoPlayer offers a more straightforward approach for developers with simpler requirements.
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
Pros of ijkplayer
- More comprehensive and feature-rich, supporting a wide range of video formats and protocols
- Better performance and lower latency, especially for live streaming
- Larger community and more frequent updates
Cons of ijkplayer
- More complex to integrate and use, requiring more setup and configuration
- Larger library size, which may increase app size
- Steeper learning curve for developers new to video playback
Code Comparison
JiaoZiVideoPlayer:
Jzvd.setVideoImageDisplayType(Jzvd.VIDEO_IMAGE_DISPLAY_TYPE_ADAPTER);
JzvdStd jzvdStd = findViewById(R.id.jz_video);
jzvdStd.setUp("http://example.com/video.mp4", "Video Title");
jzvdStd.startVideo();
ijkplayer:
IjkMediaPlayer ijkMediaPlayer = new IjkMediaPlayer();
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "mediacodec", 1);
ijkMediaPlayer.setDataSource("http://example.com/video.mp4");
ijkMediaPlayer.prepareAsync();
ijkMediaPlayer.start();
JiaoZiVideoPlayer offers a simpler API for basic video playback, while ijkplayer provides more low-level control and customization options. ijkplayer requires more setup but offers greater flexibility for advanced use cases.
Android开源弹幕引擎·烈焰弹幕使 ~
Pros of DanmakuFlameMaster
- Specialized in handling danmaku (bullet comments) for video players
- Highly optimized for performance and efficiency
- Extensive customization options for danmaku appearance and behavior
Cons of DanmakuFlameMaster
- Focused solely on danmaku functionality, not a complete video player solution
- Steeper learning curve due to its specialized nature
- May require integration with other libraries for full video playback features
Code Comparison
DanmakuFlameMaster:
DanmakuContext config = DanmakuContext.create();
config.setDanmakuStyle(IDisplayer.DANMAKU_STYLE_STROKEN, 3)
.setDuplicateMergingEnabled(false)
.setScrollSpeedFactor(1.2f)
.setScaleTextSize(1.2f);
JiaoZiVideoPlayer:
JzvdStd jzvdStd = findViewById(R.id.videoplayer);
jzvdStd.setUp("http://jzvd.nathen.cn/video.mp4", "Title");
jzvdStd.startVideo();
DanmakuFlameMaster focuses on configuring danmaku settings, while JiaoZiVideoPlayer provides a simpler API for basic video playback. JiaoZiVideoPlayer offers a more comprehensive video player solution but lacks specialized danmaku support. The choice between the two depends on whether danmaku functionality is a primary requirement or if a general-purpose video player is sufficient.
视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,16k page size,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片 头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。
Pros of GSYVideoPlayer
- More comprehensive feature set, including support for various video formats and playback modes
- Better documentation and examples, making it easier for developers to implement
- More frequent updates and active community support
Cons of GSYVideoPlayer
- Larger library size, which may impact app performance and size
- Steeper learning curve due to more complex API and configuration options
- May be overkill for simple video playback needs
Code Comparison
JiaoZiVideoPlayer:
JzvdStd jzvdStd = findViewById(R.id.jz_video);
jzvdStd.setUp("http://jzvd.nathen.cn/c6e3dc12a1154626b3476d9bf3bd7266/6b56c5f0dc31428083757a45764763b0-5287d2089db37e62345123a1be272f8b.mp4"
, "Title");
jzvdStd.posterImageView.setImage("http://p.qpic.cn/videoyun/0/2449_43b6f696980311e59ed467f22794e792_1/640");
GSYVideoPlayer:
StandardGSYVideoPlayer videoPlayer = findViewById(R.id.video_player);
videoPlayer.setUp("http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4", true, "Title");
videoPlayer.setLooping(true);
videoPlayer.getBackButton().setVisibility(View.GONE);
videoPlayer.startPlayLogic();
Both libraries offer similar basic functionality, but GSYVideoPlayer provides more customization options and features out of the box.
业内为数不多致力于极致体验的超强全自研跨平台(windows/linux/android/iOS)流媒体内核,通过模块化自由组合,支持实时RTMP推流、RTSP推流、RTMP播放器、RTSP播放器、录像、多路流媒体转发、音视频导播、动态视频合成、音频混音、直播互动、内置轻量级RTSP服务等,比快更快,业界真正靠谱的超低延迟直播SDK(1秒内,低延迟模式下200~400ms)。
Pros of SmarterStreaming
- More comprehensive streaming solution, including both live streaming and video playback
- Supports multiple platforms (Android, iOS, Windows, Linux)
- Offers advanced features like hardware acceleration and low-latency streaming
Cons of SmarterStreaming
- Less focused on simple video playback compared to JiaoZiVideoPlayer
- May have a steeper learning curve due to its broader feature set
- Documentation primarily in Chinese, which may be challenging for non-Chinese speakers
Code Comparison
JiaoZiVideoPlayer (simple video playback):
Jzvd.setVideoImageDisplayType(Jzvd.VIDEO_IMAGE_DISPLAY_TYPE_ADAPTER);
JzvdStd jzvdStd = findViewById(R.id.jz_video);
jzvdStd.setUp("http://example.com/video.mp4", "Video Title");
jzvdStd.startVideo();
SmarterStreaming (video playback with more options):
SmartPlayerJniV2 player = new SmartPlayerJniV2();
player.setVideoDecoderMode(Constants.DANIULIVE_DECODE_HW);
player.setRenderType(Constants.RENDER_TYPE_SURFACEVIEW);
player.startPlay("rtmp://example.com/live/stream");
player.setFastStartup(true);
Both libraries offer video playback functionality, but SmarterStreaming provides more configuration options and supports various streaming protocols. JiaoZiVideoPlayer focuses on simplicity and ease of use for basic video playback scenarios.
Infinite cycle ViewPager with two-way orientation and interactive effect.
Pros of InfiniteCycleViewPager
- Offers infinite scrolling functionality for ViewPager
- Provides smooth animations and transitions between pages
- Supports both horizontal and vertical orientations
Cons of InfiniteCycleViewPager
- Limited to image-based content, unlike JiaoZiVideoPlayer's video support
- May have higher memory usage due to infinite scrolling implementation
- Less actively maintained compared to JiaoZiVideoPlayer
Code Comparison
InfiniteCycleViewPager:
InfiniteCycleViewPager infiniteCycleViewPager = findViewById(R.id.infinite_cycle_view_pager);
infiniteCycleViewPager.setAdapter(new MyPagerAdapter(this));
infiniteCycleViewPager.setScrollDuration(500);
infiniteCycleViewPager.setMediumScaled(true);
infiniteCycleViewPager.setMaxPageScale(0.8f);
JiaoZiVideoPlayer:
JzvdStd jzvdStd = findViewById(R.id.videoplayer);
jzvdStd.setUp("http://jzvd.nathen.cn/video/1.mp4", "Title");
jzvdStd.posterImageView.setImage("http://p.qpic.cn/videoyun/0/2449_43b6f696980311e59ed467f22794e792_1/640");
The code snippets demonstrate the basic setup for each library. InfiniteCycleViewPager focuses on configuring the ViewPager with custom properties, while JiaoZiVideoPlayer emphasizes setting up video playback with a URL and thumbnail image.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Top Related Projects
This project is deprecated and stale. The latest ExoPlayer code is available in https://github.com/androidx/media
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
Android开源弹幕引擎·烈焰弹幕使 ~
视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,16k page size,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例, 多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。
业内为数不多致力于极致体验的超强全自研跨平台(windows/linux/android/iOS)流媒体内核,通过模块化自由组合,支持实时RTMP推流、RTSP推流、RTMP播放器、RTSP播放器、录像、多路流媒体转发、音视频导播、动态视频合成、音频混音、直播互动、内置轻量级RTSP服务等,比快更快,业界真正靠谱的超低延迟直播SDK(1秒内,低延迟模式下200~400ms)。
Infinite cycle ViewPager with two-way orientation and interactive effect.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot