我在Android上编译了FFmpeg(libffmpeg.so).现在我必须构建像RockPlayer这样的应用程序或使用现有的Android多媒体框架来调用FFmpeg.
你有关于在Android/StageFright上集成FFmpeg的步骤/程序/代码/示例吗?
您能否指导我如何使用此库进行多媒体播放?
我有一个要求,我已经有音频和视频传输流,我需要将其提供给FFmpeg并进行解码/渲染.我怎么能在Android上这样做,因为IOMX API是基于OMX的,不能在这里插入FFmpeg?
另外,我找不到需要用于播放的FFmpeg API的文档.
我正在尝试为一个android编译ffmpeg.我找到了几个关于这个主题的帖子,但是这些帖子似乎没有用.如果尝试构建ffmpeg,就像发布在[1]上一样.有没有人使用这些教程成功编译ffmpeg?我不知道如何实现第4步到第5步.
第4步:配置......
第5步:cd到你的NDK根目录,输入make TARGET_ARCH = arm APP = ffmpeg-org
在我看来,在步骤5的教程中解释构建类似的应用程序需要一些先前的步骤.不幸的是我在文件夹中没有应用程序.我正在使用当前的android ndk版本3并检查了[3]和[4]中的实际ffmpeg版本.我很感谢你的每一个建议.
[1] http://slworkthings.wordpress.com/
[2]http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android
[3]http://ffmpeg.org/download.html
我目前在我的Android应用程序上使用ffmpeg的实现.我允许用户在我的应用程序中拍摄短视频,然后当他们将它们上传到服务器时,我正在使用ffmpeg来缩小它们以减小文件大小,因此它们不会通过网络传递大量数据.
问题是,它需要永远在Android设备上编码视频.这些视频通常不超过45秒,编码可能需要20分钟.我已经在ffmpeg命令行上玩了一些不同的开关/参数,我现在可以在更舒适的时间使用它,但文件大小要大得多.我只是不确定我应该使用哪种编解码器(编码速度最快但输出质量不错),ffmpeg如何根据编码速度等处理大小(宽高比)的变化.
这是我一直在使用的两个命令.第一个输出我想要的文件大小/质量,但它只需要太长时间来编码,更不用说它使我的设备变得非常热,而它的编码时间如此之长:
ffmpeg -i input.mp4 -b:v 1024k -c:a copy -vf scale=960:540 output.mp4
Run Code Online (Sandbox Code Playgroud)
我已经调整了一些比特率,并将比例尺改为更小的尺寸,但我不想让视频非常小(在比例方面)以实现更快的编码.第二个命令的速度要快得多,但文件大小要大得多:
ffmpeg -i input.mp4 -vcodec libx264 -preset fast -c:a copy -s 960x540 output.mp4
Run Code Online (Sandbox Code Playgroud)
我想找到一个快乐的媒体(较小的文件大小,但编码更快)保持视频比例尺寸接近原始.ffmpeg只有很多不同的参数/开关,很难围绕我应该做的事情.
编辑:添加ffmpeg输出.
ffmpeg -i input.mp4 -vcodec libx264 -crf 30 -preset veryfast -c:a copy -s 960x540 output.mp4
09-13 11:06:28.330 10881-10881/someapp D/home: ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
09-13 11:06:28.330 10881-10881/someapp D/home: built with gcc 4.8 (GCC)
09-13 11:06:28.331 10881-10881/someapp D/home: configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi …Run Code Online (Sandbox Code Playgroud) 我正在使用 MediaRecorder 和 MediaProjection Api 在 android 应用程序中录制屏幕。我无法获得可以通过 rtmp 流发送的每个帧。为了通过 RTMP 流发布,我使用 JAVACV Android 库。
例如 - 在通过相机直播的情况下,我们可以在 onPreviewFrame() 回调中获取每一帧。获取每一帧后,我只需使用 JAVACV 库的 FFmpegFrameRecorder 将每一帧流式传输到 rtmp url。
如何通过屏幕录制实现相同的效果?
任何帮助将不胜感激。提前致谢!
我正在尝试使用CYGWIN在Windows 8.1中为android 构建ffmpeg
我正在关注这个问题以及如何在Cygwin下编译FFMPEG.我succsessfully编译,但它不生成FFMPEG.so但它生成ffmpeg.exe文件
我不想要任何prebuild ffmpeg库 .我想根据我的要求构建它.
我在CYGWIN BASE中执行此步骤
我的build_ffmpeg.sh是
#!/斌/庆典
NDK =/cygdrive/e/android/sdk/ndk-bundle PLATFORM = $ NDK/platforms/android-24/arch-arm TOOLCHAIN = $ NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows CPU = arm PREFIX = $(pwd)/ android/$ CPU ADDI_CFLAGS =" - marm"
pushd ffmpeg #configure ./configure\--target-os = android\--prefix = $ PREFIX\--enable-cross-compile\--enable-runtime-cpudetect\--disable-asm\--arch = arm\--cc = $ TOOLCHAIN/bin/arm-linux-androideabi-gcc\--cross-prefix = $ TOOLCHAIN/bin/arm-linux-androideabi-\--disable-stripping\--nm = $ TOOLCHAIN/bin/arm-linux-androideabi-nm\--sysroot = $ …
我正在使用FFMPEG保存直播相机的流.当我试图保存视频时,一些数据包丢失,因此视频无法正常播放.我正在使用以下FFMPEG 库
我发送的命令是 -
String[] cmd = {"-y", "-i", "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov", "-c:v", "libx264", "-acodec", "aac","-t", time, file_path};
execFFmpegBinary(cmd);
Run Code Online (Sandbox Code Playgroud)
我也尝试这个命令,但结果是一样的
String[] cmd = { "-y", "-rtsp_transport", "tcp", "-i", "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov", "-c:v", "libx264", "-preset", "slow", "-b:v", "500k", "-maxrate", "500k", "-bufsize", "3000k", "-vf", "scale=-1:480", "-threads", "0", "-codec:a", "libfdk_aac", "-b:a", "128k", "-t", time, file_path};
Run Code Online (Sandbox Code Playgroud)
这是命令输出的日志 -
07-15 15:16:55.180 25713-25713/com.github.sampleffmpeg V/output: progress : [rtsp @ 0x420391c0] max delay reached. need to consume packet
07-15 15:16:55.180 25713-25713/com.github.sampleffmpeg V/output: progress : [NULL @ 0x4203ba00] RTP: missed 455 packets
07-15 …Run Code Online (Sandbox Code Playgroud) 我已经集成了ffmpeg4android lib. 视频压缩工作正常,但视频无法在除 safari 浏览器之外的浏览器中播放。上传到服务器后。我使用了以下命令。
ffmpeg -y -i <input file.mp4> -strict experimental -r 30 -ab 48000 -ac 2 -ar 22050 -vcodec mpeg4 -b 2097k <output file.mp4>
Run Code Online (Sandbox Code Playgroud)
请帮我。先感谢您。
android ffmpeg android-studio android-ffmpeg video-compression
有没有人在 Exoplayer 中构建 FFmpeg 视频解码器?现在他们支持音频解码器,是否还有机会支持视频解码器?
在ffmpeg4.0中,有几个h264编码器.如果你使用./configure --list-encoders | grep "h264",你可以看到它们.
我不知道它们之间有什么区别.我想使用ffmpeg将本地gif转换为mp4,那么哪个编码器适合我?
我正在尝试从颤动中从相机接收到的图像流中处理图像,然后使用flutter_ffmpeg. 我可以打开管道,但代码没有响应,这是代码
controller.startImageStream((CameraImage camimage) {
//do manipulations and get pointer of the data returned from the function to a List
List imgData = add_filters_and_text(camimage);
imglib.Image img = imglib.Image.fromBytes(_savedImage.height, _savedImage.width, imgData);
_flutterFFmpegConfig.registerNewFFmpegPipe().then((pipe1) {
print("New ffmpeg pipe at $pipe1");
var exec0 = "-y -i " + pipe1 + " -filter:v loop=loop=25*3:size=1 -c:v mpeg4 -r 25 file2.mp4";
_flutterFFmpeg.execute(exec0).then((rc0){
// how to pass frame??
});
});
Run Code Online (Sandbox Code Playgroud) android-ffmpeg ×10
ffmpeg ×9
android ×6
android-ndk ×2
bash ×1
exoplayer ×1
flutter ×1
h.264 ×1
javacv ×1
opengl-es ×1
rtsp ×1
stagefright ×1
video ×1