lance
lance
可惜并不是最新的3.3接口,比如 ``` avcodec_parameters_from_context``` ```avcodec_send_packet/avcodec_receive_frame ```
@weiless 如果对画质有要求,可以通过设置合理分辨率、码率来改善。请获取最新代码。
@weiless https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profiles 对于profile的描述:The standard defines a sets of capabilities, which are referred to as profiles, targeting specific classes of applications 对于baseline的描述:this profile is used in some videoconferencing and mobile applications。
你好, 正方形预览是什么意思? 你把surfaceview设置为正方形,就好像是你把一个界面调整为宽高相等。 你的预览分辨率需要getSupportedPreviewSizes查看你android设备支持的预览分辨率。 你可以看看 ` VideoPusher#setPreviewSize(parameters) ; ` 而编码的分辨率、码率是在 ` VideoPusher#setPreviewOrientation(parameters); ` 传递给c层。 最后在 ` onPreviewFrame ` 回调中获取预览数据并根据设备当前朝向进行计算后得到原始nv21数据进行编码打包。
如果你获取设备支持的预览分辨率只有320x240,那么你setPreviewSize只能用320x240这一个,不能使用240x320,更不能设置为其他,否则会出现错误。 如果设置了不支持的PreviewSize,会抛出setParameters failed错误。 另外surfaceview的宽高与图像数据的分辨率无关。 而你的回调数据是由你分辨率以及预览格式决定的,比如你预览格式为nv21,那么你每帧的数据字节数为: ` width(320)*height(240) * ImageFormat.getBitsPerPixel(ImageFormat.NV21)/8 `
你在android上的预览分辨率只能是那些,不能变的。 但是你可以对数据二/三次线性插值等进行缩放, 可以看看ffmpeg的sws_scale函数。
我说了,你改变的只是surfaveview的物理大小,分辨率还是那样。 你应该在onPreviewFrame中把获取的帧数据进行缩放。 你要缩放->编码->推送。 缩放这里没写。你要自己去实现。
@tz-xiaomage 6.0的 xxx.so has text relocations. This is wasting memory and is a security risk. Please fix。 其实以前也存在,只是以前是warning,而6.0升级成error了。 另外这个东西是我空闲之余,无聊时候写的。或许等我有空时我才会继续来学习这一块。 很多地方都是Copy paste,有点粗糙。 我已经把jni上传上来了,编译环境是mac 10.11,压缩包中已经有编译好的faac/x264静态库。 https://github.com/liuxang/LivePublisher/blob/master/jni.tar.gz
直接在这说
@jinyunfeng 你可以先使用obs或者ffmpe命令测试下服务器地址。