[Cin] New thread on bdwrite + mpeg2 HDV video

Terje J. Hanssen terjejhanssen at gmail.com
Tue Nov 8 11:29:34 CET 2022


After using bdwrite and then

tree -h /mntX/BDMV

do you get output (empty content in in the structure) as I get now at 
the bottom?
12 directories, 0 files

or
12 directories, 9 files
with i.e the main video content in STREAM
as I got last year ago?


> bdwrite how reports
> warning bdwrite uses field into from stream
>
> so, more testing needed!
>
> вт, 8 нояб. 2022 г., 04:33 Andrew Randrianasulu <randrianasulu at gmail.com>:
>
>
>
>     вт, 8 нояб. 2022 г., 00:36 Terje J. Hanssen <terjejhanssen at gmail.com>:
>
>
>
>         Den 07.11.2022 21:32, skrev Andrew Randrianasulu:
>>
>>
>>         пн, 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)
>
>         Nice you got it to work :)
>
>         Could you also test the same with the output.mts file I sent
>         you and list up the steps and output you get.
>         This so I can verify if I have managed to enter something
>         wrong, or if it is due to your patched bdwrite.
>
>
>     with normal (not patched) bdwrite and your file I also got
>
>     bdwrite /mnt/test /dev/shm/output.mts            interlace probe
>     failed
>
>
>     so, next step is compile cingg on my desktop :)
>
>
>
>
>
>>
>>
>>             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/20221108/5dfbe4d0/attachment-0001.htm>


More information about the Cin mailing list