Articles of ffmpeg

使用FFMPEG转换Androidvideo

我想要做的是将video转换为将在Android中播放的mp4格式。 我已经浏览了http://developer.android.com/guide/appendix/media-formats.html 我正在设置以下选项 -vcodec libx264 -vprofile baseline -acodec libfaac -ar 44100 -ac 1 -ab 128k但我收到错误消息“抱歉,此video无法流式传输到此设备” 我使用videoJS http://video-js.zencoder.com/oceans-clip.mp4在Android浏览器中播放video,它运行正常。 我下载videooceans-clip.mp4并尝试使用极简主义选项进行转换 -y -i working.mp4 -vprofile baseline pleasework.mp4 但我收到相同的错误消息。 以下是video文件的FFMPEG信息转储 Working.mp4 Array ( [0] => ffmpeg version N-40229-g24e3f44-syslint Copyright (c) 2000-2012 the FFmpeg developers [1] => built on Apr 29 2012 22:01:41 with gcc 4.1.2 20080704 (Red Hat 4.1.2-52) […]

接收RTP流 – AudioStream,AudioGroup

我想听一个RTP音频流,但声音中没有什么差距 – 不会继续。 可能是什么解决方案? 我错过了Receiver(android)端或Streamer(ffmpeg)端的东西吗? 我正在使用ffmpeg来传输RTP音频, ffmpeg -f lavfi -i aevalsrc=”sin(400*2*PI*t)” -ar 8000 -vcodec pcm_u8 -f rtp rtp://192.168.0.15:41954 (port changes.) 这是我的相关android代码: AudioStream audioStream; AudioGroup audioGroup; @Override public void onStart() { super.onStart(); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitNetwork().build(); StrictMode.setThreadPolicy(policy); AudioManager audio = (AudioManager)getSystemService(AUDIO_SERVICE); audio.setMode(AudioManager.MODE_IN_COMMUNICATION); audioGroup = new AudioGroup(); audioGroup.setMode(AudioGroup.MODE_ECHO_SUPPRESSION); InetAddress inetAddress; try { inetAddress = InetAddress.getByName(“192.168.0.15”); audioStream […]

将FFmpeg与Android-NDK配合使用

我想将FFmpeg与Android-NDK一起使用,我在本节中非常基础,我需要一些帮助,我之前在网上研究这个主题,但没有得到满意的解决方案。 1 – 如何通过Windows操作系统使用FFmpeg 。 (我不想使用Ubuntu,请不要建议。) 2 – 如何通过NDK插入FFmpeg命令? 最后通知:我使用android-ndk-r7b和Cygwin 。 任何建议将不胜感激。

Androidvideo播放器使用NDK,OpenGL ES和FFmpeg

好的,这就是我到目前为止所拥有的。 我在android上构建了FFmpeg并且能够很好地使用它。 在从java端传递所选文件名后,我已经能够将video加载到FFmpeg中。 为了节省性能,我在NDK中编写video播放器,而不是通过JNI将帧从FFmpeg传递到java。 我想将video中的帧发送到OpenGL表面。 我无法弄清楚如何获取每帧video并将其渲染到OpenGL表面上。 我一直坚持试图解决这个问题几个星期,现在没有运气。 希望有人可以指出我正确的方向。 谢谢!

在android中添加水印位图:4.3的MediaMuxer或ffmpeg

这是我的情景: 从网上下载avi电影 打开位图资源 在背景中的所有帧上将此位图叠加在电影的底部 将video保存在extarnal存储上 video长度通常为15秒 这可能是使用MediaMuxer实现的吗? 很高兴收到有关此事的任何信息 我一直在寻找http://bigflake.com/mediacodec/#DecodeEditEncodeTest (谢谢@fadden),它说: “解码帧并将其复制到带有glReadPixels()的ByteBuffer,在Nexus 5上大约需要8ms,速度足够快以跟上30fps的输入速度,但将其作为PNG保存到磁盘所需的额外步骤很昂贵(大约一半)一秒)” 所以几乎1秒/帧是不可接受的。 根据我的想法,一种方法是将每个帧保存为PNG,打开它,在其上添加位图叠加然后保存它。 然而,这将花费大量时间来完成。 我想知道是否有办法做这样的事情: 从外部存储打开video文件 开始解码它 每个解码帧将通过内存中的位图叠加进行更改 帧被发送到编码器。 在iOS上,我看到有一种方法可以将原始音频+原始video+图像添加到一个容器中,然后对整个事物进行编码…… 我应该切换到ffmpeg吗? ffmpeg的稳定性和兼容性如何? 我冒着与Android 4.0+设备兼容性问题的风险吗? 有没有办法用ffmpeg来实现这个? 我是这个领域的新手,还在做研究。 多年后编辑: 自问题出现以来已经过去了很多年,并且ffmpeg在许可方面很难添加到商业软件中。 这是如何演变的? 较新版本的android在默认的sdk上更有能力吗?

使用ffmpeg实时解码android的硬件编码H264相机源

