Bud*_*ius 14 android ffmpeg video-processing mp4parser
我已经设法使用NDK版本r5c为Android NDK 编译halfninja ffmpeg脚本.(不幸的是,任何使用早期NDK编译的尝试都会产生一些错误),而且我对整个NDK过程并不是很了解,所以对我来说这有点受欢迎.
他的脚本正在编译ffmpeg版本N-30996-gf925b24(他为脚本执行的具体提交)
继续我的实际应用程序.我设法修剪影片没有问题,现在我需要加入/在使用上这3个环节中的命令的任何和几种组合(将它们连接起来,但任何学尝试链接1,链接2,LINK3)产生的错误,如cat is not valid,> is undefinined,unknown option filter_complex或试图重写一些输入文件.
有没有人知道是否有可能和(怎么做),加入/连接mp4视频(所有相同的编解码器,大小,质量等)使用Android上的半连队编译ffmpeg,或如何编译/获取ffmpeg Android使用最新的源代码?
我也快速尝试了mp4Parser而没有取得多大成功.
最终我试图让这个伪方法起作用:
public static File concatenate(String[] inputPaths, String outputPath){
    // ... do stuff do generate ffmpeg commands....
    VideoKit v = new VideoKit();
    v.run(cmds);
    File f = new File(outputPath);
    return f;
}
此序列将在 CLI 上捕获 mp4。它来自有关串联的 ffmpeg 常见问题解答页面...
$FFMPEG_HOME/ffmpeg  -i gpsclip_seg1.mp4  -vn -f u16le -acodec pcm_s16le -ac 1 -ar 44100 - > temp1.a < /dev/null
$FFMPEG_HOME/ffmpeg  -i gpsclip_seg2.mp4  -vn -f u16le -acodec pcm_s16le -ac 1 -ar 44100 - > temp2.a < /dev/null
$FFMPEG_HOME/ffmpeg  -i gpsclip_seg3.mp4  -vn -f u16le -acodec pcm_s16le -ac 1 -ar 44100 - > temp3.a < /dev/null
cat temp1.a temp2.a temp3.a > all.a
$FFMPEG_HOME/ffmpeg -i gpsclip_seg1.mp4 -an -f yuv4mpegpipe - > temp1.v < /dev/null &
$FFMPEG_HOME/ffmpeg -i gpsclip_seg2.mp4 -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp2.v
$FFMPEG_HOME/ffmpeg -i gpsclip_seg3.mp4 -an -f yuv4mpegpipe - < /dev/null | tail -n +2 > temp3.v
cat temp1.v temp2.v temp3.v > all.v
$FFMPEG_HOME/ffmpeg -f u16le -acodec pcm_s16le -ac 1 -ar 44100 -i all.a -f yuv4mpegpipe -i all.v -same_quant -y output.mp4
我查看了 halfninja 的“Android.mk”...为了进行测试,您应该能够使用 adb 将“ffmpeg”可执行文件从 halfninja 版本推送到手机上的 /data/local/...。在构建项目时,我认为可执行文件将位于项目中 JNI 文件夹上方的 ../output 文件夹中。
假设您可以在设备上获得 root 权限,那么您可以在手机上的 CLI 界面上进行测试,方法是获取 shell,然后使用“su”获取 root 权限,然后从 ffmpeg/MP4/concat 线程复制 cli 表达式,例如这个和在手机上运行它们,并将输出保存到您有权访问的文件夹中。
在测试模式下,如果您可以使用一次 CLI 调用获得所需的结果(如链接接受的答案所示),那么您可以返回 JNI 接口,调用 halfninja 的“videokit”包,实现相同的命令序列你在测试中使用的。
添加了关于多次调用的注释...
由于您将多次调用 JNI 中的 ffmpeg lib,因此您应该意识到此问题可能会影响通过 JNI 对 ffmpeg 的多次调用。如果 halfninja 尚未解决此问题,您可能需要更改 Android.mk 结构以实现线程中讨论的包装器库,以便您可以通过 JNI 在每次调用 ffmpeg 之间加载/卸载所需的共享库。
机器人和“猫”
你应该在手机的 /system/bin 中有一个符号链接
lrwxr-xr-x root     shell             2012-07-09 13:02 cat -> toolbox
如果没有,请尝试在手机上安装“busybox”,以便您可以在手机上的 cli 上模拟脚本编写。
| 归档时间: | 
 | 
| 查看次数: | 4546 次 | 
| 最近记录: |