我正在编写应用程序,需要对Instagram等视频应用过滤器.
我尝试使用FFMPEG库,但它不能正常工作,并且不提供所有过滤器.
我到目前为止尝试的是,
String commandStr1 = "ffmpeg -y -i /sdcard/vids.mp4 -strict experimental -vf hue=s=0 -vcodec mpeg4 -b 2097152 -s 320x240 -r 30 /sdcard/vid_out.mp4";
String[] complexCommand3 = {"ffmpeg","-y", "-i", "/sdcard/videokit/out1.mp4",
"-i", "/sdcard/videokit/out2.mp4", "-strict", "experimental",
"-filter_complex",
"[0:v]scale=640x480,setsar=1:1[v0];[1:v]scale=640x480,setsar=1:1[v1];[v0][0:a][v1][1:a] concat=n=2:v=1:a=1",
"-ab", "48000", "-ac", "2", "-ar", "22050", "-s", "640x480", "-r", "30", "-vcodec", "mpeg4", "-b", "2097k", "/sdcard/videokit/out3.mp4"};
Run Code Online (Sandbox Code Playgroud)
是否有其他开源或付费库可以对视频应用过滤器?任何有助于实现此功能的帮助将不胜感激.
或者我如何制作自己的视频过滤器?
谢谢.
我运行此命令,以便能够将udp直播流传输到可以使用正在构建的移动应用程序播放的http直播流.它只是一个只有音频流的流.
ffmpeg -i udp:// @ localhost:1111 -map 0: http:// localhost:8090/feed1.ffm
Input #0, mpegts, from 'udp://@localhost:1111':
Duration: N/A, start: 54616.264622, bitrate: 768 kb/s
Program 1
Metadata:
service_name : Service 1
service_provider: TLK
Stream #0:0[0x101]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
Program 2
Metadata:
service_name : Service 2
service_provider: TLK
Stream #0:1[0x111]: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 96 kb/s
Program 3
Metadata:
service_name : Service 3
service_provider: TLK
Stream #0:2[0x121]: Audio: mp2 ([3][0][0][0] …Run Code Online (Sandbox Code Playgroud) 我想以指定的时间间隔在单个视频上叠加多个视频。
尝试了不同的解决方案,但它不会像我那样工作
我使用下面的命令将视频覆盖在视频上
String[] cmdWorking3 = new String[]{"-i",yourRealPath,"-i",gifVideoFile1,"-i",gifVideoFile2,"-i",gifVideoFile3,
"-filter_complex",
"[0][1]overlay=100:100:enable='between(t,0,2)'[v1];" +
"[v1][2]overlay=130:130:enable='between(t,0,2)'[v2];" +
"[v2][3]overlay=150:150:enable='between(t,5,6)'[v3];",
"-map","[v3]","-map" ,"0:a",
"-preset", "ultrafast", filePath};
Run Code Online (Sandbox Code Playgroud)
通过使用上述命令,前两个视频完全正常,但最后一个无法启用
编辑:
//完美运行
String[] cmdWorking11 = new String[]
{"-i",
yourRealPath,
"-i",
gifVideoFile1,
"-i",
gifVideoFile2,
"-i",
gifVideoFile3,
"-i",
gifVideoFile4,
"-filter_complex",
"[1]setpts=PTS+3/TB[1d];" +
"[2]setpts=PTS+7/TB[2d];" +
"[3]setpts=PTS+10/TB[3d];" +
"[0][1]overlay=100:100:enable='between(t,0,2)'[v1];" +
"[v1][1d]overlay=130:130:enable='between(t,3,6)'[v2];" +
"[v2][2d]overlay=130:130:enable='between(t,7,9)'[v3];" +
"[v3][3d]overlay=150:150:enable='between(t,10,13)'[v4];" +
"[1]asetpts=PTS+3/TB[1ad];" +
"[2]asetpts=PTS+7/TB[2ad];" +
"[3]asetpts=PTS+10/TB[3ad];" +
"[0:a][1ad][2ad][3ad]amix=4[a]",
"-map", "[v4]", "-map", "[a]", "-ac", "5",
"-preset",
"ultrafast",
filePath};
Run Code Online (Sandbox Code Playgroud)
上面的命令完全正常,但重叠视频中的音频消失了,你能帮我解决这个问题吗?
主视频时间持续时间约为00:15 秒,所有叠加视频约为 3 秒。
帮助解决这个问题会很棒,提前致谢。
我正在尝试从 Android 相机(由 MediaCodec 编码)捕获 h264 帧并将它们传递给在同一设备上运行的 FFmpeg 进程。
我目前通过将我从 MediaCodec 接收到的编码字节数组写入名为 out.h264 的文件来实现。
像这样:
FileOutputStream fosVideo = new ...
...
// encoder callback
@Override
public void onVideoData(ByteBuffer h264Buffer, MediaCodec.BufferInfo info) {
fosVideo.write(h264Buffer);
}
Run Code Online (Sandbox Code Playgroud)
在写入 h264 文件时,我启动 FFmpeg 进程并提供 h264 文件作为输入。
ffmpeg -re -i out.h264 -c:v copy -r 30 -loglevel 48 a.mp4
Run Code Online (Sandbox Code Playgroud)
我也试过
ffmpeg -re -framerate 25 -i out.h264 -c:v copy -r 30 -loglevel 48 a.mp4
Run Code Online (Sandbox Code Playgroud)
FFmpeg 进程在 10 秒到几分钟之间运行,然后突然停止:
frame= 330 fps= 29 q=31.0 size= 512kB time=00:00:10.98 bitrate= 381.8kbits/s …Run Code Online (Sandbox Code Playgroud) 我使用下面的命令来合并音频和视频-
"-i", videoFileAbsolutePath, "-i", audioFileAbsolutePath, "-c:v", "copy", "-c:a", "aac", "-map", "0:v:0", "-map", "1:a:0", "-shortest", destinationFileAbsolutePath
Run Code Online (Sandbox Code Playgroud)
对于几个视频,我遇到以下错误 -
ffmpeg 版本 n3.0.1 版权所有 (c) 2000-2016 FFmpeg 开发人员\n 使用 gcc 4.8 (GCC) 构建\n 配置: --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 --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --禁用-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-我/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/ SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=\n libavutil 55. 17.103 / 55. 17.103\n …
我正在开发一个使用 FFmpeg 修剪视频的应用程序。当修剪过程已经开始并且我取消它时,FFmpeg 完全终止。如何仅通过终止当前工作进程来实现?
/* define PID */
try {
String pid = ffmpeg.toString();
pid = pid.substring(pid.indexOf("[") + 1, pid.indexOf("]"));
Process process = Runtime.getRuntime().exec("kill -2 " + pid);
process.waitFor();
ffmpeg.wait();
} catch (IOException | InterruptedException e) {
Log.e(TAG, "kill_ffmpeg: exception failed ",e );
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这是我现在一直在使用的代码。当此代码唤醒时,活动将重新启动,但索引越界除外。
这是我使用 FFmpeg Here实现视频编辑功能的库
这个 FFmpeg 库中有一个方法叫做killRunningProcess(). 当我使用此方法时,显示一个名为cannot resolve method killRunningProcess()
如何在调用特定代码时在没有内存泄漏和不使应用程序崩溃的情况下杀死进程?
我正在尝试合并反转视频块,但这个错误击中了我。我见过很多解决方案,但没有一个有效。
[mov,mp4,m4a,3gp,3g2,mj2 @ 0xe8db4600] moov atom not found
/storage/emulated/0/Movies/VideoPartsReverse/reverse_video0.mp4: Invalid data found when processing input
Run Code Online (Sandbox Code Playgroud)
这是连接命令。
[-i, /storage/emulated/0/Movies/VideoPartsReverse/reverse_video1.mp4, -i, /storage/emulated/0/Movies/VideoPartsReverse/reverse_video0.mp4, -filter_complex, [0:v0] [0:a0] [1:v1] [1:a1] concat=n=2:v=1:a=1 [v] [a], -movflags, faststart, -preset, ultrafast, -map, [v], -map, [a], /storage/emulated/0/Movies/reverse_video.mp4]
Run Code Online (Sandbox Code Playgroud)
即使添加这个也没有帮助-movflags, faststart
这是详细的错误消息
mov,mp4,m4a,3gp,3g2,mj2 @ 0xe8db4600 moov atom not found Invalid data found when processing input
Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用慢动作和快动作等视频效果的 Android 应用程序。我的应用程序在 android 10 以下运行良好,但在 android 10 上运行不佳,并且 FFMPEG 未显示任何错误,仅在 onFailure 回调方法上显示空白错误消息。
我做了一些研究,发现 android 引入了范围权限,您可以通过在清单 android:requestLegacyExternalStorage="true" 上添加此行来暂时绕过此权限,然后您将获得存储权限。添加此行后,应用程序的其余部分可以正常获取用户视频等,但 FFMPEG 无法正常工作。
如果有人对这个问题有想法或线索,请帮助我。
我们正在尝试使用 FFmpeg 绘制文本来支持印地语字体。但有些字符无法正确渲染。
\n使用的印地语语言字体文件:- https://fonts.google.com/specimen/Khula
\nInput string :- **\xe0\xa4\x9c\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6\xe0\xa4\x97\xe0\xa5\x80 \xe0\xa4\xb8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xab \xe0\xa4\xb9\xe0\xa4\x95\xe0\xa5\x80\xe0\xa5\x98\xe0\xa4\xa4 \xe0\xa4\xb9\xe0\xa5\x88 \xe0\xa4\xb9\xe0\xa4\x95\xe0\xa5\x80\xe0\xa5\x98\xe0\xa4\xa4 \xe0\xa4\xb8\xe0\xa4\xae\xe0\xa4\x9d\xe0\xa5\x8b,**\nRun Code Online (Sandbox Code Playgroud)\n但输出呈现为\n代码输出
\n我想要一些完美的解决方案来应用资产字体FFmpeg.
先感谢您。
\n我正在用 ffmpeg 创建四个视频,然后我用 MP4parser 附加它们。我使用 ffmpeg 创建的四个视频的详细信息。
[-loop, 1, -i, Count_1627453922.jpg, -s, 720x1280, -vf, format=yuv420p,fps=25,fade=type=in:duration=1,fade=type=out:duration=1:start_time=1, -t, 2, -preset, ultrafast, CountImageVideo_1627453922.mp4]
Run Code Online (Sandbox Code Playgroud)
[-i, footages_5_1624263519549.mp4, -ss, 00:00:00, -to, 00:00:02, -s, 720x1280, -r, 25, -preset, ultrafast, One_1627453926.mp4]
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试使用 MP4Parser 附加所有这些视频并出现以下错误:
java.io.IOException: Cannot merge VisualSampleEntry[com.googlecode.mp4parser.boxes.mp4.ESDescriptorBox@f3f76444] and VisualSampleEntry[com.googlecode.mp4parser.boxes.mp4.ESDescriptorBox@e20a2ed0]
at com.googlecode.mp4parser.authoring.tracks.AppendTrack.mergeStsds(AppendTrack.java:116)
at com.googlecode.mp4parser.authoring.tracks.AppendTrack.<init>(AppendTrack.java:59)
Run Code Online (Sandbox Code Playgroud)
我做了一些调试,发现了一些可以帮助更好地理解错误的东西。 两个视频的示例描述框
两个视频轨道具有不同的格式(MP4v 和 AVC1)。我是 ffmpeg 和 MP4parser 的新手,所以没有明白我做错了什么。谢谢!提前。
所有视频创建 ffmpeg 命令的日志和 mp4parser 的错误
Copyright (c) 2000-2020 the FFmpeg developers
I: built with Android (6454773 based …Run Code Online (Sandbox Code Playgroud) android-ffmpeg ×10
ffmpeg ×9
android ×7
java ×3
custom-font ×1
h.264 ×1
mp4parser ×1
pyffmpeg ×1
video ×1