0

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

解决方案在上一个线程中

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 包装器

4

2 回答 2

1

它们是那里的一些旧命令。我有 一个 为此目的的脚本,本质上是这个

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
于 2013-05-04T23:26:31.140 回答
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.
于 2013-05-05T15:57:00.310 回答