3

在我目前的工作中,我正在尝试使用 FFMPEG 的 C 库将一些图像编码为 h264 视频。生成的视频在 VLC 中播放良好,但没有预览图像。视频可以在 ubuntu 上的 VLC 和 Mplayer 中播放,但不能在 Mac 或 PC 上播放(事实上,它会导致 Mac 上出现“VTDecoderXPCService quit unexpectedly”错误)。

如果我使用命令行通过 FFMPEG 运行生成的文件,则生成的文件有一个预览图像,并且可以在任何地方正确播放。

显然,我从程序中取出的文件在某个奇怪的地方损坏了,但是在编译或运行期间我没有任何输出来指示位置。我目前无法分享我的代码(工作代码尚未开源 :-( ),但我尝试了很多方法:

  1. 只写入头和尾数据 (av_write_trailer),不写入帧
  2. 只写帧减去预告片(使用 avcodec_encode_video2 和 av_write_frame)
  3. 调整我们的 time_base 和 frame pts 值以每秒仅编码一帧
  4. 删除所有可变帧率代码
  5. 我不会在这里打扰您的许多其他变体

在创建我的项目时,我还遵循了以下教程:

并查阅了已弃用的 ffmpeg 函数列表

并根据官方文档在ubuntu上编译FFMPEG

并咨询了许多 StackOverflow 问题:

但是程序的每次运行都会遇到完全相同的问题。

我的问题是,是否有任何明显的原因导致 FFMpeg 的编程运行与控制台运行不同(例如,不完整的最终确定、一些线程问题等)?就像控制台运行可以修复损坏的文件的一些明显原因一样?或者是否有一个不错的工具/方法来检查视频文件并找到损坏点

4

1 回答 1

1

试一试:http : //forum.doom9.org/showthread.php?t=123076看看你得到了什么。

于 2013-07-17T13:42:46.203 回答