Articles of ffmpeg

使用FFMPEG和JNI压缩video

我想创建一个Android应用程序,它可以find一个video文件(超过300 MB)并将其压缩到较小的mp4文件。 我已经尝试用这个做了 由于您要压缩小尺寸video(低于100 mb),因此本教程非常有效 所以我尝试使用JNI实现它。 我设法用这个来构建ffmpeg 但目前我想做的是压缩video。 我对JNI知之甚少。 但我尝试使用以下链接了解它 如果有人可以指导我在打开文件之后压缩video的步骤,那么使用非常棒的JNI,谢谢

如何在Vigo Video Hypstar等摄像机上实时预览录像机

我想用Gif或图像像Vigo更改Surface预览底部叠加层 喜欢这个 请告诉我任何sdk或我用于此filter的内容 我可以使用此更改顶视图上的叠加层 这有帮助 PictureCallback cameraPictureCallbackJpeg = new PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { // TODO Auto-generated method stub Bitmap cameraBitmap = BitmapFactory.decodeByteArray (data, 0, data.length); int wid = cameraBitmap.getWidth(); int hgt = cameraBitmap.getHeight(); // Toast.makeText(getApplicationContext(), wid+””+hgt, Toast.LENGTH_SHORT).show(); Bitmap newImage = Bitmap.createBitmap (wid, hgt, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(newImage); […]

FFMPEG具有硬件编解码器支持

我在Android 2.2上使用ffmpeg构建了一个简单的媒体播放器。 硬件是基于arm cortex-a8的1GHz处理器,512 MB RAM。 我的性能很低,大约15 FPS的800×600 mp4video。 关于如何提高性能,我有几个问题 如何使用目标设备上提供的硬件编解码器。 如何配置ffmpeg以使用可用的硬件解码器? GPU或图形驱动程序是否必须公开一些标准API,如OpenMax IL才能实现这一目标? 构建ffmpeg时应该启用哪些选项,以便可以针对目标硬件进行优化? 类似的东西: – –cpu=cortex=a8 –extra-cflags=”-mfpu=neon” … 我已经看过网了但我找不到我要找的答案。 我希望有人可以就此提出建议。 提前致谢!

如何在Android中使用FFMPEG库播放video?

我能够使用摇滚播放器构建脚本构建ffmpeg库。 现在我有这个.so文件,我该怎么播放video? 我想在我的Activity一个小的LinearLayout中显示这个video。 可能吗? 更新:我知道使用VideoView或MediaPlayer + SurfaceView播放video很容易。 我只想更多地了解ffmpeg库以及如何在Android Activity显示帧。

使用FFMpeg为Android解码video

我尝试使用互联网上提供的示例示例中的FFMpeg库解码video,我用新版本的ffmpeg搞清楚,这是我从我的类文件中调用的代码, private static native int decodeVideo(String filename); decodeVideo(getString(R.string._sdcard_abc_3gp)); 现在位于JNI目录的.c文件中,我写了这段代码, jint Java_ru_dzakhov_ffmpeg_test_MainActivity_decodeVideo(JNIEnv* env, jobject javaThis,jstring filename) { AVFormatContext *pFormatCtx; int i, videoStream; AVCodecContext *pCodecCtx; AVCodec *pCodec; AVFrame *pFrame; AVFrame *pFrameRGB; AVPacket packet; int frameFinished; int numBytes; uint8_t *buffer; // Register all formats and codecs av_register_all(); // Open video file const jbyte *str; str = (*env)->GetStringUTFChars(env, filename, […]

FFMPEG推动RTMP流无法在Android和iPhone上运行

我必须做一个半直播。 我使用了Nginx-rtmp模块,然后通过ffmpeg将内容推送到它: ffmpeg -re -i content.mp4 -r 25 -f fvl “rtmp://rtmp.server.here” 当我在VLC中从“rtmp://rtmp.server.here”打开它时,流运行正常 但我还必须制作播放这些流的iPhone和Android应用程序。 这就是问题,流不适用于Android和iPhone。 如果我使用Wowza流云并流式传输到Wowza云而不是我自己的nginx-rtmp服务器,那么为Android和iPhone编写的相同应用程序可以正常播放流。 现在要么nginx-rtmp不正常,要么还有什么? 我也试过crtmpserver,同样的事情发生了。 我想要实现的目标:我必须开发一个系统,我们可以上传电video道(拥有它的权利)到服务器,然后制作一个网站,Android应用程序和iPhone应用程序,以便消费者可以观看直播频道。 上传部分我有一个线索,可能是电视调谐卡和开放广播软件将其流式传输到服务器。 但现场播放对我来说是新的。 更新:我也使用了ffprobe,这是输出。 (见最后一行) munir@munir-HP-ProBook-450-G2:~$ ffprobe rtmp://rtmp.server.here ffprobe version 2.6.2 Copyright (c) 2007-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: –extra-libs=-ldl –prefix=/opt/ffmpeg –enable-avresample –disable-debug –enable-nonfree –enable-gpl –enable-version3 –enable-libopencore-amrnb –enable-libopencore-amrwb –disable-decoder=amrnb –disable-decoder=amrwb –enable-libpulse –enable-libx264 –enable-libx265 […]

工作目录:null环境:null

我试图在Android上使用ffmpeg.so我正在获取工作目录:null环境:null错误。 try { Process p = Runtime.getRuntime().exec(“/data/data/com.example.foo/files/ffmpeg -f image2 -i ” + Environment.getExternalStorageDirectory().getAbsolutePath() + “/img/b%d.jpg ” + Environment.getExternalStorageDirectory().getAbsolutePath() + “/DCIM/Camera/a444.mp4”); } catch (IOException e) { e.printStackTrace(); } 错误日志 04-09 01:50:45.683: I/Adreno-EGL(18393): : EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13 04-09 01:50:45.713: D/OpenGLRenderer(18393): Enabling debug mode 0 04-09 01:53:56.487: D/dalvikvm(18551): Trying to load lib /data/app-lib/com.example.sodeneme-1/libffmpeg.so 0x423d7d00 04-09 […]

FFmpeg用于从静态图像JNI Android创建video文件的示例代码

我如何修改以下FFMPEG示例代码,用于从我在Android手机中的静止图像创建video文件。 我正在使用JNI来调用ffmpeg。 JNIEXPORT void JNICALL videoEncodeExample((JNIEnv *pEnv, jobject pObj, jstring filename) { AVCodec *codec; AVCodecContext *c= NULL; int i, out_size, size, x, y, outbuf_size; FILE *f; AVFrame *picture; uint8_t *outbuf, *picture_buf; printf(“Video encoding\n”); /* find the mpeg1 video encoder */ codec = avcodec_find_encoder(CODEC_ID_MPEG1VIDEO); if (!codec) { fprintf(stderr, “codec not found\n”); exit(1); } c= avcodec_alloc_context(); picture= […]

ffmpeg 10.04无法find编解码器参数

执行命令ffmpeg -i /path/to/video.mp4时出错: ffmpeg version git-2012-07-24-93342de Copyright (c) 2000-2012 the FFmpeg developers built on Jul 24 2012 23:55:41 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1) configuration: –enable-libfaac –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libx264 –enable-gpl –enable-nonfree –enable-postproc –enable-swscale –enable-vdpau –enable-version3 –enable-libtheora –enable-libvorbis –enable-libvpx –enable-x11grab libavutil 51. 65.100 / 51. 65.100 libavcodec 54. 44.100 / 54. 44.100 libavformat 54. 20.100 / […]

使用Ffmpeg设置video流元数据

我正在使用JavaCV FFmpegFrameRecorder类将Android的相机预览帧编码为video。 目标是复制以下命令行的结果: ffmpeg -i input.mp4 -metadata:s:v:0 rotate=”90″ output.mp4 我修改了startUnsafe()方法如下,但它无法生成所需的输出: if ((video_st = avformat_new_stream(oc, video_codec)) != null) { video_c = video_st.codec(); video_c.codec_id(oformat.video_codec()); video_c.codec_type(AVMEDIA_TYPE_VIDEO); … AVDictionary avDictionary = new AVDictionary(null); av_dict_set(avDictionary, “rotate”, “90”, 0); video_st.metadata(avDictionaty); … } … avformat_write_header(oc, (PointerPointer) null); 这仍然可以正确编码video,但添加的元数据永远不会出现在ffprobe上。 如果有帮助,video编码为h264。 顺便说一句,这是ffprobe输出: ffprobe version 2.3.3 Copyright (c) 2007-2014 the FFmpeg developers built on Jan […]