Dart // Flutter - 如何连接图像和音频以渲染静态视频

Posted

技术标签:

【中文标题】Dart // Flutter - 如何连接图像和音频以渲染静态视频【英文标题】:Dart // Flutter - How to connect image and audio to render a static video 【发布时间】:2021-11-01 19:02:38 【问题描述】:

我正在尝试将音频文件连接到静态图像并将其渲染为仅包含静态图像和音频播放的视频,我查看了几个 pub 库,例如 this

但是在我寻找的时候还没有找到任何关于如何实现的文档,有没有简单的方法可以做到这一点?如果不是,是否可以在不编写平台特定内容的情况下使用 dart 来完成?

【问题讨论】:

更新:我之前能够像许多其他人一样意识到如何使用 ffmpeg 工具包库来做到这一点,但它非常大而且速度很慢,有没有另一种方法来完成我正在寻找的东西? 为什么不只显示带有音频的静态图像呢?为什么必须是视频? 嗨!感谢您的回复 :) @Abion47 我需要将其作为视频的原因是因为我想使用共享包使用户能够将视频共享到 whatsapp/instagram/sms/etc.. 根据情况更新 abit:我找到了这个包:pub.dev/packages/tapioca 它确实可以在没有 ffmpeg 的情况下进行某种形式的编辑,但它没有帮助将视频与声音连接起来的功能,只有视频带有图像叠加层。 【参考方案1】:

这就是我最终做的,我希望它对某人有所帮助, 就我而言,我需要将图像连接到音频文件以创建可以与 share_plus 插件共享的视频

你真的没有 ffmpeg 的替代品,但你可以设置它,这样使用起来还不错:

将此添加到您的 pubspec.yaml 依赖项中 ffmpeg_kit_flutter_min_gpl: ^4.5.0-LTS

在你想要渲染视频的文件中导入那些:

import 'package:ffmpeg_kit_flutter_min_gpl/return_code.dart';
import 'package:ffmpeg_kit_flutter_min_gpl/ffmpeg_kit.dart';

然后是渲染本身:

 await FFmpegKit.executeAsync(
                          '-y -i $screenshotPath -i $filePath -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p $applicationDocumentDirectory.path/new.mp4',
                          (session) async 
                        final state = await session.getState();

                        final returnCode = await session.getReturnCode();

                        String output = await session.getOutput();
                        print(output);

                        if (ReturnCode.isSuccess(returnCode)) 
                          // SUCCESS
                          await Share.shareFiles(
                            ['$applicationDocumentDirectory.path/new.mp4'],
                          );
                         else if (ReturnCode.isCancel(returnCode)) 
                          // CANCEL

                         else 
                          // ERROR

                        
                      );

【讨论】:

以上是关于Dart // Flutter - 如何连接图像和音频以渲染静态视频的主要内容,如果未能解决你的问题,请参考以下文章

Flutter/Dart - 如何在其他屏幕上的图像选择器后更新图像

如何在 Dart/Flutter 中读取本地图像文件的字节数?

Dart/flutter:如何在模拟器的本地主机上显示来自 API 的图像

如何使用 HTTP 请求(Flutter/Dart)检查 Internet 连接?

如何在Flutter中选择和上传多张图像

你如何在flutter.dart中连续检查互联网访问,而不是连接[重复]