【问题标题】:How to convert .flv video into .h264 format with FFmpeg?如何使用 FFmpeg 将 .flv 视频转换为 .h264 格式?
【发布时间】:2012-10-07 08:04:10
【问题描述】:

我想从.flv 转换成.h264 格式。

问题:我进行了从 FLV 到 H264 格式的转换,但转换后的视频 (.h264) 运行速度非常快(就像我们单击快进按钮一样)。

我使用了以下命令:

ffmpeg -i example.flv -sameq -vcodec libx264 -vpre default -ar 22050 output.h264

【问题讨论】:

标签: video ffmpeg h.264


【解决方案1】:

解决方案是您需要一个容器格式。原始 h.264 没有任何视频的时间信息,这就是您的播放器播放速度非常快的原因。

你的命令也一团糟。您是否想要输出中的音频?如果是,那么您需要指定一个包含音频和视频的容器格式。

将您的输出更改为 mp4

ffmpeg -i input_file -c:a copy -c:v libx264 -profile:v baseline out.mp4

或其他一些容器。如果您想要仅视频流,请删除音频选项并添加 -an

如果您想使用 AAC 音频而不是 FLV 文件中的任何内容:

ffmpeg -i input_file -c:a aac -strict -2 -b:a 128k -c:v libx264 -profile:v baseline out.mp4

如果您的 ffmpeg 没有 -c-profile 选项,请更新到更新的版本。

【讨论】:

  • -vpre 在任何最近的 FFmpeg 版本中都不存在,应该避免使用。使用-profile:v 指定配置文件,使用-preset slow 等进行编码预设。
  • @av501 以下命令可以正常生成 h.264 格式的 mp4 视频,但音频在 iPhone 中不起作用(它在 Android 手机中起作用) ffmpeg -i example.flv -r 25 -sameq -ab 128kb -vcodec libx264 -vpre default -s 320x240 -b 768kb -ar 44100 -acodec copy output.mp4 当我使用 acodec = aac 时,ffmpeg 显示以下消息“编码器'aac'是实验性的,可能会产生不好的结果。如果您想使用它,请添加 '-strict experimental'。”
  • @slhck 当我使用 -preset 慢时,我在 ffmpeg “无法识别的选项'预设'”中收到以下消息
  • @ShishirMudliyar,要在 iphone/android 上运行,您仍然需要将其放入 mp4 中。它们不播放原始 h.264 文件。 H.264 是视频的编解码器,它在 mp4 容器内形成基本流。要根据您所针对的设备集在 android/ios 中播放文件,您可能还需要设置比特率分辨率和帧速率来控制级别和配置文件,如果您想要单个文件,则使用 ref frames = 1 用于约束基线跨设备播放。否则单独编码可以播放主要配置文件和更高质量文件的子集。阅读一下编解码器/容器
  • @av501 现在跟随 cmd 正在创建视频,该视频在 Android/Iphone 中运行良好的视频、音频 ffmpeg -i example.flv -r 25 -sameq -b:a 128k -vcodec libx264 -preset slow -s 320x240 -b:v 768k -ar 44100 -acodec aac -strict -2 output.mp4 .....我将我的 ffmpeg 升级到 0.10 ....非常感谢您的宝贵支持
【解决方案2】:

您正在寻找的神奇关键字是“每秒帧数”。

例如,在输出视频中添加和“-r 30”以获得 30 fps。

塞巴斯蒂安

【讨论】:

  • 过滤器后出现错误 pts MISSING 没有来自分离器的 pts 值用于帧!,?%0 0 pts 在过滤器后 MISSING 没有来自分离器的 pts 值用于帧!,?%0 0过滤器后的 pts MISSING 没有来自解复用器的 pts 值用于帧!,?% 0 0
  • 我在命令中使用了 -r 30 :: ffmpeg -i example.flv -r 30 -sameq -vcodec libx264 -vpre default -ar 22050 output.h264 但结果不会改变,视频仍在快速前进
  • 这永远不会起作用,因为.h264 原始格式不包含有关每秒存储多少帧的任何信息。
  • 但是生成的 .mp4 必须具有某种帧速率?
  • 好吧,如果您将原始 h.264 比特流输出到 h264 文件,则没有“生成的 MP4”文件。 h264 文件只包含视频数据,没有其他内容。您需要两个将其包装在 MP4 之类的容器中,以指定每秒应显示多少帧。 (对了,别忘了用@slhck通知其他用户,否则收不到回复)
猜你喜欢
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 2011-01-17
  • 2023-03-26
  • 2012-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多