标签: android-ffmpeg

在Android上使用FFmpeg

我在Android上编译了FFmpeg(libffmpeg.so).现在我必须构建像RockPlayer这样的应用程序或使用现有的Android多媒体框架来调用FFmpeg.

  1. 你有关于在Android/StageFright上集成FFmpeg的步骤/程序/代码/示例吗?

  2. 您能否指导我如何使用此库进行多媒体播放?

  3. 我有一个要求,我已经有音频和视频传输流,我需要将其提供给FFmpeg并进行解码/渲染.我怎么能在Android上这样做,因为IOMX API是基于OMX的,不能在这里插入FFmpeg?

  4. 另外,我找不到需要用于播放的FFmpeg API的文档.

android ffmpeg stagefright android-ffmpeg

202
推荐指数
6
解决办法
15万
查看次数

ffmpeg for a android(使用教程:"ffmpeg和Android.mk")

我正在尝试为一个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 cross-compiling android-ndk android-ffmpeg

49
推荐指数
2
解决办法
6万
查看次数

ffmpeg命令用于以较小的文件大小以较低的比特率进行更快的编码

我目前在我的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)

video ffmpeg video-encoding android-ffmpeg

12
推荐指数
1
解决办法
2万
查看次数

在 Android 屏幕录制中 - 如何获取每一帧?

我正在使用 MediaRecorder 和 MediaProjection Api 在 android 应用程序中录制屏幕。我无法获得可以通过 rtmp 流发送的每个帧。为了通过 RTMP 流发布,我使用 JAVACV Android 库。

例如 - 在通过相机直播的情况下,我们可以在 onPreviewFrame() 回调中获取每一帧。获取每一帧后,我只需使用 JAVACV 库的 FFmpegFrameRecorder 将每一帧流式传输到 rtmp url。

如何通过屏幕录制实现相同的效果?

任何帮助将不胜感激。提前致谢!

android mediarecorder javacv android-ffmpeg

9
推荐指数
1
解决办法
1571
查看次数

如何为Android设备的所有架构构建FFMPEG?

我正在尝试使用CYGWIN在Windows 8.1中为android 构建ffmpeg

我正在关注这个问题以及如何在Cygwin下编译FFMPEG.我succsessfully编译,但它不生成FFMPEG.so但它生成ffmpeg.exe文件

我不想要任何prebuild ffmpeg库 .我想根据我的要求构建它.

我在CYGWIN BASE中执行此步骤

  1. git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
  2. dos2unix配置
  3. dos2unix build_ffmpeg.sh
  4. 使distclean
  5. ./configure -enable-static -disable-shared
  6. 使
  7. make install

我的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 = $ …

bash android ffmpeg android-ndk android-ffmpeg

8
推荐指数
1
解决办法
986
查看次数

如何使用FFMPEG保存rtsp流而不丢失数据包

我正在使用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)

android ffmpeg rtsp live-streaming android-ffmpeg

7
推荐指数
2
解决办法
8493
查看次数

ffmpeg视频已压缩但无法在浏览器中播放

我已经集成了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

6
推荐指数
1
解决办法
1908
查看次数

Exoplayer FFmpeg 视频解码器

有没有人在 Exoplayer 中构建 FFmpeg 视频解码器?现在他们支持音频解码器,是否还有机会支持视频解码器?

ffmpeg exoplayer android-ffmpeg

6
推荐指数
0
解决办法
859
查看次数

FFmpeg中的不同h264编码器

ffmpeg4.0中,有几个h264编码器.如果你使用./configure --list-encoders | grep "h264",你可以看到它们.

  • h264_amf
  • h264_nvenc
  • h264_omx
  • h264_qsv
  • h264_v4l2m2m
  • h264_vaapi
  • h264_videotoolbox

我不知道它们之间有什么区别.我想使用ffmpeg将本地gif转换为mp4,那么哪个编码器适合我?

ffmpeg h.264 android-ffmpeg

6
推荐指数
1
解决办法
4721
查看次数

在颤振中使用 flutter_ffmpeg 将图像管道传输到视频

我正在尝试从颤动中从相机接收到的图像流中处理图像,然后使用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)

ffmpeg opengl-es flutter android-ffmpeg

6
推荐指数
0
解决办法
415
查看次数