HarmonyOS 鸿蒙Next中使用MP4Parser变化的视频无法二次操作

HarmonyOS 鸿蒙Next中使用MP4Parser变化的视频无法二次操作

使用MP4Parser变化的视频无法二次操作(倒放过的视频已经保存到相册,再从相册取出无法进行二次倒放)

let dst = getContext().cacheDir + dir + '/output' + Date.now() + '.mp4';
let ffmpegCmdStr = `ffmpeg -i ${videoDir} -vf reverse -af areverse ${dst}`;
// 执行 FFmpeg 转换命令
let res = await this.cmdOperate(ffmpegCmdStr, dst)
return res;

cmdOperate是执行ffmpeg命令的函数


更多关于HarmonyOS 鸿蒙Next中使用MP4Parser变化的视频无法二次操作的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

有没有完整的demo?

更多关于HarmonyOS 鸿蒙Next中使用MP4Parser变化的视频无法二次操作的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主取出相册里面的图片会不会和权限有关系,重新取出来的文件已经是属于图库的文件了

我重新到相册取的,再倒放的就不行了,而且倒放的视频被损毁了,

相册里面的视屏会不会是加密过了 可以提一个工单试一下,

试试修正FFmpeg参数保证兼容性

let ffmpegCmdStr = `ffmpeg -i ${videoDir} -vf reverse -af areverse 

  -c:v libx264 -profile:v baseline -level 3.0 -movflags +faststart

  -x264-params keyint=30:scenecut=0 ${dst}`

显式指定H.264 Baseline Profile编码;强制关键帧间隔(keyint=30);添加MP4快速启动头(-movflags)

这个都已经抛异常了,也还是谢谢哈,感觉这个第三库是不是不太成熟,

在HarmonyOS Next中使用MP4Parser处理视频后无法二次操作,可能是文件元数据未正确更新或文件句柄未释放。确保使用最新版MP4Parser库,操作完成后调用close()方法释放资源。检查文件权限是否允许读写,临时文件路径是否有效。若仍失败,可尝试将处理后的视频复制到新文件再操作。

在HarmonyOS Next中使用MP4Parser处理视频时遇到二次操作问题,可能是由于以下原因导致的:

  1. 元数据问题:第一次倒放处理后,视频文件的元数据可能没有正确更新,导致二次操作时解析失败。建议在处理完成后使用MP4Parser.rebuild()方法重建完整的MP4结构。

  2. 编解码器兼容性:倒放操作可能改变了视频的编码参数,导致二次处理时编解码器不兼容。可以尝试在FFmpeg命令中明确指定编解码器参数:

let ffmpegCmdStr = "ffmpeg -i ${videoDir} -c:v libx264 -preset fast -crf 22 -vf reverse -af areverse ${dst}"
  1. 文件权限问题:从相册取出的视频可能受到权限限制。建议先复制到应用沙箱目录再进行操作。

  2. 时间戳问题:倒放操作会打乱原始时间戳,可以尝试在FFmpeg命令中添加-vsync 0参数来保持原始时间戳。

如果问题仍然存在,建议检查第一次倒放处理后生成的视频文件是否完整可用,并确认FFmpeg版本是否支持相关操作。

回到顶部