Coder Social home page Coder Social logo

cnsuhao / kkplayer Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 2.0 181.8 MB

License: Other

C++ 44.69% C 52.64% HTML 0.95% Java 0.17% Makefile 0.10% Assembly 0.52% R 0.01% Logos 0.01% Perl 0.01% Objective-C 0.34% Mathematica 0.08% JavaScript 0.18% CSS 0.05% Shell 0.01% Batchfile 0.01% Roff 0.03% CMake 0.04% QMake 0.08% Python 0.01% Objective-C++ 0.09%

kkplayer's Introduction

KKPlayer一个基于ffmpeg的视频播放器,目前移植到windows,android
希望大家多多交流 QQ群:342276504
windows:vs2008编译通过。
Android:android studio1.5 编译通过。
项目组成
KKPlayerCore 播放器核心代码
KKplayer项目是基于KKPlayerCore写的Windows例子
KKPlayerAndroid项目是基于KKPlayerCore写的android例子
Windows版本:生成的正式文件在release下,调试的在debug下。界面库采用SOUI2
IOS版本正在筹划中.
windows 编译需要定义环境变量
KKWinSdkPath,KKWinDx9Path和KKSoui2Path
dxsdk10(d3d9)下载地址:http://pan.baidu.com/s/1kV0vmVP
soui2下载地址:https://git.oschina.net/Qyerp/soui
例如
KKWinDx9Path=C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)
KKWinSdkPath=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A
KKSoui2Path=D:\work\Projects\soui

项目生成顺序:
libmfx(inter QSV编码)->zlibstat->png->skia->sdl->render->kkplayercore->kkui->jsoncpp->kkplayer
rtmpt延迟格式控制请使用以下格式librtmp:rtmp:xxxxxxxxxxxxxxxxxxxxxx

需要在avcodec.h添加以下两个函数声明: int av_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt);
int av_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags);
在utils.c里实现
int av_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt)
{ return ff_get_format(avctx, fmt);
}
int av_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
{ return ff_get_buffer(avctx, frame, flags);
}
ffmpeg3.0 以上版本Android编译
如果直接按照未修改的配置进行编译,结果编译出来的so文件类似libavcodec.so.55.39.101,版本号位于so之后,Android上似乎无法加载。
因此需要按如下修改:
将configure文件中的如下四行:
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'
替换为:
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

sh:
#!/bin/bash
export TMPDIR=/home/ubuntu64/FFmpeg/Tmep
NDK=/home/ubuntu64/FFmpeg/android-ndk-r10
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
function build_one
{
./configure <br/> --prefix=/home/ubuntu64/FFmpeg/ff3.1.2Jni <br/> --enable-shared <br/> --disable-static <br/> --disable-doc <br/> --disable-ffserver <br/> --enable-cross-compile <br/> --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- <br/> --target-os=linux <br/> --arch=arm <br/> --disable-encoders <br/> --sysroot=$SYSROOT <br/> --extra-cflags="-Os -fpic $ADDI_CFLAGS" <br/> --extra-ldflags="$ADDI_LDFLAGS" <br/> --enable-protocol=rtmp
$ADDITIONAL_CONFIGURE_FLAG
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one

windowVc(Vs2010)编译ffmpeg(https://ffmpeg.org/platform.html#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows)
3.3:./configure的3580行修改为:
if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
cc_default="cl"
else
cc_default="c99wrap cl"
fi
cc_default="c99wrap cl"
例如(启用共享库,关闭所有编码器):
3.4:./configure的3774行修改为:
cl_major_ver=$(cl 2>&1 | sed -n 's/.Version ([[:digit:]]{1,})../\1/p')
if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then
cc_default="cl"
cxx_default="cl"
else
cc_default="c99wrap cl"
cxx_default="c99wrap cl"
fi
cc_default="c99wrap cl"
cxx_default="c99wrap cl"

./configure --toolchain=msvc --extra-cflags='-IC:/msinttypes' --prefix='./ffmpegBin' --incdir='./ffmpegBin/incdir' --enable-shared --disable-ffplay --disable-ffprobe --disable-ffserver
更新日志:
2017-5-23
     移除srslibrtmpplugin. 添加librtmpplugin
     支持视频分片(像优酷那种视频分片)
     整合FFmpeg的mediacode解码
     intermedia h264解码
     ffmpge更新到3.3.2
2017-5-30
     windows 添加libkkplayer库。支持无窗口dui渲染,或者以窗口进行渲染
     修改sdl1支持同时创建多个音频渲染器
     修正渲染器一些bug
2017-7-14
     windows libkkplayer库,回调数据做修改,添加新的接口
       d3d9 4k渲染优化,修正qsv 解码265
     android 添加更多的接口
2017-10-20
     win界面修正,小小bug修复。
2017-11-29
     音视频解码使用新版FFmpeg接口。
     FFmpeg库更新到3.4。
     Kkplayer1.1.0分支建立。

kkplayer's People

Contributors

ls-saint avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.