我有一个音频文件,我想将其转换为视频。如果可能,我想使用静态图像出现在视频中。我已经研究了几种可能的解决方案,但它们中没有一种是完全正常的。
前一个帖子中的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包装器
答案 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.