[Libav-user] Setting bitrate inside DASH manifest when encoding to H.264 with constant quality

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[Libav-user] Setting bitrate inside DASH manifest when encoding to H.264 with constant quality

Przemysław Sobala

Hello

I'm wondering, if there's a way to set representation's bandwidth (bitrate) parameter when encoding with libx264 with constant quality (crf)? In my code I'm calculating stream's bitrate by adding muxed packet sizes but in the end I cannot pass it to the DASH muxer.

I thought the best way would be to set the final bitrate before calling av_write_trailer function (because internally it calls dash_write_trailer->dash_flush->write_manifest) but DASHContext structure is initialized earlier (with dash_init function) with default bitrates set and also it's not available via the API - I can access it by AVFormatContext->priv_data but it's type is uknown - void* - and casting is unavailable since this struct if for internal use only.


--
Best regards
Przemysław Sobala


_______________________________________________
Libav-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/libav-user
Reply | Threaded
Open this post in threaded view
|

Re: Setting bitrate inside DASH manifest when encoding to H.264 with constant quality

Przemysław Sobala
OK, I've narrowed it down to 2 solutions:
1) (the one that doesn't involve changing FFmpeg's code) I can make a copy of DASHContext struct, maintain any changes that will be made, and set the bitrate by DASHContext *c = fmt_ctx->priv_data before calling av_write_trailer
2) Can setting the bitrate be done by adding a AVOption code to DASH muxer and later calling any av_opt_set_* function (the difficult part is that the bitrate must be set for an array of dynamically allocated OutputStreams inside DASHContext) ?

--
Best regards
Przemysław Sobala

On Thu, Feb 16, 2017 at 10:07 AM, Przemysław Sobala <[hidden email]> wrote:

Hello

I'm wondering, if there's a way to set representation's bandwidth (bitrate) parameter when encoding with libx264 with constant quality (crf)? In my code I'm calculating stream's bitrate by adding muxed packet sizes but in the end I cannot pass it to the DASH muxer.

I thought the best way would be to set the final bitrate before calling av_write_trailer function (because internally it calls dash_write_trailer->dash_flush->write_manifest) but DASHContext structure is initialized earlier (with dash_init function) with default bitrates set and also it's not available via the API - I can access it by AVFormatContext->priv_data but it's type is uknown - void* - and casting is unavailable since this struct if for internal use only.


--
Best regards
Przemysław Sobala



_______________________________________________
Libav-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/libav-user