[Cin] MTS files; concat demuxer / protocol
Terje J. Hanssen
terjejhanssen at gmail.com
Tue Sep 17 18:55:02 CEST 2024
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.
>
>
> 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/8a1829dc/attachment.htm>
More information about the Cin
mailing list