- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
首先,从长远来看,我想使用 Android 为 MP4 文件实现一个速度计。我做了一些研究,显然最好的方法是通过 FFmpeg。我决定使用这个库:https://github.com/WritingMinds/ffmpeg-android-java .它为 Android 实现了 FFmpeg。将其包含到我的项目中非常简单。 (说明:http://writingminds.github.io/ffmpeg-android-java/)
我使用以下方法。作为 cmd,我在引号中使用了一个字符串
ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
...
};
现在我试图在 MP4 文件上叠加一些动态文本。我想我会开始尝试使用时间戳。对于时间戳,需要这样的东西: ... timecode='02:36:17\;00' ...
我的问题是我收到此错误“无法为'''找到合适的输出格式。无论我尝试使用“\”(转义)还是尝试使用常规引号都没有关系。无论何时我使用某种引号时出现错误。这使得无法使用动态时间戳。我认为。
有人知道我该如何解决这个问题吗?请记住,时间码位于 Android(Java) 类的字符串中。
预先感谢您的帮助
编辑:
有人能给我一个工作命令吗? cmd 1-3 有效,但 4 和 5 无效(即使是 String[])。
String cmd1 = "-i /storage/emulated/0/dir1/dir2/TestVideo.MP4 -i /storage/emulated/0/dir1/dir2/logo.png -preset ultrafast -filter_complex overlay=10:main_h-overlay_h-10 -acodec: copy /storage/emulated/0/dir1/dir2/LogoOverlay1.mp4";// working PNG overlay
String cmd2 = "-i /storage/emulated/0/dir1/dir2/TestVideo.MP4 -i /storage/emulated/0/dir1/dir2/logo.png -preset ultrafast -filter_complex overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2 -acodec: copy /storage/emulated/0/dir1/dir2/LogoOverlay2.mp4";// working PNG overlay
String cmd3 = "-i /storage/emulated/0/dir1/dir2/TestVideo.MP4 -i /storage/emulated/0/dir1/dir2/logo.png -preset ultrafast -filter_complex [0:v][1:v]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] -map [out] -map 0:a -acodec: copy /storage/emulated/0/dir1/dir2/LogoOverlay3.mp4";// working PNG overlay
String cmd4 = "-i /storage/emulated/0/dir1/dir2/TestVideo2.MP4 -vf drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf: text=\'Stack Overflow\': fontcolor=white: fontsize=24: box=1: boxcolor=black: x=(w-text_w)/2: y=(h-text_h-line_h)/2\" -acodec: copy /storage/emulated/0/dir1/dir2/TextOverlay.mp4";
String cmd5 = "-i /storage/emulated/0/dir1/dir2/TestVideo2.MP4 -vf \'transpose=1\' /storage/emulated/0/dir1/dir2/rotated.mp4"; //rotate video
String[] cmd4arr = new String[]{"-i", "/storage/emulated/0/dir1/dir2/TestVideo.MP4", "-vf", "drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf: text='Stack Overflow': fontcolor=white: fontsize=24: box=1: boxcolor=black: x=(w-text_w)/2: y=(h-text_h-line_h)/2", "-acodec:", "copy /storage/emulated/0/dir1/dir2/TextOverlay.mp4"};
String[] cmd5arr = new String[]{"-i", "/storage/emulated/0/dir1/dir2/TestVideo2.MP4","-preset","ultrafast", "-vf", "\'transpose=1\'", "/storage/emulated/0/dir1/dir2/rotated.mp4"};
String[] cmd4ArrAlt = new String[]{"-i", "/storage/extSdCard/DCIM/Camera/Test.MP4", "-vf", "drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf:", "text=\'Stack Overflow\':", "fontcolor=white:", "fontsize=24:", "box=1:", "boxcolor=black:", "x=(w-text_w)/2:", "y=(h-text_h-line_h)/2", "-acodec:", "copy", "/storage/emulated/0/dir/TextOverlay.mp4"};
cmd4arr 生成此日志:
.../MainActivity﹕ onProgress ffmpeg version n2.4.2 Copyright (c) 2000-2014 the FFmpeg developers
.../MainActivity﹕ onProgress built on Oct 7 2014 15:08:46 with gcc 4.8 (GCC)
.../MainActivity﹕ onProgress configuration: --target-os=linux --cross-prefix=/home/sb/Source-Code/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/sb/Source-Code/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/sb/Source-Code/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/sb/Source-Code/ffmpeg-android/build/armeabi-v7a-neon --extra-cflags='-I/home/sb/Source-Code/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all -mfpu=neon' --extra-ldflags='-L/home/sb/Source-Code/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
.../MainActivity﹕ onProgress libavutil 54. 7.100 / 54. 7.100
.../MainActivity﹕ onProgress libavcodec 56. 1.100 / 56. 1.100
.../MainActivity﹕ onProgress libavformat 56. 4.101 / 56. 4.101
.../MainActivity﹕ onProgress libavdevice 56. 0.100 / 56. 0.100
.../MainActivity﹕ onProgress libavfilter 5. 1.100 / 5. 1.100
.../MainActivity﹕ onProgress libswscale 3. 0.100 / 3. 0.100
.../MainActivity﹕ onProgress libswresample 1. 1.100 / 1. 1.100
.../MainActivity﹕ onProgress libpostproc 53. 0.100 / 53. 0.100
.../MainActivity﹕ onProgress Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/dir1/dir2/TestVideo2.MP4':
.../MainActivity﹕ onProgress Metadata:
.../MainActivity﹕ onProgress major_brand : isom
.../MainActivity﹕ onProgress minor_version : 512
.../MainActivity﹕ onProgress compatible_brands: isomiso2mp41
.../MainActivity﹕ onProgress creation_time : 1970-01-01 00:00:00
.../MainActivity﹕ onProgress encoder : Lavf53.24.2
.../MainActivity﹕ onProgress Duration: 00:00:06.40, start: 0.000000, bitrate: 1321 kb/s
.../MainActivity﹕ onProgress Stream #0:0(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 640x368 [SAR 1:1 DAR 40:23], 932 kb/s, 25 fps, 25 tbr, 12800 tbn, 25 tbc (default)
.../MainActivity﹕ onProgress Metadata:
.../MainActivity﹕ onProgress creation_time : 1970-01-01 00:00:00
.../MainActivity﹕ onProgress handler_name : VideoHandler
.../MainActivity﹕ onProgress Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 383 kb/s (default)
.../MainActivity﹕ onProgress Metadata:
.../MainActivity﹕ onProgress creation_time : 1970-01-01 00:00:00
.../MainActivity﹕ onProgress handler_name : SoundHandler
cmd4ArrAlt 生成此日志:
.
.
.
/MainA: onProgress: handler_name : SoundHandle
/MainA: onProgress: [NULL @ 0xb5ec4a00] Unable to find a suitable output format for 'text='Stack Overflow':'
/MainA: onProgress: text='Stack Overflow':: Invalid argument
cmd4arr 和 cmd5arr 创建一个新的 MP4 文件。但它的大小为 0KB。这些命令似乎根本不处理帧。它总是在上面发布的日志的最后一行停止。
编辑:
已回答的问题:“我如何将 String [ ] 与此库一起使用?关于此的信息可能会解决其他问题。”
答:我之前导入的项目是arr。当它作为常规库导入时,您不能再使用普通字符串,而是作为 String[] 实现的。
最佳答案
我有同样的问题,问题是复杂的 ffmpeg 命令最多 android-ffmpeg-java 包装器应该作为数组而不是简单的字符串传递。
编辑:
试试这个:
String[] cmd4arr = new String[]{
"-i",
"/storage/emulated/0/dir1/dir2/TestVideo.MP4",
"-vf",
"drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf: text=\'Stack Overflow\': fontcolor=white: fontsize=24: box=1: boxcolor=black: x=(w-text_w)/2: y=(h-text_h-line_h)/2",
"-acodec:",
"copy",
"/storage/emulated/0/dir1/dir2/TextOverlay.mp4"};
改变cmd5中的转置单引号应该在=
之前这样"transpose=\'1\'"
String[] cmd5arr = new String[]{"-i",
"/storage/emulated/0/dir1/dir2/TestVideo2.MP4",
"-preset",
"ultrafast",
"-vf",
"transpose=\'1\'",
"/storage/emulated/0/dir1/dir2/rotated.mp4"};
关于java - ffmpeg 安卓 java.无法使用单引号和正引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35002638/
我有一个加号/减号按钮,希望用户不能选择超过 20 个但不知道如何让它工作。我尝试使用 min="1"max="5 属性,但它们不起作用。这是我的代码和一个 fiddle 链接。https://jsf
我正在尝试复制顶部底部图,如示例 here但它没有正确渲染(紫色系列有 +ve 和 -ve 值,绿色为负值)留下杂乱的人工制品。我也在努力创建一个玩具示例来复制这个问题,所以我希望尽管我缺乏数据,但有
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 6 年前。 社区去年审查了是
这个问题在这里已经有了答案: Adding two positive integers gives negative answer.Why? (4 个答案) 关闭 5 年前。 我遇到了一个奇怪的问题
有谁知道如何将字符串值类型 -4,5 或 5,4 转换为 double -4.5 或 5.4? 最佳答案 只需使用 Double.parseDouble(Locale, String); 糟糕,我很困
我正在尝试根据 TextBlob 分类插入一个仅包含“正”或“负”字符串的新数据框列:对于我的 df 的第一行,结果是 ( pos , 0.75, 0.2499999999999997)我想要' 正
我对 VBA 非常陌生,无法理解如何在一个循环中完成 2 个任务。我非常感谢您的帮助。 我已经能够根据第 3 列中的数据更改第 2 列中的数值,但我不明白如何将负值的字体更改为红色。 表格的大小每月都
欢迎, 我正在使用 jquery 通过 POST 发送表单。 这就是我获得值(value)的方式。 var mytext = $("#textareaid").val(); var dataStrin
double d = 0; // random decimal value with it's integral part within the range of Int32 and always p
我有这个字符串: var a='abc123#xyz123'; 我想构建 2 个正则表达式替换函数: 1) 用 '*' 替换所有确实有 future '#'的字符(不包括'#') 所以结果应该是这样的
我正在使用 DialogFragment。当用户从 Gmail 平板电脑应用程序的屏幕与下面示例图片中的编辑文本进行交互时,我希望正面和负面按钮保持在键盘上方。 在我的尝试中不起作用,这是我的 Dia
从组装艺术一书中,我复制了这句话: In the two’s complement system, the H.O. bit of a number is a sign bit. If the H.O
是否有更好更优雅的方法来实现下面的简单代码(diffYear、A 和 B 是数字): diffYear = yearA - yearB; if (diffYear == 0) { A = B
我正在设计一种语言,并尝试确定 true 应该是 0x01 还是 0xFF。显然,所有非零值都将转换为 true,但我正在尝试确定确切的内部表示。 每种选择的优点和缺点是什么? 最佳答案 没关系,只要
在我的 dialogfragment 类的 OnCreateDialog 中,我正在这样做: AlertDialog.Builder builder = new AlertDialog.Builder
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda usin
我偶然发现了一个奇怪的 NSDecimalNumber 行为:对于某些值,调用 integerValue、longValue、longLongValue 等,返回意想不到的值(value)。示例: l
这个问题在这里已经有了答案: Resolving ambiguous overload on function pointer and std::function for a lambda using
我有这个正则表达式来测试用户输入是否有效: value.length === 0 || value === '-' || (!isNaN(parseFloat(value)) && /^-?\d+\.
我想用高斯混合模型拟合数据集,数据集包含大约 120k 个样本,每个样本有大约 130 个维度。当我使用 matlab 执行此操作时,我运行脚本(簇号为 1000): gm = fitgmdist(d
我是一名优秀的程序员,十分优秀!