我使用哪个 FFmpeg 命令将 FLV 传递到 MP4?

use*_*034 6 mp4 ffmpeg flv transcode

我有许多下载的 FLV 文件,我想将它们转换为 MP4。它们已经是正确的格式,所以我被告知我需要做的就是使用复制/传递将视频和音频流重新混合到 MP4 容器中。

我使用的是 Windows 7 64 位,并且已经将 FFmpeg 作为 get_iPlayer 的一部分。

我正在努力为此制定命令行吗?

是否也可以以相同的方式批量处理多个 FLV 文件?

小智 7

它应该是这样的:

ffmpeg -i yourvideo.flv -codec copy output.mp4
Run Code Online (Sandbox Code Playgroud)

您可以使用 FOR 命令来遍历文件(它会在您的树中递归):

FOR /R C:\dir\ %%F IN (*.flv) do ffmpeg -i "%%F" -codec copy "%~nF.mp4"
Run Code Online (Sandbox Code Playgroud)

只是为了澄清, %~nF 仅返回文件名的名称部分(不带扩展名)。


Oct*_*icu 5

它们已经是正确的格式

.flv 视频是复杂的文件,可以包含多种类型的音频和视频。要检查 .flv 文件的音频和视频编解码器,您可以使用:

1. ffmpeg的

ffmpeg -i video.flv
Run Code Online (Sandbox Code Playgroud)

其中(在您的情况下)应该输出以下内容:

Input #0, flv, from 'video.flv':
  Duration: 00:05:01.20, start: 0.000000, bitrate: 66 kb/s
    Stream #0.0: Video: h264, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 66 kb/s, 29.92 tbr, 1k tbn, 2k tbc 
    Stream #0.1: Audio: aac, 22050 Hz, stereo, s16
Run Code Online (Sandbox Code Playgroud)

或者

2. VLC 的媒体信息窗口带有 AAC 和 H.264 格式的 flv 文件的 VLC 媒体信息窗口

这个 .flv 文件包含 H.264 视频和 AAC 音频,这恰好是 .mp4 容器的正确格式/编解码器。

这是这样一个 .mp4 文件的结构:

包含 AAC 音频和 H.264 视频的 mp4 文件

*图片由使用 FFmpeg 将 FLV 转换为 MP4 提供终极指南

所以在将 flv 转码为 mp4 时,根据原始 .flv 文件中的编解码器,我们有 4 种情况:

1) 使用 H.264 视频和 AAC 音频转换 .flv 文件

如果 .flv 文件中的音频和视频编解码器受 .mp4 容器 (AAC + H.264) 支持,那么您只需将流复制到 mp4 文件中,无需转码:

ffmpeg -i video.flv -codec copy video.mp4
Run Code Online (Sandbox Code Playgroud)

此类 .flv 文件非常罕见。

这个过程比解码和重新编码整个音频和视频数据要快得多。

2) 使用 H.264 视频和 Nellymoser/Speex 音频转换 .flv 文件

如果一个或多个视频具有 H.264 视频和 Nellymoser ASAO/Speex 音频(在 .flv 文件中很常见),那么您需要复制视频(-v编解码器而不是 -codec)并转码(仅)音频:

ffmpeg -i video.flv -vcodec copy video.mp4
Run Code Online (Sandbox Code Playgroud)

3) 使用 Spark/VP6 视频和 Nellymoser/Speex 音频转换 .flv 文件

如果 flv 的视频和音频数据没有使用正确的 .mp4 编解码器进行编码(Spark 和 VP6 视频编解码器非常常见),那么您需要同时强制使用 AAC 和 H.264:

ffmpeg -i video.flv video.mp4
Run Code Online (Sandbox Code Playgroud)

4) 使用 Spark/VP6 视频和 AAC 音频转换 .flv 文件

遇到带有 AAC 音频和视频而不是 H.264 的 .flv 文件的情况很少见,但为了以防万一,这里是如何以最有效的方式将其转码为 .mp4(复制音频数据):

ffmpeg -i video.flv -acodec copy video.mp4
Run Code Online (Sandbox Code Playgroud)