所以我有一个令人难以置信的麻烦构建Mac的ffmpeg的二进制文件,可以正常工作满足我的所有需求。我有一个较旧的版本,可以毫无问题地很好地重新编排h264视频,但缺少我需要的库,即libspeex。我基于ffmpeg的git构建了一个更新的版本,其中包含libspeex,但在尝试从具有错误时间码的.flv文件(从rtmpdump进行实时转储)中重新构建h264时崩溃。所以我有两个ffmpeg二进制文件,每个都会执行我需要的一半。这是我作为当前.command文件:如何解析ffprobe输出并根据结果运行ffmpeg?
for f in ~/Desktop/Uploads/*.flv
do
/usr/local/bin/ffmpeg -i "$f" -vcodec copy -acodec libfaac -ab 128k -ar 48000 -async 1 "${f%.*}".mp4 && rmtrash "$f" || rmtrash "${f%.*}".mp4
done
这ffmpeg的二进制有包括libspeex所以它可以解码的FLV的输入文件的Speex音频。什么我希望做的是这样的伪代码(我在伪第一次尝试,所以裸跟我来!):
for f in ~/Desktop/Uploads/*.flv
do
ffprobe input.flv
if Stream #0:1 contains speex
ffmpeg-speex -i input.flv -acodec copy -async 1 output.m4a
fi
ffmpeg-h264 -i input.flv -vcodec copy output.mp4
MP4Box -add output.mp4 -add output.m4a finaloutput.mp4
done
是这样的可能吗?有没有其他的选择? (任何人都想用libspeex,libfaac和libx264构建Mac的ffmpeg?D)所有想法都欢迎在这里!谢谢。
ffprobe的输出是什么样的?运行grep可能会非常简单。 – 2012-04-02 23:51:44
'输入#0,flv,来自'/Users/Greeny/Desktop/input.flv':持续时间:00:37:01.36,开始:0.000000,比特率:351 kb/s Stream#0:0:Video:h264 (Main),yuv420p,320x240 [SAR 1:1 DAR 4:3],15 tbr,1k tbn,30 tbc Stream#0:1:Speex,16000 Hz,1 channels,s16' – 2012-04-02 23:58:38
评论是不可能的格式! -.- – 2012-04-03 00:02:45