标签: android-ffmpeg

像Instagram一样为视频添加过滤器

我正在编写应用程序,需要对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)

是否有其他开源或付费库可以对视频应用过滤器?任何有助于实现此功能的帮助将不胜感激.

或者我如何制作自己的视频过滤器?

谢谢.

java android ffmpeg android-ffmpeg

5
推荐指数
0
解决办法
672
查看次数

ffmpeg从具有多个通道的输入输出单独的通道

我运行此命令,以便能够将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)

ffmpeg pyffmpeg android-ffmpeg

5
推荐指数
1
解决办法
656
查看次数

FFMPEG - 以指定的时间间隔在视频上叠加多个视频

我想以指定的时间间隔在单个视频上叠加多个视频。

尝试了不同的解决方案,但它不会像我那样工作

我使用下面的命令将视频覆盖在视频上

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 秒

帮助解决这个问题会很棒,提前致谢。

ffmpeg android-ffmpeg

5
推荐指数
1
解决办法
1964
查看次数

Android FFmpeg - 来自 MediaCodec 的 Mux 编码的 h264 帧

我正在尝试从 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)

android ffmpeg h.264 android-ffmpeg android-mediacodec

5
推荐指数
0
解决办法
832
查看次数

使用 ffmpeg 合并音频视频 - moovatom 未找到错误

我使用下面的命令来合并音频和视频-

"-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 …

video android ffmpeg video-editing android-ffmpeg

5
推荐指数
1
解决办法
3647
查看次数

如何杀死 FFmpeg 当前正在运行的进程?

我正在开发一个使用 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()

如何在调用特定代码时在没有内存泄漏和不使应用程序崩溃的情况下杀死进程?

java android android-ffmpeg

5
推荐指数
1
解决办法
2625
查看次数

FFMPEG 错误!!!moovatom 未找到处理输入时发现无效数据

我正在尝试合并反转视频块,但这个错误击中了我。我见过很多解决方案,但没有一个有效。

[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 ffmpeg android-ffmpeg

5
推荐指数
1
解决办法
1万
查看次数

FFMPEG 命令不适用于 Android 10

我正在开发一个应用慢动作和快动作等视频效果的 Android 应用程序。我的应用程序在 android 10 以下运行良好,但在 android 10 上运行不佳,并且 FFMPEG 未显示任何错误,仅在 onFailure 回调方法上显示空白错误消息。

我做了一些研究,发现 android 引入了范围权限,您可以通过在清单 android:requestLegacyExternalStorage="true" 上添加此行来暂时绕过此权限,然后您将获得存储权限。添加此行后,应用程序的其余部分可以正常获取用户视频等,但 FFMPEG 无法正常工作。

如果有人对这个问题有想法或线索,请帮助我。

java android ffmpeg android-ffmpeg

5
推荐指数
1
解决办法
8114
查看次数

应用印地语字体文件或其他语言字体文件时 FFmpeg 绘制文本问题

我们正在尝试使用 FFmpeg 绘制文本来支持印地语字体。但有些字符无法正确渲染。

\n

使用的印地语语言字体文件:- https://fonts.google.com/specimen/Khula

\n
Input 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,**\n
Run Code Online (Sandbox Code Playgroud)\n

但输出呈现为\n代码输出

\n

我想要一些完美的解决方案来应用资产字体FFmpeg.

\n

先感谢您。

\n

ffmpeg custom-font android-ffmpeg mobile-ffmpeg

5
推荐指数
0
解决办法
419
查看次数

在 MP4parser 中附加视频时无法合并 VisualSampleEntry 错误

我正在用 ffmpeg 创建四个视频,然后我用 MP4parser 附加它们。我使用 ffmpeg 创建的四个视频的详细信息。

  • 1,2 视频:使用一张图像创建
[-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)
  • 3,4 视频:从现有的 mp4 视频中修剪 3 秒视频
[-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 mp4parser android-ffmpeg mobile-ffmpeg

5
推荐指数
0
解决办法
67
查看次数