我的网站上有很多MP3文件,我决定将它们上传到Youtube,但不幸的是,Youtube不允许我这样做。它只需要视频格式。
如何将这些MP3转换为视频并将相同的图像集(一个或多个图像)添加到生成的视频格式中。
我需要批量执行此操作,而不是单独执行此操作,我有数百个MP3文件。
它可以是基于Windows或基于Linux的应用程序。
我的网站上有很多MP3文件,我决定将它们上传到Youtube,但不幸的是,Youtube不允许我这样做。它只需要视频格式。
如何将这些MP3转换为视频并将相同的图像集(一个或多个图像)添加到生成的视频格式中。
我需要批量执行此操作,而不是单独执行此操作,我有数百个MP3文件。
它可以是基于Windows或基于Linux的应用程序。
Answers:
Ubuntu和其他Linux系统有一些解决方案 http://ubuntuforums.org/showthread.php?t=1686664 。大多数是shell命令或一些其他快速脚本语言,可以为所有MP3循环,输出视频文件。然后,您可以将视频文件排队以上传到YouTube。在页面上列出的解决方案中:
FFmpeg,然后将文件上传到YouTube
ffmpeg -loop 1 -i picture.jpg -i music.mp3 -shortest -acodec copy video.mp4
相应地循环播放所有mp3文件,然后上传所有生成的视频文件。
Python,转换为mp4然后将文件上传到YouTube
#! /usr/bin/env python
import sys, os
inputOne = sys.argv[1]
inputTwo = sys.argv[2]
for i in sys.argv[1:]:
if '.mp3' in i:
output = i.replace('mp3','mp4')
cmd = 'ffmpeg -loop_input -i "'+inputOne+'" -i "'+inputTwo+'" -shortest -acodec copy "'+output+'"'
os.system(cmd)
它还使用ffmpeg,并接受音乐和图片作为参数。
你也可以考虑简单的bash oneliner而不是python脚本 -
for i in *.mp3; do ffmpeg -v quiet -i "picture.jpg" -i "$i" -shortest -acodec copy "`sed 's/mp3/mp4/g'<<<$i`"; done
这将使用picture.jpg将当前目录中的所有mp3文件转换为mp4视频。
将flac转换为mp3即可
for i in *.flac; do ffmpeg -v quiet -i "$i" -ab 320k -ac 2 -ar 48000 "`sed 's/flac/mp3/g'<<<$i`"; done
注意 “-v quiet” 这关闭了ffmpeg的大声嘴,并在$ i和$周围加倍报价 sed
- 这将确保它不会因包含空格的文件名而失败。
提示:转换为视频需要相当长的时间(至少对我而言)。尝试使用 - 线程4 (或任何其他值,当然。它对单核cpu没有任何意义)
编辑: 我发现“-loop 1”(由其他人建议)创建了循环(多么令人惊讶!),这实际上是无限的。在我的gentoo上,这意味着它会吃掉你所有美味的食物。没有“-loop 1”它可以正常工作,所以我建议你顺其自然。
loop_input
在ffmpeg中弃用 - 您需要使用-loop 1
现在。