如果可能的话,我想将以下两个命令合并为一个命令。
来自 audio.mp4 的音频位于来自 video.mp4 的视频之上,输出到 temp.mp4
ffmpeg -i 视频.mp4 -i 音频.mp4 -map 0:v:0 -map 1:a:0 -shortest -s hd1080 -r 24 temp.mp4
将字幕从 subtitles.ass 硬编码到 temp.mp4,并输出到 final.mp4
ffmpeg -i temp.mp4 -vf "ass=subtitles.ass" final.mp4
那么,有没有办法在重新映射两个视频源的流的同时对字幕进行硬编码?我尝试过的所有方法都只会导致视频没有字幕。本质上,我想避免双重渲染。
到目前为止,我已经解决了所有 ffmpeg 问题,但这个问题却让我很困惑。
谢谢!
系统信息:Windows 7
ffmpeg信息:
ffmpeg 版本 N-54277-gff130d7 版权所有 (c) 2000-2013 FFmpeg 开发人员于 2013 年 6 月 30 日 01:25:12 使用 gcc 4.7.3 (GCC) 配置构建:--enable-gpl --enable-version3 --disable-w32threads --enable-av isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab le-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetyp e --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --ena ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-l ibopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libsp eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-libvo- amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 52. 37.101 / 52. 37.101 libavcodec 55. 17.100 / 55. 17.100 libavformat 55. 10.100 / 55. 10.100 libavdevice 55. 2.100 / 55. 2.100 libavfilter 3. 77.101 / 3. 77.101 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100
答案1
ffmpeg -i video.mp4 -i audio.mp4 -map 0:v:0 -map 1:a:0 -shortest -s hd1080 -r 24 temp.mp4 && ffmpeg -i temp.mp4 -vf "ass=subtitles.ass" final.mp4
试过这个吗?我所做的就是first CMD && second CMD
让它执行第一个命令,如果正确执行,则执行第二个命令。如果第一个失败,它应该放弃并停止。
答案2
我想你需要
ffmpeg -i video.mp4 -i audio.mp4 -vf "[0:v:0]ass=subtitles.ass[out]" -map out -map 1:a:0 -shortest -s hd1080 -r 24 final.mp4
[0:v:0]ass=subtitles.ass[out]
将获取您需要的视频,然后将其重定向到命名的流out
,然后我们用map
它来映射它。