Ping. This patch will allow to encrypt streams, which were produced by hevc_mp4toannexb or movenc muxer. Currently, encryption doesn't work for HEVC AnnexB. The resulting mp4 is not written correctly and can't be played. The patch is quite small and it contains tests, which will allow checking encryption before and after. Feel free to ask any questions.
пт, 4 июн. 2021 г. в 11:08, Eran Kornblau <eran.kornb...@kaltura.com>: > > > > -----Original Message----- > > From: ffmpeg-devel <ffmpeg-devel-boun...@ffmpeg.org> On Behalf Of ????? > ????????? > > Sent: Friday, June 4, 2021 9:27 AM > > To: ffmpeg-devel@ffmpeg.org > > Subject: Re: [FFmpeg-devel] [PATCH] libavformat/movenc: Support > encryption of H265 stream in AnnexB format > > > > > > Ping. > > > > This change is quite simple and should be quick to review. Feel free to > ask any questions > > Looks good to me > > Eran > > > пн, 22 мар. 2021 г. в 11:29, Вадим Бездушный <vadim.bezd...@gmail.com>: > > > > > Ping. > > > > > > чт, 11 мар. 2021 г. в 10:14, Вадим Бездушный <vadim.bezd...@gmail.com > >: > > > > > >> Ping. > > >> > > >> вт, 9 мар. 2021 г. в 00:05, Вадим Бездушный <vadim.bezd...@gmail.com > >: > > >> > > >>> Ping. > > >>> > > >>> This change is quite simple and should be quick to review. Feel free > > >>> to ask any questions > > >>> > > >>> On Mon, 1 Mar 2021, 14:54 Vadym Bezdushnyi, > > >>> <vadim.bezd...@gmail.com> > > >>> wrote: > > >>> > > >>>> Add an ability to accept H265 AnnexB stream at encryption similar > > >>>> to how its done for H264 AnnexB stream. > > >>>> > > >>>> Steps to test: > > >>>> > > >>>> 1. Create h265 test files - mp4 and h265 AnnexB streams: > > >>>> ffmpeg -f lavfi -i testsrc=duration=10:size=640x480:rate=30 -c:v > > >>>> hevc > > >>>> input_h265.mp4 > > >>>> ffmpeg -f lavfi -i testsrc=duration=10:size=640x480:rate=30 -c:v > > >>>> hevc -bsf:v hevc_mp4toannexb input_h265.h265 > > >>>> > > >>>> 2. Encrypt and decrypt files. Put appropriate input file name here: > > >>>> input_h265.mp4 or input_h265.h265 > > >>>> ffmpeg -i input_h265.h265 -vcodec copy -acodec copy > > >>>> -encryption_scheme cenc-aes-ctr \ -encryption_key > > >>>> 00000000000000000000000000000000 -encryption_kid > > >>>> 00000000000000000000000000000000 \ > > >>>> encrypted_h265.mp4 > > >>>> ffplay -i encrypted_h265.mp4 -decryption_key > > >>>> 00000000000000000000000000000000 > > >>>> > > >>>> Signed-off-by: Vadym Bezdushnyi <vadim.bezd...@gmail.com> > > >>>> --- > > >>>> libavformat/movenc.c | 16 ++++++++++++++-- > > >>>> 1 file changed, 14 insertions(+), 2 deletions(-) > > >>>> > > >>>> diff --git a/libavformat/movenc.c b/libavformat/movenc.c index > > >>>> 545b0885ae..0433968cd2 100644 > > >>>> --- a/libavformat/movenc.c > > >>>> +++ b/libavformat/movenc.c > > >>>> @@ -5685,7 +5685,15 @@ int ff_mov_write_packet(AVFormatContext *s, > > >>>> AVPacket *pkt) > > >>>> return ret; > > >>>> avio_write(pb, reformatted_data, size); > > >>>> } else { > > >>>> - size = ff_hevc_annexb2mp4(pb, pkt->data, pkt->size, 0, > > >>>> NULL); > > >>>> + if (trk->cenc.aes_ctr) { > > >>>> + size = ff_mov_cenc_avc_parse_nal_units(&trk->cenc, > > >>>> + pb, > > >>>> pkt->data, size); > > >>>> + if (size < 0) { > > >>>> + ret = size; > > >>>> + goto err; > > >>>> + } > > >>>> + } else { > > >>>> + size = ff_hevc_annexb2mp4(pb, pkt->data, > > >>>> + pkt->size, 0, > > >>>> NULL); > > >>>> + } > > >>>> } > > >>>> } else if (par->codec_id == AV_CODEC_ID_AV1) { > > >>>> if (trk->hint_track >= 0 && trk->hint_track < > > >>>> mov->nb_streams) { @@ -5727,6 +5735,9 @@ int > > >>>> ff_mov_write_packet(AVFormatContext *s, AVPacket *pkt) > > >>>> if (par->codec_id == AV_CODEC_ID_H264 && > > >>>> par->extradata_size > 4) { > > >>>> int nal_size_length = (par->extradata[4] & 0x3) + > 1; > > >>>> ret = ff_mov_cenc_avc_write_nal_units(s, > > >>>> &trk->cenc, nal_size_length, pb, pkt->data, size); > > >>>> + } else if(par->codec_id == AV_CODEC_ID_HEVC && > > >>>> par->extradata_size > 21) { > > >>>> + int nal_size_length = (par->extradata[21] & 0x3) + > 1; > > >>>> + ret = ff_mov_cenc_avc_write_nal_units(s, > > >>>> + &trk->cenc, > > >>>> nal_size_length, pb, pkt->data, size); > > >>>> } else { > > >>>> ret = ff_mov_cenc_write_packet(&trk->cenc, pb, > > >>>> pkt->data, size); > > >>>> } > > >>>> @@ -6711,7 +6722,8 @@ static int mov_init(AVFormatContext *s) > > >>>> > > >>>> if (mov->encryption_scheme == MOV_ENC_CENC_AES_CTR) { > > >>>> ret = ff_mov_cenc_init(&track->cenc, > mov->encryption_key, > > >>>> - track->par->codec_id == AV_CODEC_ID_H264, s->flags > & > > >>>> AVFMT_FLAG_BITEXACT); > > >>>> + (track->par->codec_id == AV_CODEC_ID_H264 || > > >>>> track->par->codec_id == AV_CODEC_ID_HEVC), > > >>>> + s->flags & AVFMT_FLAG_BITEXACT); > > >>>> if (ret) > > >>>> return ret; > > >>>> } > > >>>> -- > > >>>> 2.30.0 > > >>>> > > >>>> > > _______________________________________________ > > ffmpeg-devel mailing list > > ffmpeg-devel@ffmpeg.org > > > https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fffmpeg.org%2Fmailman%2Flistinfo%2Fffmpeg-devel&data=04%7C01%7C%7C724744e3bfed40c5995508d92725c852%7C0c503748de3f4e2597e26819d53a42b6%7C1%7C1%7C637583865496478909%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=l2rO0HEmDBCJ8RdN3keR0oGE1IZub2TZeN4o%2FdJKcfM%3D&reserved=0 > > > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".