Q:我采用ffmpeg调用x264一直出错,命令如下
ffmpeg -s 352x288 -r 50 -pix_fmt yuv420p -i tmp.yuv tmp.h264
可不可以给点建议,找了很久也没有找到解决办法,错误时error while opening encoder for output stream 0.0 maybe incorrect parameters,先谢了
A。-vcodec libx264 没加?
加了也是一样
你把 x264编进去没
ffmpeg -s 176x144 -pix_fmt yuv420p -r 30 -b 200000 -i foreman_part_qcif.yuv -vcodec libx264 new1.h264
-qmin 10 -qmax 51 -qdiff 4 -me_range 16 -keyint_min 25 -qcomp 0.6
boradcasting 或者 streaming 的应用,CBR都首要优先满足的条件
现在那些高清电视台为什么要使用占用几十兆的资源的mpeg2 ts流来播放,一个主要原因就是因为h.264没有真正cbr,而mpeg2就有
streaming 应用其实也能处理一定程度的VBR,但是在某些时候,为了处理VBR码流的不稳定带来的开销远远超过它带来的好处,不如用CBR,甚至多花几倍的存储和带宽都无所谓
一直很困惑,CBR这种在boradcasting 和 streaming的大型工业级的应用上非常重要的东西,h.264是怎么考虑的
1、VBR 适合的应用场景是媒体存储,而不是网络传输,因此不要让武状元去当文官;
2、其实实际网络传输中所谓的 CBR 一般都是 ABR(平均比特率),即只要是单位时间内把码率控制在额定码率就可以了,因为编码输出本来就有缓冲可以起到平滑波动的作用;
3、你所谓的严格意义上的 CBR 是每一帧都分配同样的码字,试想一下,如果某一帧所需要的码字本来就很少,而你却一定要给它分配很多码字,那不是浪费么?另一方面,如果某一帧所需要的码字本来就多,而你却给得很少,那这帧的效果会很差。这样编下来,整体序列质量会忽好忽坏地不停发生跳变,反而对视觉冲击很大;因此 ABR 才是最适合网络传输的方案;
4、无论是 CBR、ABR 还是 VBR 都是属于码率控制,而码率控制是视频编码的开放部分,它不会改变码流结构的合法性,因此无论在 MPEG2、MPEG4 还是 H.263、H.264 当中都没有做规定;
5、由于目前的视频编码标准都是基于块编码的混合编码框架,因此一个码率控制算法可以用到任何协议上(当然有时候需要做点小的改动),只不过是控制效果好不好的问题,没有哪个 RC 是专属哪个协议的。
楼主的需求就是一种非常硬性的CBR码率控制解决方案,这种解决方案要做到每一个帧的输出比特几乎相同(或误差相当小,甚至小到可以忽略不计)。上面诸多同仁的讨论中已经指出,通过插入(无效的)比特来填充帧编码的比特是一种合理的解决方案,我也认为这可能是必要的一种解决方法了。
我是这样考虑这个问题的:
其一:如果不计编码次数,我们可以对确定的一帧枚举若干给定QP值的编码结果,然后选取不超过但最接近目标比特率的帧编码QP,再填充无效比特;也可以在选择出QP值的基础上,做宏块级枚举QP,微调QP值,以达到更接近目标比特率。这样的一种解决方案想来没有人会喜欢,因为反复编码次数太多,效率太低。但是这种方法可以近最大可能地保留有效比特。
其二:按照楼主的这个需求和您给出的图示,我发现您的应用在1280X534,甚至是1080p。目标比特率以Mkbps为单位,在24Hz和30Hz,在高清画质上做编码。我的经验是,如果给定的比特率足够高,即将此问题放在中高带宽下的码率控制的讨论中,则楼主的问题才具有现实的意义。因为中高比特率下的码率控制要比中低比特率下的好控制的多。
我对这个问题非常感兴趣,若有空闲希望做进一步的深入。稍早些时候我也考虑过这个问题,但是限于知识面太窄,不清楚具体是否有价值作这个问题。楼主在讨论中给出的应用需求和相关背景非常具有参考意义。
我希望给楼主请教一个问题:我看到你给出的图是用bitrate viewer 这个应用程序作图。以前我没有见过,效果还挺好。我想问,这个应用程序是您自己写的还是哪里可以提供的呢?
今晚太困,话不成句,若有闲暇,后作修订。
分享到:
相关推荐
使用ffmpeg 命令, 把音频转化成固定帧长的aac 音频; 也可以转换成其它音频; 支持的输入格式可以是wav,MP3,aac 等主流音乐
在windows平台下,ffmpeg嵌入带有中文的字幕时,可能因为没有设置合适的字体而无法正常嵌入字幕。该文件提供了一份ffmpeg字体设置,用户可以修改里面的字体。
ffmpeg 采集麦克风音频数据,通过设置dshow 的 audio_buffer_size 选项降低延迟。
ffmpeg及其ffmpeg在vc工程中的设置(配置) ffmpeg在vc工程中的设置(配置) 1、设置头文件和库文件路径 在VC6.0下 Tools->options->Directories 对于 show directory 选择“inlcude files” 添加include文件...
ffmpeg
Windows下安装 ffmpeg 添加时间戳 简单教程 图像处理
该软件是一款完全免费的视频封面制作工具,可以一键导出视频中的画面作为封面。 另存为(jpg格式),不限制数量,只要你机器配置高,处理非常快。 操作非常简单,只需要你拖拽文件夹或者文件到列表即可。...
redhat安装ffmpeg所有安装包 /usr/local/ffmpeg/ffmpeg-3.2.4/libavdevice /usr/local/ffmpeg/ffmpeg-3.2.4/libavfilter /usr/local/ffmpeg/ffmpeg-3.2.4/libavformat /usr/local/ffmpeg/ffmpeg-3.2.4/...
C#视频示例 演示C#如何调用ffmpeg API ffmpeg版本需要和FFmpeg.AutoGen对应,这里使用3.4版本
C# ffmpeg.autogen 拉流
FFmpeg动静态库包含32+64位
最新ffmpeg支持https
Android ffmpeg .a .so库(ffmpeg 4.4.1)
ffmpeg windows 可用安装包。
FFmpegAPI使用手册 FFmpeg的基本组成 FFmpeg 的编译安装 FFmpeg 编码支持与定制...
ffmpeg就这几个函数: ffmpeg_movie: The ffmpeg_movie object provides methods to query and manipulate movies and audio tracks. ffmpeg_frame: The ffmpeg_frame object provides methods to query ...
ffmpeg5.12版本x86库
linux 下一键安装ffmpeg脚本,方便简单,一条命令就可以搞定,我用的是centos7系统。 FFmpeg 是一套处理多媒体文件的软件库。凭借这些强大的库,FFmpeg 能够转换格式、推流以及处理音频和视频文件。许多 Linux 的...
ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg ffmpeg
FFmpeg易语言应用例程。@515889127。Tags:FFmpeg易语言例程。