如何使用静态图像将音频/音乐转换为视频(命令行)

时间:2013-05-04 22:09:47

标签: ffmpeg gstreamer avconv

我有一个音频文件,我想将其转换为视频。如果可能,我想使用静态图像出现在视频中。我已经研究了几种可能的解决方案,但它们中没有一种是完全正常的。

前一个帖子中的solution

ffmpeg -loop_input -shortest -y -i image8.jpg -i sound11.mp3 -acodec copy -vcodec mjpeg result.avi

不再起作用,因为它不会将视频扩展到音频文件的持续时间。此外,ffmpeg抱怨它已被弃用,并建议改为使用avconv。

avconv -i sound11.mp3 -strict experimental -i 341410.jpg -map 0:a  out.mp4

但图片不显示

最后我尝试了gstreamer

gst-launch filesrc location=deltio.mp3 ! mp3parse ! mp4mux name=mux filesink location=output.mp4  filesrc location=341410.jpg ! jpegdec ! x264enc ! mux.

但是我收到了错误

ERROR: from element /GstPipeline:pipeline0/GstX264Enc:x264enc0: Can not initialize x264 encoder. 
Additional debug info: gstx264enc.c(1269): gst_x264_enc_init_encoder (): /GstPipeline:pipeline0/GstX264Enc:x264enc0 
ERROR: pipeline doesn't want to preroll.

由于我想将此转换包含在Python脚本中,后一种解决方案似乎是最好的,因为GStreamer有一个Python包装器

2 个答案:

答案 0 :(得分:1)

那里有一些旧命令。我有 a script 为此目的,基本上是这个

ffmpeg -loop 1 -r 1 -i img.png -i song.m4a -qp 0 -filter:v 'crop=trunc(iw/2)*2' \
  -c:a aac -strict -2 -b:a 384k video.mp4

答案 1 :(得分:0)

连接多个GStreamer视频元素时的常见问题是元素仅支持不兼容的视频格式。 通常ffmpegcolorspace元素可以在大多数格式之间进行转换,所以请尝试:

gst-launch \
    filesrc location=deltio.mp3 \
    ! mp3parse \
    ! mp4mux name=mux filesink location=output.mp4 \
    filesrc location=341410.jpg \
    ! jpegdec ! ffmpegcolorspace ! x264enc ! mux.