使用CMD调用FFMPEG.exe转换格式,我要在界面上显示转换进度条,我可以使用管道获取FFMPEG.exe的输出内容,但我不知道哪个是总帧数哪个是总时长

CppPower 2009-07-13 03:31:12
使用CMD命令行调用FFMPEG.exe转换格式,我要在界面上显示转换进度,我可以使用管道获取FFMPEG.exe的输出内容,但我不知道哪个是总帧数哪个是总时长

我使用下面的命令调用FFMPEG.exe来转换3GP文件
C:\libm9s.exe -i C:\1.AVI -vcodec mpeg4 -f 3gp -b 120k -r 14.99 -s 176x144 -ar 8000 -ab 12.2k -ac 1 -y C:\1.3GP

从CMD上返回的信息如下:

Input #0, mpeg, from 'C:\1.MPG':
Duration: N/A, start: 0.213367, bitrate: N/A
Stream #0.0[0x1e0]: Video: mpeg1video, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 1700 kb/s, 29.97 tb(r)
Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16, 224 kb/s
Output #0, 3gp, to 'c:\1.3GP':
Stream #0.0: Video: mpeg4, yuv420p, 176x144 [PAR 12:11 DAR 4:3], q=2-31, 120 kb/s, 14.99 tb(c)
Stream #0.1: Audio: libamr_nb, 8000 Hz, mono, s16, 12 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 69 fps= 0 q=4.2 size= 102kB ffmpeg_release_time=4.24=ffmpeg_release_time bitrate= 196.4kbits/s
frame= 163 fps= 0 q=5.5 size= 218kB ffmpeg_release_time=10.40=ffmpeg_release_time bitrate= 171.5kbits/s
[mpeg1video @ 0x16745a0]ac-tex damaged at 7 8
[mpeg1video @ 0x16745a0]Warning MVs not available
[mpeg1video @ 0x16745a0]concealing 300 DC, 300 AC, 300 MV errors
frame= 177 fps=164 q=3.8 Lsize= 250kB ffmpeg_release_time=11.26=ffmpeg_release_time bitrate= 182.2kbits/s

video:228kB audio:18kB global headers:0.kB muxing overhead 1.908752%

frame= 177 //应该是当前帧的数据
size= 250kB //应该是当前文件大小的数据
ffmpeg_release_time=11.26 // 这个是什么时间??

另外上面信息里并没有描述源文件的总帧数和总时长啊,那进度条没法做吗?是不是还有别的参数可以取到?


...全文
2429 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yy10100825 2012-08-31
  • 打赏
  • 举报
回复
嗯,确实,没有人告诉一个好点的方法么?7楼说的很可能是你的参数错了。或路径不对的。
fengxingxiake 2012-02-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lovezhizi 的回复:]
请问下利用ffmeg怎么转换成.3gp 我用的是老早的版本
[/Quote]下个新版本呗,不要啃老
lovezhizi 2010-06-24
  • 打赏
  • 举报
回复
请问下利用ffmeg怎么转换成.3gp 我用的是老早的版本
化蝶自在飞 2009-08-18
  • 打赏
  • 举报
回复
我也是想实现这个功能.目前还没有搞定cmd下持续执行.cmd一闪就过了
化蝶自在飞 2009-08-18
  • 打赏
  • 举报
回复
谦虚点,呵呵.有点播总比没有强.
嵌入式linux 2009-08-03
  • 打赏
  • 举报
回复
发现这里很多人在回答问题时候,总是一两句话就搞定了
好像要显示自己很牛?
嵌入式linux 2009-08-03
  • 打赏
  • 举报
回复
ffmpeg的api?能不能解释的清楚点呢?不是很明白
jinlking 2009-07-14
  • 打赏
  • 举报
回复
我用mencoder做了进度条,好久以前做过,好像是直接分析字符串提取百分比
用DShow做界面,用mencoder做转换核心。
说起来好像ffmpeg是mencoder的一个子项目。

管道里面没有这个信息,那就木有办法了。
建议你还是不要像这样多进程的来做,使用ffmpeg的api来做,虽然麻烦一点,但是使用起来灵活,对你以后的帮助也很大。但是花的时间可能就要长很多。
ffmpeg里面就有分析文件的api函数,直接调用就可以得到媒体文件的格式 长度 比特率等等信息。
然后指定outputformat就可以转换了。
CppPower 2009-07-14
  • 打赏
  • 举报
回复
谢谢楼上的回复
我要做一个3GP转换器,要做进度条,所以必须要事先知道总帧数或者总时长
你所说的177帧是转换结束后才知道的啊,并不是开始转换时就给出来的
另外,“每秒15帧”在CMD的内容里也没有这个啊,难道是规定的?
mencoder直接给出百分比了,但转换后的文件有些打不开,可能是参数不对
jinlking 2009-07-13
  • 打赏
  • 举报
回复
我也做过类似的事情 不过使用的mencoder 也是用的管道重定向
现在基本上用ffmpeg的sdk来写了,用起来方便。
你播放一下你的文件 看有没有11.26s

177帧的,如果每秒15帧,117/15 = 11.8 差不多了
CppPower 2009-07-13
  • 打赏
  • 举报
回复
没人回答啊
继续等待啊

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