Scripting 可编写脚本的实用程序,用于转换BMP+;WAV到视频(XviD)?
我正在寻找一个脚本实用程序转换成视频的BMP和一堆WAV文件。XviD需要是输出格式。如果可能的话,我希望它能在Linux(Ubuntu)上运行。一个命令行工具将是伟大的,因为我有36个视频创建这种方式。一个Scripting 可编写脚本的实用程序,用于转换BMP+;WAV到视频(XviD)?,scripting,ffmpeg,wav,video-encoding,bmp,Scripting,Ffmpeg,Wav,Video Encoding,Bmp,我正在寻找一个脚本实用程序转换成视频的BMP和一堆WAV文件。XviD需要是输出格式。如果可能的话,我希望它能在Linux(Ubuntu)上运行。一个命令行工具将是伟大的,因为我有36个视频创建这种方式。一个bash(或者[在这里插入最喜欢的脚本语言])脚本将非常适合于此。(我还需要播放不同的视频尺寸,但我可以使用其他程序调整大小。) 我曾经使用过VirtualDub(适用于Windows XP),但它似乎不能满足这些需求。不过,我可能错了。任何指向示例的指针都会很好 我还在玩ffmpeg。它似
bash
(或者[在这里插入最喜欢的脚本语言])脚本将非常适合于此。(我还需要播放不同的视频尺寸,但我可以使用其他程序调整大小。)
我曾经使用过VirtualDub(适用于Windows XP),但它似乎不能满足这些需求。不过,我可能错了。任何指向示例的指针都会很好
我还在玩ffmpeg
。它似乎完全符合要求,但我似乎无法将BMP整合到视频中。以下是我正在尝试的:
for directory in $BMP_DIRECTORY_PATH/*
do
ffmpeg \
-f image2 \
-i "$directory/Sequence %d%d%d%d%d%d.bmp" \
-r 29.97 \
-vcodec mpeg4 \
-vtag xvid \
\
-i "$file/audio.wav" \
-acodec libmp3lame \
\
$(basename $directory.avi)
done
下面是它的回复:
[...]
FFmpeg version 0.5-svn17737+3:0.svn20090303-1ubuntu6, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --extra-version=svn17737+3:0.svn20090303-1ubuntu6 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --disable-stripping --disable-vhook --enable-libdc1394 --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-armvfp --disable-neon --disable-altivec --disable-vis --enable-shared --disable-static
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 0 / 52.20. 0
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
libswscale 0. 7. 1 / 0. 7. 1
libpostproc 51. 2. 0 / 51. 2. 0
built on Apr 10 2009 23:18:41, gcc: 4.3.3
[image2 @ 0x97e5ac0]Could not find codec parameters (Video: bmp)
/home/ben/Pending/1080p_export/6/Sequence %d%d%d%d%d%d.bmp: could not find codec parameters
我已经看到了一些关于这方面的建议,但建议的内容在这里似乎不起作用
更新
以下是经过多个步骤更新的脚本:
#!/usr/bin/env bash
# bmp+wav2xvid+mp3
#
# Although it has a cryptic name, it's pretty descriptive. This script consumes BMPs (Windows bitmaps) and WAVs (Microsoft AD-PCM Waveforms) to make an XviD (MPEG-4 video) movie.
#
# By convention, you pass it a directory with one or more directories that contain:
#
# * Frames named "frame_001.bmp", "frame_002.bmp", etc.
# * Audio named "audio.wav"
#
# Author: Benjamin Oakes
# FIXME: The audio doesn't get muxed correctly. The A/V sync is off a little. At the beginning it looks pretty okay, but by the end the mouths definitely don't match up with the words that are said.
#############################################################
# NOTE: SEE `ffmpeg -formats` for a list of available formats
#############################################################
# BMP_DIRECTORY_PATH="/home/ben/Outbox/ffmpeg.fixture/"
BMP_DIRECTORY_PATH="/media/Archival Data/Video Projects Backup/Video Projects/1080p_export_dual_gray/"
# Output settings
VTAG="xvid"
VCODEC="mpeg4"
ACODEC="libmp3lame"
DIMENSIONS="1000x562"
FPS="35"
CONTAINER="avi"
if [ -d "$BMP_DIRECTORY_PATH" ]; then
echo "BMP directory exists"
# for directory in "$BMP_DIRECTORY_PATH"/*
# do
directory="/media/Archival Data/Video Projects Backup/Video Projects/1080p_export_dual_gray/1"
ffmpeg \
-f image2 \
-i "$directory/frame_%03d.bmp" \
-vcodec mpeg1video \
-sameq \
\
-r $FPS \
"../tmp/$(basename "$directory.mpg")"
ffmpeg \
-i "../tmp/$(basename "$directory.mpg")" \
-vcodec $VCODEC \
-vtag $VTAG \
-s $DIMENSIONS \
-sameq \
\
-i "$directory/audio.wav" \
-acodec $ACODEC \
-ar 8000 \
\
-f $CONTAINER \
-r $FPS \
"../tmp/$(basename "$directory")-$VTAG-$VCODEC-$ACODEC-$DIMENSIONS-$FPS.$CONTAINER"
# done
else
echo "ERROR: BMP directory does not exist"
fi
更新2
请看我的答案,看看我最后干了些什么。我觉得你想一下子干得太多了。尝试将任务分为三个独立的操作:
- 从bmp图像创建视频
- 音频中的多路复用器
- 编码为目标格式
为此,我建议使用mpeg1作为您的中间视频格式。这就是我的结论,仅供其他人参考
# bmp+wav2xvid+mp3
#
# Although it has a cryptic name, it's pretty descriptive. This script consumes BMPs and WAVs to make an XviD (MPEG-4 video) movie.
#
# By convention, you pass it a directory with one or more directories that contain:
#
# * Frames named "frame_001.bmp", "frame_002.bmp", etc.
# * Audio named "audio.wav"
#
# Author: Benjamin Oakes
# Output settings
VTAG="xvid"
VCODEC="mpeg4"
ACODEC="libmp3lame"
ABITRATE="128k"
QSCALE="1"
DIMENSIONS="1000x562"
FPS="24000/1001"
CONTAINER="avi"
if [ -d "$BMP_DIRECTORY_PATH" ]; then
echo "BMP directory exists"
for directory in "$BMP_DIRECTORY_PATH"
do
ffmpeg \
-f image2 \
-r 24000/1001 \
-i "$directory/frame_%03d.bmp" \
\
\
-i "$directory/audio.wav" \
\
\
-vcodec $VCODEC \
-vtag $VTAG \
-qscale $QSCALE \
-s $DIMENSIONS \
-r $FPS \
\
-acodec $ACODEC \
-ab $ABITRATE \
\
"../tmp/$(basename "$directory").avi"
done
else
echo "ERROR: BMP directory does not exist"
fi
这帮了大忙——我正在发布上面更新的脚本。不过,我在混音音频时遇到了问题。(A/V同步已关闭。)您对导致A/V同步问题的原因有何看法?我正在考虑提出一个新的问题。他们减价多少?在1秒以下,但仍然疼痛?添加的剪辑越多,问题就越严重吗?你在做多少剪辑?是的,也许对一个新问题来说最好。但我会先分析各个组件的长度,然后再进行连接和重排。您应该能够修剪/填充音频,使其完全匹配。可能还有其他技术。是的…另一个问题…如果你正在动态调整音频速率,那么你可能会遇到问题。尝试保留本机音频速率。(视频也一样。)调整任何一个速率闻起来都可能导致同步错误……我喜欢舍入。。。