[Cin] New thread on bdwrite + mpeg2 HDV video
Andrew Randrianasulu
randrianasulu at gmail.com
Mon Nov 7 21:32:46 CET 2022
пн, 7 нояб. 2022 г., 23:12 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>
> Den 07.11.2022 19:31, skrev Andrew Randrianasulu:
>
>
>
> пн, 7 нояб. 2022 г., 21:27 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>>
>>
>> Den 07.11.2022 18:58, skrev Andrew Randrianasulu:
>>
>>
>>
>> пн, 7 нояб. 2022 г., 20:50 Andrew Randrianasulu <randrianasulu at gmail.com
>> >:
>>
>>>
>>>
>>> пн, 7 нояб. 2022 г., 20:30 Andrew Randrianasulu <randrianasulu at gmail.com
>>> >:
>>>
>>>>
>>>>
>>>> пн, 7 нояб. 2022 г., 19:40 Andrew Randrianasulu <
>>>> randrianasulu at gmail.com>:
>>>>
>>>>>
>>>>>
>>>>> пн, 7 нояб. 2022 г., 19:10 Andrew Randrianasulu <
>>>>> randrianasulu at gmail.com>:
>>>>>
>>>>>> Because old thread now a bit too big for mobile gmail client.
>>>>>>
>>>>>
>> Yes, I also discovered that and thougt we should continue on another
>> thread
>> (though Thunderbird/IMAP on my Ultrabook had no problems)
>>
>>
>>
>>>>>> Yes, I'll try to see if it fails same way on my end.
>>>>>>
>>>>>> code seems to check first 100 frames
>>>>>>
>>>>>>
>>>>>> 2528 static int field_probe(AVFormatContext *fmt_ctx, AVStream *st)
>>>>>> 2529 {
>>>>>> 2530 AVDictionary *copts = 0;
>>>>>> 2531 //av_dict_copy(&copts, opts, 0);
>>>>>> 2532 AVCodecID codec_id = st->codecpar->codec_id;
>>>>>> 2533 #if LIBAVCODEC_VERSION_INT <= AV_VERSION_INT(58,134,100)
>>>>>> 2534 AVCodec *decoder = avcodec_find_decoder(codec_id);
>>>>>> 2535 #endif
>>>>>> 2536 #if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,16,100)
>>>>>> 2537 const AVCodec *decoder = avcodec_find_decoder(codec_id);
>>>>>> 2538 #endif
>>>>>> 2539 AVCodecContext *ctx = avcodec_alloc_context3(decoder);
>>>>>> 2540 if( !ctx ) {
>>>>>> 2541 fprintf(stderr,"codec alloc failed\n");
>>>>>> 2542 return -1;
>>>>>> 2543 }
>>>>>> 2544 avcodec_parameters_to_context(ctx, st->codecpar);
>>>>>> 2545 if( avcodec_open2(ctx, decoder, &copts) < 0 ) {
>>>>>> 2546 fprintf(stderr,"codec open failed\n");
>>>>>> 2547 return -1;
>>>>>> 2548 }
>>>>>> 2549 av_dict_free(&copts);
>>>>>> 2550
>>>>>> 2551 AVFrame *ipic = av_frame_alloc();
>>>>>> 2552 AVPacket ipkt;
>>>>>> 2553 av_init_packet(&ipkt);
>>>>>> 2554 int ilaced = -1;
>>>>>> 2555 for( int retrys=100; --retrys>=0 && ilaced<0; ) {
>>>>>> 2556 av_packet_unref(&ipkt);
>>>>>> 2557 int ret = av_read_frame(fmt_ctx, &ipkt);
>>>>>> 2558 if( ret == AVERROR_EOF ) break;
>>>>>> 2559 if( ret != 0 ) continue;
>>>>>> 2560 if( ipkt.stream_index != st->index ) continue;
>>>>>> 2561 if( !ipkt.data || !ipkt.size ) continue;
>>>>>> 2562 ret = avcodec_send_packet(ctx, &ipkt);
>>>>>> 2563 if( ret < 0 ) {
>>>>>> 2564 fprintf(stderr, "avcodec_send_packet failed\n");
>>>>>> 2565 break;
>>>>>> 2566 }
>>>>>> 2567 ret = avcodec_receive_frame(ctx, ipic);
>>>>>> 2568 if( ret >= 0 ) {
>>>>>> 2569 ilaced = ipic->interlaced_frame ? 1 : 0;
>>>>>> 2570 break;
>>>>>> 2571 }
>>>>>> 2572 if( ret != AVERROR(EAGAIN) )
>>>>>> 2573 fprintf(stderr, "avcodec_receive_frame failed %d\n", ret);
>>>>>> 2574 }
>>>>>> 2575 av_packet_unref(&ipkt);
>>>>>> 2576 av_frame_free(&ipic);
>>>>>> 2577 avcodec_free_context(&ctx);
>>>>>> 2578 return ilaced;
>>>>>>
>>>>>> may be we can add flags to force interlaced vs progressive to bdwrite
>>>>>> ... and/or debug why it fails.
>>>>>>
>>>>>>
>>>>> sorry, not m2t or m2ts files were found on my main harddrive, so blind
>>>>> shot!
>>>>>
>>>>> Terje, can you recompile bdwrite with attached patch and see if it
>>>>> improves situation?
>>>>>
>>>>
>> I hope to avoid recompiling my ultrabook, where I just have installed the
>> CinGG appimage
>>
>>
>>
>>>>
>>>> err, I think second patch also needed, because ilace in bdwrite is just
>>>> 1/0/-1 not more detailed.
>>>>
>>>
>>>
>>>
>>> finally found m2t file, for me bdwrite does not complain but resulting
>>> file is unplayable
>>>
>>
>> Note:
>> I just used the short m2t file you linked to; maybe it is to short for
>> interlace probe?
>>
>
>
> may be! try to cp it under few different names then cat them together to
> get longer file?
>
>
>
>>
>> this one contain real very short hdv sample with mp2 sound
>> http://twenkid.com/os/3.m2t
>>
>>
>>
>>>
>>> note I used -b switch for new mkudffs so it works with 2048 blocks and
>>> not default 512
>>>
>>
>> I used the plain manual step 3 without -b, as also used for 2048 blocks
>> in the sample step 2 ?
>> I 'll do a new attempt with -b and reort the result
>>
>>
>>
>>> root at slax:/tmp# mkudffs -b 2048 /tmp/newfilename.udfs 25915
>>> filename=/tmp/newfilename.udfs
>>> label=LinuxUDF
>>> uuid=6369651cdf849fbf
>>> blocksize=2048
>>> blocks=25915
>>> udfrev=2.01
>>> start=0, blocks=16, type=ERASE
>>> start=16, blocks=4, type=VRS
>>> start=20, blocks=76, type=ERASE
>>> start=96, blocks=16, type=MVDS
>>> start=112, blocks=16, type=ERASE start=128,
>>> blocks=4, type=LVID start=132, blocks=124,
>>> type=ERASE start=256, blocks=1, type=ANCHOR
>>>
>>> start=257, blocks=25400, type=PSPACE start=25657, blocks=1,
>>> type=ERASE
>>> start=25658, blocks=1, type=ANCHOR
>>> start=25659, blocks=69, type=ERASE
>>> start=25728, blocks=16, type=RVDS
>>> start=25744, blocks=170, type=ERASE
>>> start=25914, blocks=1, type=ANCHOR
>>> root at slax:/tmp# mount -o loop /tmp/newfilename.udfs /mnt/test
>>>
>>> root at slax:/tmp# bdwrite /mnt/test /home/guest/20081103140154.m2t
>>>
>>> root at slax:/tmp# umount /mnt/test
>>>
>>>
>>>
>>> playing result in many
>>>
>>> root at slax:/tmp# mplayer -vo null br://tmp/newfilename.udfs
>>> MPlayer UNKNOWN-11.2.0 (C) 2000-2022 MPlayer Team
>>> do_connect: could not connect to socket
>>> connect: No such file or directory
>>> Failed to open LIRC support. You will not be able to use your remote
>>> control.
>>>
>>> Playing br://tmp/newfilename.udfs. The
>>> hostname option must be an integer: tmp Struct bluray, field
>>> hostname parsing error: tmp libavformat version 59.33.100
>>> (internal) bluray.c:707: Skipping broken unit at
>>> 0 bluray.c:255: 00000.m2ts: no timestamp for
>>> SPN 0 (got 0). clip 46909800-47511000.
>>> bluray.c:707: Skipping broken unit at 0
>>> bluray.c:707: Skipping broken unit at 6144
>>> bluray.c:255: 00000.m2ts: no timestamp for SPN 0 (got 0). clip
>>> 46909800-47511000. bluray.c:707:
>>> Skipping broken unit at 0 bluray.c:707:
>>> Skipping broken unit at 6144 bluray.c:707: Skipping
>>> broken unit at 12288 bluray.c:707: Skipping broken unit
>>> at 18432 bluray.c:707: Skipping broken unit at 24576
>>>
>>> {and so on}
>>>
>>
>>
>> on the other hand reencoding audio like this
>>
>> root at slax:/tmp# ffmpeg -i /home/guest/20081103140154.m2t -c:v copy -c:a
>> ac3 -b:a 384k 2008.m2ts
>>
>> and repeating steps with mkudffs / mount /bdwrite /umount resulted in
>> working in mplayer file!
>>
>> I have 'old' 4.4 ffmpeg, so no bluray encoding for me.
>>
>> also, I used wcalc as console calc
>>
>>
>>
>>
> I discovered I had wrong calculated the file size in kb instead of bytes,
> but this didn't change anything,
>
> I attach my 8.7 Mb (small) output.mts with pcm_bluray audio created with
> ffmpeg-5.1.2 on Tumleweed, so you can try it.
>
thanks, I just copied m2ts file from my desktop vua ssh to my tablet, run
ffmpeg 5.1.2 on it, moved result back to desktop and created bd - no error
...
it also play in mplayer and it says
Selected audio codec: [fflpcm] afm: ffmpeg (Blu-ray LPCM)
procedure on filecopy
~ $ scp guest at 192.168.1.102:/home/guest/20081103140154.m2t .
note dot at the end, I copied in current folder
~ $ ffmpeg -i 20081103140154.m2t -c:v copy -c:a pcm_bluray 2008_pcm.m2ts
~ $ mpv 2008_pcm.m2ts
Video --vid=1 (mpeg2video 1440x1080 25.000fps)
(+) Audio --aid=1 (pcm_bluray 2ch 48000Hz)
AO: [opensles] 48000Hz stereo 2ch s16
A: 00:00:13 / 00:00:13 (97%)
Exiting... (End of file)
~ $ scp 2008_pcm.m2ts guest at 192.168.1.102:/home/guest
guest at 192.168.1.102's password:
2008_pcm.m2ts 100% 45MB 5.8MB/s 00:07
and via ssh on desktop (102):
root at slax:/tmp# du -sb 2008_pcm.m2ts
47020032 2008_pcm.m2ts root at slax:/tmp#
mkudffs -b 2048 /tmp/newfilename.udfs 27055
root at slax:/tmp# mount -o loop /tmp/newfilename.udfs /mnt/test
root at slax:/tmp# bdwrite /mnt/test 2008_pcm.m2ts root at slax:/tmp# umount
/mnt/test root at slax:/tmp# mplayer -vo
null -demuxer mpeg br://tmp/newfilename.udfs
it seems to work.
So, I see no other way for you but compile Cingg/bdwrite with two patches I
provided and see if they improve situation ... (or may be Phyllis will make
special appimage for you)
> So I sixdoubled this with cat to the bigger 53 Mb Output.mts
>
> But sorry, got the same interlace probe error from bdwite
> and no content files in the BDMV structure
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20221107/9b1fc32c/attachment-0001.htm>
More information about the Cin
mailing list