Yea, I commented it out, but same result.
I did noticed that even though I got rid of the deprecated compile warnings, it 
still outputs to the log:

Output #0, mp4, to 'enc.mp4':
    Stream #0:0: Unknown: none (h264_nvenc) ([33][0][0][0] / 0x0021)
av_dump_format enc.mp4
[mp4 @ 0xfd5d60] Using AVStream.codec to pass codec parameters to muxers is 
deprecated, use AVStream.codecpar instead.
[mp4 @ 0xfd5d60] dimensions not set
ERROR:avformat_write_header::

Since the log is mp4 the problem is in the output context, right?

Arn't these the dimensions it wants: I have added it before and after the 
avcodec_parameters_to_context call

   av_encode_codec_ctx->width       = 1024;   /// \note multiple of 2
   av_encode_codec_ctx->height      = 768;   /// \note multiple of 2

I also assumed I don't need the AVFrame yet since I did not see a dependency to 
get the output stream started.

Thanks
cco

On 08/23/2016 07:44 AM, salsaman wrote:
You are calling: avcodec_parameters_to_context( av_encode_codec_ctx, parameters 
) but I think that is not in the example. Maybe only needed
for decoding ?

On Tue, Aug 23, 2016 at 9:30 AM, Charles <[email protected] 
<mailto:[email protected]>> wrote:

    Just posted the current version
    https://gist.github.com/LinuxwitChdoCtOr/74c1721dd7688cf1d16509ea2a52d231
    <https://gist.github.com/LinuxwitChdoCtOr/74c1721dd7688cf1d16509ea2a52d231>
    Thanks
    cco


    On 08/23/2016 07:22 AM, Charles wrote:

        Thank you for looking.

        Yes, I pretty much started there, and pretty much have it open all the 
time.
        From what I can tell my code is doing the same thing:

           av_encode_codec_ctx = avcodec_alloc_context3( av_encode_codec );
           if ( !av_encode_codec_ctx ) { PRINT_AV_ERROR( 
"ERROR:avcodec_alloc_context3:" ); return -1; }
           av_encode_codec_ctx->bit_rate    = 5e6;
           av_encode_codec_ctx->width       = 1024;   /// \note multiple of 2
           av_encode_codec_ctx->height      = 768;   /// \note multiple of 2
           av_encode_codec_ctx->time_base   = (AVRational) { 1, 60 }; //* 2;
           av_encode_codec_ctx->gop_size    = 15;      // Intra frames per x P 
frames
           av_encode_codec_ctx->pix_fmt     = AV_PIX_FMT_YUV420P; // (MUST) DO 
NOT CHANGE nvenc required

        That code does not setup the output with
           avio_open( &av_out_fmt_ctx->pb, f.c_str(), AVIO_FLAG_WRITE )
           avformat_write_header( av_out_fmt_ctx, NULL )

        The header is where I see my error, either the muxer is unhappy or the 
encoder is unhappy

        Output #0, mp4, to 'enc.mp4':
            Stream #0:0: Unknown: none (h264_nvenc) ([33][0][0][0] / 0x0021)
        av_dump_format enc.mp4
        [mp4 @ 0x786d60] Using AVStream.codec to pass codec parameters to 
muxers is deprecated, use AVStream.codecpar instead.
        [mp4 @ 0x786d60] dimensions not set
        ERROR:avformat_write_header::

        Thanks
        cco

        On 08/23/2016 07:01 AM, salsaman wrote:

            Charles,
            perhaps the example here can help ?

             
https://ffmpeg.org/doxygen/3.1/decoding__encoding_8c_source.html#l00347
            
<https://ffmpeg.org/doxygen/3.1/decoding__encoding_8c_source.html#l00347>





            http://lives-video.com
            https://www.openhub.net/accounts/salsaman 
<https://www.openhub.net/accounts/salsaman>

            On Tue, Aug 23, 2016 at 8:39 AM, Charles <[email protected] 
<mailto:[email protected]> <mailto:[email protected]
            <mailto:[email protected]>>> wrote:

                On 08/23/2016 03:08 AM, Nicolas George wrote:

                    Le sextidi 6 fructidor, an CCXXIV, Charles a écrit :

                        6 - avcodec_parameters_to_context( av_encode_codec_ctx, 
av_out_fmt_ctx->streams[ 0 ]->codecpar )


                    You are copying the parameters from a newly created blank 
stream to an
                    initialized encoder. That feels wrong.

                    Regards,


                Thanks for the look, I did some rearranging and I am to the 
point where the muxer is happy or the encoder is happy but cant
            get both at
                the same time:

                Currently Op order:
                1) av_encode_codec = avcodec_find_encoder( AV_CODEC_ID_H264 )
                2) avformat_alloc_output_context2( &av_out_fmt_ctx, NULL, NULL, 
f.c_str() )
                3) video_st = avformat_new_stream( av_out_fmt_ctx, 
av_encode_codec )
                   video_st->id = 0;
                   video_st->time_base.den   = 60; // * 2;
                   video_st->time_base.num   = 1;
                   // This solved the time_base error
                4) parameters = video_st->codecpar;
                   parameters->codec_tag = tag;
                   parameters->format    = AV_PIX_FMT_YUV420P;
                   parameters->bit_rate  = 5e6;
                   parameters->width     = 1024;
                   parameters->height    = 768;
                   parameters->bit_rate  = 5e6;
                   av_dict_set( &av_dict_opts, "b", "2.5M", 0);
                   av_dict_set( &av_dict_opts, "preset", "losslesshp", 0 );
                   av_dict_set( &av_dict_opts, "profile", "high", 0 );
                   av_dict_set( &av_dict_opts, "rc", "vbr_minqp", 0 );
                   av_dict_set( &av_dict_opts, "gpu", "1", 0 );
                5) av_encode_codec_ctx = avcodec_alloc_context3( 
av_encode_codec )
                   av_encode_codec_ctx->bit_rate    = 5e6;
                   av_encode_codec_ctx->width       = 1024;   /// \note 
multiple of 2
                   av_encode_codec_ctx->height      = 768;   /// \note multiple 
of 2
                   av_encode_codec_ctx->time_base   = (AVRational) { 1, 60 }; 
//* 2;
                   av_encode_codec_ctx->gop_size    = 15;      // Intra frames 
per x P frames
                   av_encode_codec_ctx->pix_fmt     = AV_PIX_FMT_YUV420P; // 
MUST DO NOT CHANGE nvenc required
                   // This appears to make h264_nvenc happy
                6) avcodec_parameters_to_context( av_encode_codec_ctx, 
parameters )
                7) avcodec_open2( av_encode_codec_ctx, av_encode_codec, 
&av_dict_opts )

                [mp4 @ 0xc2ed60] Using AVStream.codec to pass codec parameters 
to muxers is deprecated, use AVStream.codecpar instead.
                [mp4 @ 0xc2ed60] dimensions not set

                AVStream does not have dimensions, and the error makes me think 
its in the ctx but I am setting those dims.

                Clearly I am not setting something, just haven't found it.


                Thanks
                cco


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

Reply via email to