[Cin] MTS files; concat demuxer / protocol

Terje J. Hanssen terjejhanssen at gmail.com
Tue Sep 17 21:20:52 CEST 2024



Den 17.09.2024 18:55, skrev Terje J. Hanssen:
>
>
> Den 17.09.2024 14:11, skrev Stefan de Konink via Cin:
>> There are quite some topics online mentioning the when MTS files 
>> (exceeding 2GB) are naively added to a timeline. The problem that 
>> then appears is that the audio is typically "shorter" than the video, 
>> and it does not appear in the interface. Cinelerra will even shift 
>> the audio track under the previous track.
>>
>> It is mentioned that Adobe Premiere is able to parse an AVCHD 
>> structure, including the ability to use meta information such as 
>> timecode, which is not available from MTS files directly.
>>
>> Other workarounds that are mentioned to first join the MTS files. 
>> FFmpeg has the option concat demuxer and concat protocol. But it 
>> pulls another surprise...
>
>
> Have you tried simple "cat" to join clips in a Linux terminal?
>
> I have not tested this with MTS files, but it works for my HDV.m2t 
> files (mpeg2 video/mp2 audio)
>
>     cat file1 file2 > file1+2
>
> file1+2 may load directly in Cingg if the clips were continuously 
> auto-clipped.
>
> For random clips, there might arise a black segment between the clips.
>
> In my experience this is possible to cleanup first with
>
>     fmpeg -hide_banner -i file1+2 -reset_timestamps 1 -c copy 
> file1+2_cleanup
>
>
> ffmpeg or ffprobe may still complain about single "Packet corrupt" or 
> "timestamp discontinuity", which I simply have ignored.


An alternative, and possibly better way, may be to first cleanup each 
clip-file individually:

     fmpeg -hide_banner -i file1 -reset_timestamps 1 -c copy file1_cleanup
     fmpeg -hide_banner -i file2 -reset_timestamps 1 -c copy file2_cleanup


At least for m2t (and dv), these files can be loaded and added 
successful into CinGG
or if of interest, cat'ed together.


>
>
>>
>>
>> ffmpeg -i "concat:00152.MTS|00153.MTS|00154.MTS" -vcodec copy -acodec 
>> copy test.ts
>> ffmpeg version n7.0.1 Copyright (c) 2000-2024 the FFmpeg developers
>>   built with gcc 14.1.1 (GCC) 20240522
>>   configuration: --prefix=/usr --disable-debug --disable-static 
>> --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm 
>> --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp 
>> --enable-gpl --enable-ladspa --enable-libaom --enable-libass 
>> --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm 
>> --enable-libdvdnav --enable-libdvdread --enable-libfreetype 
>> --enable-libfribidi --enable-libgsm --enable-libharfbuzz 
>> --enable-libiec61883 --enable-libjack --enable-libjxl 
>> --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb 
>> --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt 
>> --enable-libopus --enable-libplacebo --enable-libpulse 
>> --enable-librav1e --enable-librsvg --enable-librubberband 
>> --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt 
>> --enable-libssh --enable-libsvtav1 --enable-libtheora 
>> --enable-libv4l2 --enable-libvidstab --enable-libvmaf 
>> --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp 
>> --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 
>> --enable-libxvid --enable-libzimg --enable-mbedtls --enable-nvdec 
>> --enable-nvenc --enable-opencl --enable-opengl --enable-shared 
>> --enable-vapoursynth --enable-version3 --enable-vulkan
>>   libavutil      59.  8.100 / 59.  8.100
>>   libavcodec     61.  3.100 / 61.  3.100
>>   libavformat    61.  1.100 / 61.  1.100
>>   libavdevice    61.  1.100 / 61.  1.100
>>   libavfilter    10.  1.100 / 10.  1.100
>>   libswscale      8.  1.100 /  8.  1.100
>>   libswresample   5.  1.100 /  5.  1.100
>>   libpostproc    58.  1.100 / 58.  1.100
>> Input #0, mpegts, from 'concat:00152.MTS|00153.MTS|00154.MTS':
>>   Duration: 00:25:04.36, start: 1.040000, bitrate: 24022 kb/s
>>   Program 1
>>   Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), 
>> yuv420p(top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k 
>> tbn
>>   Stream #0:1[0x1100]: Audio: pcm_bluray (HDMV / 0x564D4448), 48000 
>> Hz, stereo, s16, 1536 kb/s
>>   Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle (pgssub) 
>> ([144][0][0][0] / 0x0090), 1920x1080
>> File 'test.ts' already exists. Overwrite? [y/N] y
>> Stream mapping:
>>   Stream #0:0 -> #0:0 (copy)
>>   Stream #0:1 -> #0:1 (copy)
>> Output #0, mpegts, to 'test.ts':
>>   Metadata:
>>     encoder         : Lavf61.1.100
>>   Stream #0:0: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(top 
>> first), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn
>>   Stream #0:1: Audio: pcm_bluray (HDMV / 0x564D4448), 48000 Hz, 
>> stereo, s16, 1536 kb/s
>> Press [q] to stop, [?] for help
>> [mpegts @ 0x600ed54cf540] Stream 1, codec pcm_bluray, is muxed as a 
>> private data stream and may not be recognized upon reading.
>>
>> This results in a video file cinelerra (and others) cannot read.
>>
>> Instead if we would say do it in pcm_sb16le we would be able to show 
>> that the MTS file does contain the audio and FFmpeg is able to read 
>> it. I have attached a screenshot showing what happens.
>>
>> I wonder: could we in Cinelerra implement something that would not 
>> open a file as single file or EDL, but instead a concat set of files?
>>
>> Something in the drop down: "Create a single new resource only". That 
>> single resource should be opened via the concat protocol, and then be 
>> able as single instance. An EDL, but then at protocol level.
>>
>> I think this would make sense for many recordings that are split due 
>> to filesystem limits, but even for image sequences, if they could be 
>> directly opened and edited as if they were single files.
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cinelerra-gg.org/pipermail/cin/attachments/20240917/d2e2c07d/attachment.htm>


More information about the Cin mailing list