gpt4 book ai didi

ios - 如何以编程方式使用 FFMpeg 修剪文件? (libavformat, avutils, ...)

转载 作者:可可西里 更新时间:2023-11-01 06:17:11 25 4
gpt4 key购买 nike

我正在构建一个 iOS 应用程序,其中需要在后台重新编码和修剪视频。

我不能使用 iOS 库 (AVFoundation),因为它们依赖于 GPU,如果它在后台,则没有应用程序可以访问 GPU。

由于这个问题,我切换到 FFMpeg 并编译它(与 libx264 一起)并将它集成到我的 iOS 应用程序中。

总结一下我需要的是:

  1. 修剪视频的前 10 秒
  2. 重新缩放视频

几周后 - 经常用头撞墙 - 我设法:

  • 将视频容器拆分为流(多路分解)
  • 将音频流复制到输出流中(不解码或编码)
  • 解码视频流,对每帧运行必要的过滤器,对每个结果帧进行编码并将其重新混合到输出流(我解码 h264,对其进行过滤,然后将其重新编码回 h264)

如果我要通过命令行运行 ffmpeg,我会这样运行它:

ffmpeg -i input.MOV -ss 0 -t 10  -vf scale=320:240 -c:v libx264 -preset ultrafast -c:a copy output.mkv

我担心的是如何修剪视频?虽然我可以计算我编码/解码的视频帧的数量,并根据 FPS 决定何时停止,但我不能对音频做同样的事情,因为我只是对其进行解复用和重新复用。

理想情况下 - 在缩放视频之前 - 我会运行一个过程来修剪视频,方法是将每个流(视频和音频)的 10 秒复制到一个新的视频容器中。

如何通过 AV 库实现此目的?

最佳答案

我知道你可以通过调用 ffmpeg 来做到这一点:

ffmpeg -i input.MOV -filter_complex [0:v]trim=duration=10.0,scale=320:240[vid];[0:a]atrim=duration=10.0[aud] -map [vid] -map [aud] -c:v libx264 -preset ultrafast -c:a libvo_aacenc -b:a 128k -flags +aic+mv4 output.mkv

关于ios - 如何以编程方式使用 FFMpeg 修剪文件? (libavformat, avutils, ...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34798931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com