أداة قابلة للبرمجة لتحويل BMPs + WAV إلى فيديو (XviD)؟
-
19-09-2019 - |
سؤال
أنا أبحث عن أداة مساعدة قابلة للبرمجة لتحويل مجموعة من ملفات BMP وملف WAV إلى فيديو.يجب أن يكون XviD هو تنسيق الإخراج.أرغب في أن يعمل على Linux (Ubuntu) إن أمكن.ستكون أداة سطر الأوامر رائعة، حيث أن لدي 36 مقطع فيديو لإنشاءها بهذه الطريقة.أ bash
(أو [أدخل لغة البرمجة النصية المفضلة هنا]) سيكون البرنامج النصي رائعًا لهذا الغرض.(أحتاج أيضًا إلى تجربة أبعاد فيديو مختلفة، لكن يمكنني استخدام برامج أخرى لتغيير الحجم.)
لقد جربت VirtualDub (لنظام التشغيل Windows XP)، لكن يبدو أنه لا يلبي هذه الاحتياجات.قد أكون مخطئا بالرغم من ذلك.أي مؤشرات للأمثلة ستكون رائعة.
أنا أيضا ألعب مع ffmpeg
.يبدو أنه يناسب مشروع القانون تمامًا، لكن يبدو أنني لا أستطيع تجميع BMPs معًا في مقطع فيديو.إليك ما أحاول:
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
يرجى الاطلاع على إجابتي لما انتهى بي الأمر إلى العمل.
المحلول 2
هذا هو ما انتهى به الأمر، لمجرد مرجع الآخرين.
# 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
نصائح أخرى
أعتقد أنك تحاول أن تفعل الكثير في وقت واحد.حاول تقسيم المهمة إلى ثلاثة إجراءات منفصلة:
- إنشاء فيديو من صور bmp
- مكس في الصوت
- ترميز إلى التنسيق المستهدف
ولتحقيق هذه الغاية، أقترح استخدام mpeg1 كتنسيق وسيط للفيديو.