我下载了一些 FLV 文件,想将它们转换为 MP4。它们已经是正确格式了,所以我被告知只需使用复制/传递功能将视频和音频流重新混合到 MP4 容器中即可。
我使用的是 64 位 Windows 7,并且已经将 FFmpeg 作为 get_iPlayer 的一部分。
我正在努力弄清楚这个命令行,可以吗?
是否也可以用同样的方式批量处理多个 FLV 文件?
答案1
它应该是这样的:
ffmpeg -i yourvideo.flv -codec copy output.mp4
您可以使用 FOR 命令循环遍历文件(它会沿着树递归):
FOR /R C:\dir\ %%F IN (*.flv) do ffmpeg -i "%%F" -codec copy "%~nF.mp4"
需要澄清的是,%~nF 仅返回姓名文件名的部分(不带扩展名)。
答案2
它们已经是正确的格式
.flv 视频是复杂的文件,可以包含多种类型的音频和视频。要检查 .flv 文件的音频和视频编解码器,您可以使用:
1.ffmpeg
ffmpeg -i video.flv
(对于你的情况)应该输出如下内容:
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
或者
此 .flv 文件包含 H.264 视频和 AAC 音频,它们恰好是 .mp4 容器的正确格式/编解码器。
以下是此类 .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
这样的.flv 文件非常罕见。
该过程比解码和重新编码整个音频和视频数据要快得多。
2) 转换带有 H.264 视频和 Nellymoser/Speex 音频的 .flv 文件
如果一个或多个视频具有 H.264 视频和 Nellymoser ASAO/Speex 音频(在 .flv 文件中很常见),那么您需要复制视频(-五codec 而不是 -codec) 并转码 (仅) 音频:
ffmpeg -i video.flv -vcodec copy video.mp4
3)使用 Spark/VP6 视频和 Nellymoser/Speex 音频转换 .flv 文件
如果 flv 的视频和音频数据未使用 .mp4 的正确编解码器进行编码(Spark 和 VP6 视频编解码器非常常见),那么您需要力量AAC 和 H.264:
ffmpeg -i video.flv video.mp4
4) 使用 Spark/VP6 视频和 AAC 音频转换 .flv 文件
很少会遇到带有 AAC 音频和视频(而非 H.264)的 .flv 文件,但为了以防万一,这里介绍了以最有效的方式将其转码为 .mp4 的方法(复制音频数据):
ffmpeg -i video.flv -acodec copy video.mp4