# TVPlayer
基于FFmpeg的Android移动端音视频播放器,用于学习FFmpeg解码流程以及NDK相关的技术。
## 程序结构
![程序结构](notes/imgs/程序结构.png)
## 功能
视频源m3u8,可能失效,如果失效可到[iptv](https://github.com/iptv-org/iptv)获取最新的源。
## [C/C++基础知识](notes/CAndCPlusPlus.md)
## [JNI](notes/JNI.md)
## [音视频基础知识](notes/音视频基础知识.md )
## FFmpeg
### 下载编译FFmpeg
```sh
wget https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
tar xvf ffmpeg-4.0.2.tar.bz2
# 编译,将notes/build.sh拷贝到ffmpeg-4.0.2,然后进入ffmpeg-4.0.2目录
./build.sh
cd ~/ffmpeg/ffmpeg-4.0.2/android/armeabi-v7a_lsn11
tar cvf ffmpeg.tar *
# 把多个静态库打包成动态库
/root/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/root/android-ndk-r17c/platforms/android-21/arch-arm -shared -o libffmpeg.so -Wl,--whole-archive libavcodec.a libavformat.a libavutil.a libswresample.a libswscale.a libavfilter.a -Wl,--no-whole-archive
```
### [FFmpeg常用结构体](notes/常用结构体.xmind )
### [FFmpeg解码的数据结构](notes/FFmpeg解码的数据结构.xmind)
### [解码流程](notes/解码流程.xmind)
### [视频原生绘制](notes/视频原生绘制.md)
### 音频解码与OpenSL ES播放
> 相关资料:[Android ndk-samples有关使用OpenSLES播放音频的示例](https://github.com/android/ndk-samples/blob/main/native-audio/app/src/main/cpp/native-audio-jni.c)
>
> RGB、YUV:图像原始格式
> PCM:声音原始格式
>
> Android 播放PCM 有以下几种格式:
> 1、java SDK:AudioTrack(AudioRecorder录音)
> 2、NDK:OpenSL ES
### 音视频同步
> 音视频同步方式:
> 1、将视频根据音频同步(以音频为主)
> 2、以视频为主
> 3、以一个外部时间进度为主
>
> I/P/B与pts、bts说明
### 停止与释放
> 暂停:
> java调用一个pause方法,native层 在读取媒体包的时候停止
> 我们的tvplayer可以不用在读取的时候管,因为有:
> if (audioChannel && audioChannel->pkt_queue.size() > 100) {
> av_usleep(1000 * 10);
> continue;
> }
> if (videoChannel && videoChannel->pkt_queue.size() > 100) {
> av_usleep(1000 * 10);
> continue;
> }
>
> 在播放的线程中,用条件变量 wait :pthread_cond_wait(&cond, &mutex);
> resume 就通知 pthread_cond_signal(&cond);
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
基于FFmpeg的Android移动端音视频播放器,用于学习FFmpeg解码流程以及NDK相关的技术 .zip (419个子文件)
libavformat.a 133B
libavcodec.a 133B
libswscale.a 132B
libavutil.a 132B
libswresample.a 131B
libavfilter.a 131B
gradlew.bat 2KB
TVFFmpeg.cpp 8KB
AudioChannel.cpp 8KB
VideoChannel.cpp 7KB
player_jni.cpp 4KB
JavaCallHelper.cpp 2KB
.gitattributes 40B
.gitignore 225B
.gitignore 47B
.gitignore 7B
build.gradle 1KB
build.gradle 546B
settings.gradle 53B
gradlew 5KB
avcodec.h 207KB
avformat.h 115KB
avfilter.h 41KB
opt.h 35KB
pixfmt.h 32KB
avio.h 31KB
frame.h 28KB
mem.h 23KB
hwcontext.h 22KB
swresample.h 21KB
intreadwrite.h 18KB
common.h 16KB
pixdesc.h 15KB
avstring.h 14KB
swscale.h 12KB
imgutils.h 11KB
log.h 11KB
buffer.h 10KB
samplefmt.h 10KB
channel_layout.h 9KB
avutil.h 9KB
hash.h 8KB
dict.h 8KB
spherical.h 8KB
mathematics.h 8KB
bprint.h 8KB
parseutils.h 7KB
encryption_info.h 7KB
buffersrc.h 6KB
buffersink.h 6KB
hwcontext_d3d11va.h 6KB
xvmc.h 6KB
audio_fifo.h 6KB
fifo.h 6KB
rational.h 6KB
vdpau.h 6KB
cpu.h 6KB
error.h 5KB
tree.h 5KB
timecode.h 5KB
eval.h 5KB
stereo3d.h 5KB
version.h 5KB
attributes.h 5KB
hwcontext_drm.h 5KB
version.h 5KB
dirac.h 4KB
videotoolbox.h 4KB
version.h 4KB
mastering_display_metadata.h 4KB
threadmessage.h 4KB
hwcontext_vaapi.h 4KB
qsv.h 4KB
safe_queue.h 4KB
dv_profile.h 4KB
murmur3.h 4KB
display.h 3KB
downmix_info.h 3KB
crc.h 3KB
avfft.h 3KB
hmac.h 3KB
bswap.h 3KB
d3d11va.h 3KB
xtea.h 3KB
mediacodec.h 3KB
timestamp.h 3KB
avdct.h 3KB
file.h 3KB
cast5.h 3KB
sha512.h 3KB
sha.h 2KB
hwcontext_dxva2.h 2KB
blowfish.h 2KB
dxva2.h 2KB
avassert.h 2KB
version.h 2KB
des.h 2KB
md5.h 2KB
vaapi.h 2KB
vorbis_parser.h 2KB
共 419 条
- 1
- 2
- 3
- 4
- 5
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功