使用缩略图将Mp4转换为Mp3


8

我可以在ffmpeg中将mp4转换为mp3,但不确定如何在视频缩略图中添加。

当前有它可以从mp4转换为mp3

ffmpeg -i video.mp4 -acodec libmp3lame -metadata title=video -b:a 256 -f input.mp3

然后,我是否必须使用此命令再次通过ffmpeg运行它?

ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3

还是有什么方法可以使用复杂的过滤器来实现这一次运行?

我知道这适用于FLV,但似乎不适用于mp4

ffmpeg -i video.flv -i cover.jpg -map 0:a -map 1 -c:v copy -metadata title=video -b:a 256k out.mp3

您真的要转换为自动设置缩略图吗?因为否则您可以手动更改它,但是我不确定是否要这样做。如果您可以使用FLV而不是MP4做到这一点,那么我只需要编写一个运行两个命令的脚本即可。
RamonRobben

@RamonRobben我试图避免不得不运行ffmpeg两次
nadermx

您可以尝试这样的操作ffmpeg -i in.mp4 -i test.png -map 0:0 -map 1:0 -c copy -id3v2_version 3 -metadata:s:v title =“专辑封面” -metadata:s: v comment =“ Cover(Front)” out.mp3我自己下载ffmpeg,开始对其进行测试。
RamonRobben

Answers:


3

更好的答案,加上解释,并结合了来自slhck和Mulvya的聪明建议,去除了不必要的参数。

ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -b:a 256k -c:v copy -map 0:a:0 -map 1:v:0 output.mp3

ffmpeg 音频/视频处理工具:OP已选择的工具,特别适合此工作。

-i video.mp4 第一个输入文件:包含我们要提取的音频的视频。

-i cover.jpg 第二个输入文件,当我们播放结果音频文件时要显示的图像。

-acodec libmp3lame 我们要使用LAME编码器创建一个.mp3文件。

-b:a 256k这会将音频轨道的比特率设置为恒定的256Kb / s。一个更明智的选择是使用可变的比特率进行编码,并指定质量参数:-q:a 0要求最高的质量,而-q:a 4通常是在感知的音频质量和比特率(以及文件大小)之间做出很好的折衷。

-c:v copy这表示视频流(.jpg图像)将不会重新编码,而必须照原样复制。当重新编码为有损格式时,这有助于避免不必要的处理和潜在的质量损失。在我们的情况下,如果没有此参数,则图像将从.jpg解码并编码为.png,这显然是默认情况下选择的本机格式。由于.png是丢失文件,因此这并不代表质量下降,但由于.jpg(有损耗)通常提供更好的压缩率,因此通常会导致文件大小增加。

-map 0:a:0这将从第一个(0:)输入文件中选择要使用的流:它必须是它包含的第一个(:0)音频(a)流。

-map 1:v:0这将从第二()输入文件中选择第一(:0)视频(v)流1:

output.mp3 明智地选择了此参数的名称,以便已经建议它必须是要为包含我们要创建的合并图像的输出音频(.mp3)文件提供的名称。

原始答案

通过将婚礼中的视频(.mp4)和图片(.jpg)放在一起,可以创建带有静态图像的音频(.mp3)文件:

ffmpeg -i video.mp4 -i cover.jpg -acodec libmp3lame -metadata title=video -b:a 256k -map_metadata 0 -map 0:1 -map 1 output.mp3

有关使用来选择输入流的信息,请参见ffmpeg 文档-map

我首先简单地运行了命令,-map 0 -map 1并得到了以下信息:

Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> png (native))
  Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
  Stream #1:0 -> #0:2 (mjpeg (native) -> png (native))

因此,我知道我想要1从索引号为0的文件(即视频文件)中流(AAC音频)。因此,必须使用明确选择它-map 0:1 -map 1


我已经尝试过了,但它给了我 Stream map '0:1' matches no streams. To ignore this, add a trailing '?' to the map.
nadermx

使用“ -map 0 -map 1”运行它,然后查看可用的流。
simlev

Stream mapping: Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame)) Stream #1:0 -> #0:1 (mjpeg (native) -> png (native))
nadermx

1
@nadermx您可以-map 0:a:0 -map 1:v:0分别选择第一个文件和第二个文件的第一个音频和视频流。
slhck

1
避免对图像输入进行编码,尤其是使用JPG编码时。 -c:v copy
Gyan

2

您可以使用vlc媒体播放器-

步骤1:打开VLC,然后选择“媒体”。单击转换/保存。

步骤2:在出现的下一个窗口中,选择“添加”,然后选择要转换的视频文件(MP4)。

步骤3:接下来,单击“转换/保存”上的向下箭头,然后单击“转换”。

步骤4:在出现的下一个窗口中,确保已选择“转换”按钮。继续选择您要创建的音频文件的类型。在本例中,我们将其转换为MP3文件。

步骤5:选择输出目的地,然后按“开始”。VLC随后将开始转换。

要添加缩略图,您可以参考此链接(非常好解释)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.