我正在尝试使用Android上的硬件H264编码器从相机创建video,并使用FFmpeg来复用音频(所有这些都在Android手机上) 到目前为止我所做的是将H264video打包成rtsp数据包,并使用VLC(通过UDP )对其进行解码,因此我知道video的格式至少是正确的。 但是,我无法以可以理解的格式将video数据发送到ffmpeg 。 我尝试将相同的rtsp数据包发送到localhost上的端口5006(通过UDP),然后向ffmpeg提供sdp文件,该文件告诉它video流进入哪个本地端口以及如何解码video,如果我理解的话rtsp正确流式传输。 然而,这不起作用,我无法诊断为什么,因为ffmpeg只是坐在那里等待输入。 出于延迟和可扩展性的原因,我不能只将video和音频发送到服务器并将其复制到那里,必须在手机上以尽可能轻的方式完成。 我想我正在寻找的是关于如何实现这一点的建议。 最佳解决方案是将分组化的H264video通过管道发送到ffmpeg ,但是我无法向ffmpeg发送解码video所需的sdp文件参数。 我可以根据请求提供更多信息,例如如何为Android编译ffmpeg ,但我怀疑这是必要的。 哦,我开始ffmpeg的方式是通过命令行,我真的宁愿避免与jni混淆,如果这是可能的。 非常感谢帮助,谢谢。

Androidvideo通过ffmpeg修剪

我已经从这个链接从github下载video修剪代码。 这是第一次完美的工作,但是当我第二次尝试运行它的代码崩溃没有任何exception,然后再次尝试运行它第三次崩溃后,它的工作! 有没有人有这种行为的想法? 我也正在开发一个应用程序,它有一个剪裁video模块。 我真的很感激,如果有人能帮助我。

如何从androidstream到ffserver

我需要从一个Android摄像头/文件stream到一个远程ffserver将播放我的video。 我可以在Ubuntu的桌面上通过发出如下命令来做到这一点: ffmpeg -f video4linux2 -s 640×480 -r 25 -i /dev/video0 http://192.168.0.20:8090/cam1.ffm 或者像这样stream式传输一个文件: ffmpeg -i /home/kev/share/movie.mp4 http://192.168.0.20:8090/cam1.ffm 所以基本上我想能够从android做到上述。 经过几次search,这是我迄今为止所做的 – 我遇到这个链接http://bambuser.com/opensource从中我下载了ffmpeg源并build立它。 编译输出几个东西:1.共享库[libavcodec,libavcore,libavdevice,libavfilter,libavformat,libavutil,libswscale] 2.可执行文件[ffmpeg,ffprobe] 不知道如何插入我的function与这些资源这是我到目前为止已经尝试:1.使用System.loadLibrary()加载我的活动库,然后将ffmpeg可执行文件复制到assets文件夹,在运行时我复制到我的应用程序的“文件”目录我然后使用Runtime.getRuntime()。exec()设置可执行文件的权限。 那么最后一步是在java中使用以下语句执行它: Runtime.getRuntime().exec("ffmpeg -i file:///android_asset/movie.mp4http://<server>:8090/cam1.ffm"); 2.将ffmpeg.c,共享库和构build生成的“include”文件夹复制到我的jni文件夹中,并添加一个包裹ffmpeg.c中main()函数的jni函数。 通过这种方法,我发现自己必须从ffmpeg源文件中复制几个头文件,以便ndk-build成功,我非常怀疑这是否可行。 以上两种方法havnt为我工作,我不知道我要去哪里错了,所以任何帮助如何做一个简单的ffmpegstream如android的mp4文件将不胜感激。

Android ExoPlayer通过HTTPstream式传输mp3

我想了解今年在Google I / O 2014上推出的新的ExoPlayer库 ,以便我可以将它合并到我的应用程序中。 我试图通过HTTPstream式传输一个mp3,但到目前为止一直没有成功。 我不知道是否有可能,但我试图做到这一点,而不扩展任何基本的源/示例类。 我的代码如下: 在我的活动 SampleSource s = new FrameworkSampleSource(this, Uri.parse("http://traffic.libsyn.com/joeroganexp/p518.mp3"), null, 1); // Since I only have 1 audio renderer ExoPlayer player = ExoPlayer.Factory.newInstance(1); MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(s); player.prepare(audioRenderer); player.setPlayWhenReady(true); logcat的 3363-3376/com.kevintcoughlin.smodr V/FFmpegExtractor﹕ SniffFFMPEG 07-06 15:52:34.080 3363-3376/com.kevintcoughlin.smodr I/FFmpegExtractor﹕ android-source:0xb7c53e00 07-06 15:52:34.084 3363-3376/com.kevintcoughlin.smodr D/FFMPEG﹕ android source begin open 07-06 […]

什么是iOS / Android的开源ffmpeg播放器?

我一直在寻找开源的ffmpeg播放器,我发现了一些。 但是我觉得还有更多。 如果你知道的话,请在评论或回答中写下一行。 我在iOS上工作,但真的想进一步看看为Android做了什么 这是我发现的: Mooncatventures组https://github.com/mooncatventures-group KxMoviePlayer(使用OpenGLES,核心audio) https://github.com/kolyvan/kxmovie FFmpeg为iOS(与OpenGLES,AudioQueue) https://github.com/flyhawk007/FFmpeg-for-iOS.git iFrameExtractor https://github.com/lajos/iFrameExtractor.git