githubhaohao / learnffmpeg Goto Github PK
View Code? Open in Web Editor NEWAndroid FFmpeg 音视频开发教程
Android FFmpeg 音视频开发教程
是重采样的时候的问题吗?
有人能给一个编译好的apk吗,谢谢
编译环境 AS 4.1+,NDK r21
你好,我这边使用glReadPixels抓取的一帧数据,
int width = 1920;
int height = 870;
int frameRate = 60;
int fmt_size = sizeof(unsigned char) * 4;
int row_size = width * fmt_size;
int bufferSize = width * height * fmt_size * 2;
HANDLE hEvent;
unsigned char *_data;
unsigned char *_tmpdata = new unsigned char[bufferSize];
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE /0x8035/,
_tmpdata);
for (int i = 0; i < height; i++) {
memcpy(&_data[i * row_size], &_tmpdata[(height - i - 1) * row_size],
row_size);
}
EncoderManager::getInstance().encode(_tmpdata, width, height);
先进行转换YUV, scale时报错了。 传入的宽高是一个固定的值: 1920*870, 帮给看看
AVFrame *EncoderManager::toAVFrame(unsigned char *data, int width, int height) {
AVFrame *avFrame = av_frame_alloc();
av_image_alloc(avFrame->data, avFrame->linesize, width,
height, encoder->getCodecContext()->pix_fmt, 1);
std::int32_t row_pitch {};
row_pitch = width * 4;
const int linessizes[2] {
row_pitch, 0
};
const uint8_t *tmp[2] = { (uint8_t *)data, NULL };
SwsContext *sws = sws_getContext(width, height, AV_PIX_FMT_RGBA, width, height,
AV_PIX_FMT_YUV420P, SWS_FAST_BILINEAR, NULL, NULL, NULL);
int ret = sws_scale(sws, tmp, linessizes, 0, encoder->getCodecContext()->height,
avFrame->data, avFrame->linesize);
printfString("toAVFrame scale", ret);
return avFrame;
}
EncoderManager::encode:1920, 870
toAVFrame scale error code:870, mean:Error number 870 occurred
encode sw
MediaCodec::queueInputToEncoder::error input to encoder
queueInputToEncoder result error code:-1, mean:Operation not permitted
EncoderManager::run:frameCount:1
原生的ffmpeg播放rtsp延时 200+ms,这个demo怎么延时了3~4s?是因为加锁的问题吗?
`Execution failed for task ':app:externalNativeBuildDebug'.
Build command failed.
Error while executing process C:\Users\Administrator\AppData\Local\Android\Sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build C:\Users\Administrator\Desktop\LearnFFmpeg\app.cxx\cmake\debug\arm64-v8a --target learn-ffmpeg}
[1/1] Linking CXX shared library C:\Users\Administrator\Desktop\LearnFFmpeg\app\build\intermediates\cmake\debug\obj\arm64-v8a\liblearn-ffmpeg.so
FAILED: cmd.exe /C "cd . && C:\Users\Administrator\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android21 --gcc-toolchain=C:/Users/Administrator/AppData/Local/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=C:/Users/Administrator/AppData/Local/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -std=c++11 -frtti -fexceptions -std=gnu++11 -fno-limit-debug-info -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,liblearn-ffmpeg.so -o C:\Users\Administrator\Desktop\LearnFFmpeg\app\build\intermediates\cmake\debug\obj\arm64-v8a\liblearn-ffmpeg.so CMakeFiles/learn-ffmpeg.dir/learn-ffmpeg.cpp.o CMakeFiles/learn-ffmpeg.dir/util/GLUtils.cpp.o CMakeFiles/learn-ffmpeg.dir/common/AVPacketQueue.cpp.o CMakeFiles/learn-ffmpeg.dir/player/FFMediaPlayer.cpp.o CMakeFiles/learn-ffmpeg.dir/player/HWCodecPlayer.cpp.o CMakeFiles/learn-ffmpeg.dir/player/PlayerWrapper.cpp.o CMakeFiles/learn-ffmpeg.dir/player/decoder/AudioDecoder.cpp.o CMakeFiles/learn-ffmpeg.dir/player/decoder/DecoderBase.cpp.o CMakeFiles/learn-ffmpeg.dir/player/decoder/VideoDecoder.cpp.o CMakeFiles/learn-ffmpeg.dir/player/render/video/NativeRender.cpp.o CMakeFiles/learn-ffmpeg.dir/player/render/video/VRGLRender.cpp.o CMakeFiles/learn-ffmpeg.dir/player/render/video/VideoGLRender.cpp.o CMakeFiles/learn-ffmpeg.dir/player/render/audio/AudioGLRender.cpp.o CMakeFiles/learn-ffmpeg.dir/player/render/audio/OpenSLRender.cpp.o CMakeFiles/learn-ffmpeg.dir/recorder/SingleVideoRecorder.cpp.o CMakeFiles/learn-ffmpeg.dir/recorder/SingleAudioRecorder.cpp.o CMakeFiles/learn-ffmpeg.dir/recorder/MediaRecorderContext.cpp.o CMakeFiles/learn-ffmpeg.dir/recorder/GLCameraRender.cpp.o CMakeFiles/learn-ffmpeg.dir/recorder/MediaRecorder.cpp.o -LC:/Users/Administrator/Desktop/LearnFFmpeg/app/src/main/cpp/../jniLibs/arm64-v8a -lavformat -lavcodec -lavfilter -lswresample -lswscale -lavutil -lfdk-aac -lx264 -landroid -lmediandk -lEGL -lGLESv3 -lOpenSLES -llog -lm -lz -latomic -lm && cd ."
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol ff_cos_32; recompile with -fPIC
`
播放器边播边录 目前不支持 录制声音啊 ,视频是可以录制 ,希望大佬可以补上这部分功能
15秒的录制中后5秒声音和图像不同步,声音远快于录像。
编译的时候,找不到 openGL的库
/Users/yummylau/ffmpeg/android-ndk-r21b/toolchains/llvm/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: error: cannot find -lGLESv3
ndkVersion "21.4.7075529"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.