
Recherche avancée
Médias (3)
-
Elephants Dream - Cover of the soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
Valkaama DVD Label
4 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Image
-
Publier une image simplement
13 avril 2011, par ,
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (98)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
ANNEXE : Les plugins utilisés spécifiquement pour la ferme
5 mars 2010, parLe site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)
-
Gestion générale des documents
13 mai 2011, parMédiaSPIP ne modifie jamais le document original mis en ligne.
Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)
Sur d’autres sites (8361)
-
Quick stream from file which exists
4 mai 2017, par parsaI implement live streaming from mp4 video file which exists on the path with ffmpeg under hls format.
When my video file have the quality greater than hd720 , in encoding there are so many delays for creating .ts fragments.
I mean the .ts fragments slowly produced on my path,and because of it I have so many delays in showing the stream.
Here is my ffmpeg code for streaming :ffmpeg -re -i 123.mp4 -s cga -f hls -hls_list_size 0 -c:v libx264 -c:a aac 200p/out.m3u8
-s nhd -f hls -hls_list_size 0 -c:v libx264 -c:a aac 360p/out.m3u8
-s hd480 -f hls -hls_list_size 0 -c:v libx264 -c:a aac 480p/out.m3u8
-s hd720 -f hls -hls_list_size 0 -c:v libx264 -c:a aac 720p/out.m3u8
-s hd1080 -f hls -hls_list_size 0 -c:v libx264 -c:a aac 1080p/out.m3u8And here is the console output :
ffmpeg -re -i ../files/412-887123464/video/412-887123464.mp4 -s cga -f hls -hls_list_size 0 -c:v libx264 -c:a aac ../fil
es/412-887123464/video/200p/out.m3u8 -s nhd -f hls -hls_list_size 0 -c:v libx264 -c:a aac ../files/412-887123464/video/360p/out.m3u8 -s hd480 -f hls -
hls_list_size 0 -c:v libx264 -c:a aac ../files/412-887123464/video/480p/out.m3u8 -s hd720 -f hls -hls_list_size 0 -c:v libx264 -c:a aac ../files/412-88
7123464/video/720p/out.m3u8 -s hd1080 -f hls -hls_list_size 0 -c:v libx264 -c:a aac ../files/412-887123464/video/1080p/out.m3u8
ffmpeg version N-82225-gb4e9252 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --e
nable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcac
a --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-lib
opencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr
--enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwa
vpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zl
ib
libavutil 55. 35.100 / 55. 35.100
libavcodec 57. 66.101 / 57. 66.101
libavformat 57. 57.100 / 57. 57.100
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 66.100 / 6. 66.100
libswscale 4. 3.100 / 4. 3.100
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '../files/412-887123464/video/412-887123464.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.31.100
Duration: 00:05:04.07, start: 0.000000, bitrate: 3108 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 2976 kb/s, 25 fps, 25 tbr, 90k tbn, 50
tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
Metadata:
handler_name : SoundHandler
[libx264 @ 0000000001c53f00] using SAR=10/9
[libx264 @ 0000000001c53f00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0000000001c53f00] profile High, level 1.3
Output #0, hls, to '../files/412-887123464/video/200p/out.m3u8':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.57.100
Stream #0:0(und): Video: h264 (libx264), yuv420p, 320x200 [SAR 10:9 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc57.66.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.66.101 aac
[libx264 @ 0000000001f87180] using SAR=1/1
[libx264 @ 0000000001f87180] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0000000001f87180] profile High, level 3.0
Output #1, hls, to '../files/412-887123464/video/360p/out.m3u8':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.57.100
Stream #1:0(und): Video: h264 (libx264), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc57.66.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #1:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.66.101 aac
[libx264 @ 0000000001c55ba0] using SAR=640/639
[libx264 @ 0000000001c55ba0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0000000001c55ba0] profile High, level 3.0
Output #2, hls, to '../files/412-887123464/video/480p/out.m3u8':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.57.100
Stream #2:0(und): Video: h264 (libx264), yuv420p, 852x480 [SAR 640:639 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc57.66.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #2:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.66.101 aac
[libx264 @ 0000000001ca0220] using SAR=1/1
[libx264 @ 0000000001ca0220] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0000000001ca0220] profile High, level 3.1
Output #3, hls, to '../files/412-887123464/video/720p/out.m3u8':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.57.100
Stream #3:0(und): Video: h264 (libx264), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc57.66.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #3:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.66.101 aac
[libx264 @ 0000000001ca23e0] using SAR=1/1
[libx264 @ 0000000001ca23e0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0000000001ca23e0] profile High, level 4.0
Output #4, hls, to '../files/412-887123464/video/1080p/out.m3u8':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.57.100
Stream #4:0(und): Video: h264 (libx264), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 90k tbn, 25 tbc (default)
Metadata:
handler_name : VideoHandler
encoder : Lavc57.66.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream #4:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
encoder : Lavc57.66.101 aac
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Stream #0:0 -> #1:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #1:1 (aac (native) -> aac (native))
Stream #0:0 -> #2:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #2:1 (aac (native) -> aac (native))
Stream #0:0 -> #3:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #3:1 (aac (native) -> aac (native))
Stream #0:0 -> #4:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #4:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
frame= 7600 fps= 21 q=-1.0 Lq=-1.0 q=-1.0 q=-1.0 q=-1.0 size=N/A time=00:05:04.06 bitrate=N/A speed=0.835x
video:294980kB audio:23995kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[libx264 @ 0000000001d33f00] frame I:33 Avg QP:19.93 size: 11412
[libx264 @ 0000000001d33f00] frame P:2281 Avg QP:23.72 size: 3112
[libx264 @ 0000000001d33f00] frame B:5286 Avg QP:28.59 size: 446
[libx264 @ 0000000001d33f00] consecutive B-frames: 4.3% 6.9% 5.9% 82.8%
[libx264 @ 0000000001d33f00] mb I I16..4: 12.9% 42.9% 44.2%
[libx264 @ 0000000001d33f00] mb P I16..4: 1.3% 4.4% 2.3% P16..4: 41.4% 22.0% 15.5% 0.0% 0.0% skip:13.1%
[libx264 @ 0000000001d33f00] mb B I16..4: 0.0% 0.1% 0.0% B16..8: 35.2% 5.9% 2.1% direct: 3.0% skip:53.6% L0:35.3% L1:48.0% BI:16.8%
[libx264 @ 0000000001d33f00] 8x8 transform intra:53.4% inter:57.9%
[libx264 @ 0000000001d33f00] coded y,uvDC,uvAC intra: 70.6% 89.7% 67.6% inter: 18.1% 20.3% 7.2%
[libx264 @ 0000000001d33f00] i16 v,h,dc,p: 24% 24% 6% 45%
[libx264 @ 0000000001d33f00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 14% 19% 5% 5% 7% 5% 10% 7%
[libx264 @ 0000000001d33f00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 15% 15% 6% 6% 7% 6% 8% 6%
[libx264 @ 0000000001d33f00] i8c dc,h,v,p: 42% 17% 28% 14%
[libx264 @ 0000000001d33f00] Weighted P-Frames: Y:26.3% UV:12.9%
[libx264 @ 0000000001d33f00] ref P L0: 58.7% 24.7% 10.9% 4.8% 1.0%
[libx264 @ 0000000001d33f00] ref B L0: 92.6% 5.8% 1.6%
[libx264 @ 0000000001d33f00] ref B L1: 96.3% 3.7%
[libx264 @ 0000000001d33f00] kb/s:258.68
[aac @ 00000000005fc9e0] Qavg: 686.637
[libx264 @ 0000000002017180] frame I:31 Avg QP:19.77 size: 29228
[libx264 @ 0000000002017180] frame P:2040 Avg QP:23.08 size: 8765
[libx264 @ 0000000002017180] frame B:5529 Avg QP:27.28 size: 1471
[libx264 @ 0000000002017180] consecutive B-frames: 1.3% 4.2% 2.4% 92.1%
[libx264 @ 0000000002017180] mb I I16..4: 8.3% 58.8% 32.9%
[libx264 @ 0000000002017180] mb P I16..4: 3.2% 9.5% 2.6% P16..4: 41.5% 19.5% 11.4% 0.0% 0.0% skip:12.2%
[libx264 @ 0000000002017180] mb B I16..4: 0.2% 0.3% 0.1% B16..8: 34.5% 5.8% 1.7% direct: 2.7% skip:54.7% L0:35.9% L1:49.5% BI:14.6%
[libx264 @ 0000000002017180] 8x8 transform intra:61.2% inter:67.3%
[libx264 @ 0000000002017180] coded y,uvDC,uvAC intra: 55.8% 84.8% 51.3% inter: 15.6% 19.3% 3.9%
[libx264 @ 0000000002017180] i16 v,h,dc,p: 24% 29% 8% 39%
[libx264 @ 0000000002017180] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 17% 21% 5% 5% 7% 5% 8% 6%
[libx264 @ 0000000002017180] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 18% 15% 6% 7% 7% 6% 7% 5%
[libx264 @ 0000000002017180] i8c dc,h,v,p: 42% 18% 27% 13%
[libx264 @ 0000000002017180] Weighted P-Frames: Y:22.3% UV:12.2%
[libx264 @ 0000000002017180] ref P L0: 58.5% 23.4% 12.2% 5.2% 0.8%
[libx264 @ 0000000002017180] ref B L0: 93.1% 5.3% 1.6%
[libx264 @ 0000000002017180] ref B L1: 96.6% 3.4%
[libx264 @ 0000000002017180] kb/s:708.47
[aac @ 0000000001d35200] Qavg: 686.637
[libx264 @ 0000000001d35ba0] frame I:31 Avg QP:19.63 size: 41522
[libx264 @ 0000000001d35ba0] frame P:2025 Avg QP:22.86 size: 13415
[libx264 @ 0000000001d35ba0] frame B:5544 Avg QP:26.52 size: 2471
[libx264 @ 0000000001d35ba0] consecutive B-frames: 1.1% 3.9% 2.8% 92.2%
[libx264 @ 0000000001d35ba0] mb I I16..4: 10.6% 62.4% 26.9%
[libx264 @ 0000000001d35ba0] mb P I16..4: 4.7% 12.4% 2.6% P16..4: 41.1% 17.8% 9.4% 0.0% 0.0% skip:11.9%
[libx264 @ 0000000001d35ba0] mb B I16..4: 0.3% 0.5% 0.1% B16..8: 34.0% 5.5% 1.4% direct: 2.9% skip:55.3% L0:36.7% L1:50.2% BI:13.1%
[libx264 @ 0000000001d35ba0] 8x8 transform intra:61.7% inter:71.6%
[libx264 @ 0000000001d35ba0] coded y,uvDC,uvAC intra: 48.0% 81.9% 43.3% inter: 14.7% 19.7% 2.6%
[libx264 @ 0000000001d35ba0] i16 v,h,dc,p: 27% 29% 9% 35%
[libx264 @ 0000000001d35ba0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 19% 22% 5% 5% 6% 5% 7% 5%
[libx264 @ 0000000001d35ba0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 25% 16% 5% 6% 7% 6% 6% 4%
[libx264 @ 0000000001d35ba0] i8c dc,h,v,p: 42% 20% 26% 12%
[libx264 @ 0000000001d35ba0] Weighted P-Frames: Y:18.1% UV:10.8%
[libx264 @ 0000000001d35ba0] ref P L0: 59.5% 22.6% 12.6% 4.8% 0.5%
[libx264 @ 0000000001d35ba0] ref B L0: 93.6% 5.0% 1.4%
[libx264 @ 0000000001d35ba0] ref B L1: 97.1% 2.9%
[libx264 @ 0000000001d35ba0] kb/s:1109.23
[aac @ 0000000001d828a0] Qavg: 686.637
[libx264 @ 0000000001d7f880] frame I:32 Avg QP:19.45 size: 64737
[libx264 @ 0000000001d7f880] frame P:2104 Avg QP:22.44 size: 23985
[libx264 @ 0000000001d7f880] frame B:5464 Avg QP:25.65 size: 4999
[libx264 @ 0000000001d7f880] consecutive B-frames: 1.2% 7.7% 3.2% 87.8%
[libx264 @ 0000000001d7f880] mb I I16..4: 12.5% 70.0% 17.5%
[libx264 @ 0000000001d7f880] mb P I16..4: 6.7% 17.1% 1.8% P16..4: 40.7% 14.9% 6.6% 0.0% 0.0% skip:12.2%
[libx264 @ 0000000001d7f880] mb B I16..4: 0.6% 0.9% 0.1% B16..8: 32.5% 4.7% 1.0% direct: 2.9% skip:57.4% L0:37.6% L1:51.6% BI:10.8%
[libx264 @ 0000000001d7f880] 8x8 transform intra:65.7% inter:77.5%
[libx264 @ 0000000001d7f880] coded y,uvDC,uvAC intra: 39.5% 76.4% 32.4% inter: 13.2% 19.8% 1.5%
[libx264 @ 0000000001d7f880] i16 v,h,dc,p: 32% 27% 10% 31%
[libx264 @ 0000000001d7f880] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 18% 23% 4% 5% 5% 4% 5% 4%
[libx264 @ 0000000001d7f880] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 20% 15% 5% 7% 7% 6% 6% 4%
[libx264 @ 0000000001d7f880] i8c dc,h,v,p: 42% 19% 27% 12%
[libx264 @ 0000000001d7f880] Weighted P-Frames: Y:10.5% UV:6.7%
[libx264 @ 0000000001d7f880] ref P L0: 62.3% 20.4% 12.7% 4.3% 0.3%
[libx264 @ 0000000001d7f880] ref B L0: 93.4% 5.2% 1.4%
[libx264 @ 0000000001d7f880] ref B L1: 97.7% 2.3%
[libx264 @ 0000000001d7f880] kb/s:2101.26
[aac @ 0000000001d81560] Qavg: 686.637
[libx264 @ 0000000001d7fd60] frame I:33 Avg QP:18.36 size: 98904
[libx264 @ 0000000001d7fd60] frame P:3180 Avg QP:21.67 size: 33377
[libx264 @ 0000000001d7fd60] frame B:4387 Avg QP:24.61 size: 7729
[libx264 @ 0000000001d7fd60] consecutive B-frames: 2.7% 55.9% 15.6% 25.9%
[libx264 @ 0000000001d7fd60] mb I I16..4: 22.4% 66.9% 10.7%
[libx264 @ 0000000001d7fd60] mb P I16..4: 9.9% 17.8% 0.7% P16..4: 40.4% 9.2% 3.0% 0.0% 0.0% skip:19.0%
[libx264 @ 0000000001d7fd60] mb B I16..4: 0.8% 1.3% 0.1% B16..8: 30.2% 2.6% 0.4% direct: 1.7% skip:63.0% L0:38.1% L1:54.9% BI: 7.0%
[libx264 @ 0000000001d7fd60] 8x8 transform intra:62.5% inter:82.9%
[libx264 @ 0000000001d7fd60] coded y,uvDC,uvAC intra: 25.4% 59.5% 11.6% inter: 9.6% 16.3% 0.7%
[libx264 @ 0000000001d7fd60] i16 v,h,dc,p: 33% 28% 15% 24%
[libx264 @ 0000000001d7fd60] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 34% 20% 29% 3% 3% 4% 3% 3% 3%
[libx264 @ 0000000001d7fd60] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 25% 16% 4% 6% 6% 5% 5% 4%
[libx264 @ 0000000001d7fd60] i8c dc,h,v,p: 39% 21% 28% 12%
[libx264 @ 0000000001d7fd60] Weighted P-Frames: Y:5.7% UV:3.6%
[libx264 @ 0000000001d7fd60] ref P L0: 70.0% 18.6% 8.3% 3.1% 0.1%
[libx264 @ 0000000001d7fd60] ref B L0: 91.4% 7.6% 1.0%
[libx264 @ 0000000001d7fd60] ref B L1: 99.0% 1.0%
[libx264 @ 0000000001d7fd60] kb/s:3771.31
[aac @ 0000000001d823e0] Qavg: 686.637But I don’t have any problem for streaming files with creating resolutions from a file which have lower orginal quality than hd1080
What I can to do ? -
Can not add tmcd stream using libavcodec to replicate behavior of ffmpeg -timecode option
2 août, par Sailor JerryI'm trying to replicate option of command line ffmpeg -timecode in my C/C++ code. For some reasons the tcmd stream is not written to the output file. However the av_dump_format shows it in run time


Here is my minimal test


#include <iostream>
extern "C" {
#include <libavcodec></libavcodec>avcodec.h>
#include <libavformat></libavformat>avformat.h>
#include <libavutil></libavutil>avutil.h>
#include <libswscale></libswscale>swscale.h>
#include <libavutil></libavutil>opt.h>
#include <libavutil></libavutil>imgutils.h>
#include <libavutil></libavutil>samplefmt.h>
}
bool checkProResAvailability() {
 const AVCodec* codec = avcodec_find_encoder_by_name("prores_ks");
 if (!codec) {
 std::cerr << "ProRes codec not available. Please install FFmpeg with ProRes support." << std::endl;
 return false;
 }
 return true;
}

int main(){
 av_log_set_level(AV_LOG_INFO);

 const char* outputFileName = "test_tmcd.mov";
 AVFormatContext* formatContext = nullptr;
 AVCodecContext* videoCodecContext = nullptr;

 if (!checkProResAvailability()) {
 return -1;
 }

 std::cout << "Creating test file with tmcd stream: " << outputFileName << std::endl;

 // Allocate the output format context
 if (avformat_alloc_output_context2(&formatContext, nullptr, "mov", outputFileName) < 0) {
 std::cerr << "Failed to allocate output context!" << std::endl;
 return -1;
 }

 if (avio_open(&formatContext->pb, outputFileName, AVIO_FLAG_WRITE) < 0) {
 std::cerr << "Failed to open output file!" << std::endl;
 avformat_free_context(formatContext);
 return -1;
 }

 // Find ProRes encoder
 const AVCodec* videoCodec = avcodec_find_encoder_by_name("prores_ks");
 if (!videoCodec) {
 std::cerr << "Failed to find the ProRes encoder!" << std::endl;
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 // Video stream setup
 AVStream* videoStream = avformat_new_stream(formatContext, nullptr);
 if (!videoStream) {
 std::cerr << "Failed to create video stream!" << std::endl;
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 videoCodecContext = avcodec_alloc_context3(videoCodec);
 if (!videoCodecContext) {
 std::cerr << "Failed to allocate video codec context!" << std::endl;
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 videoCodecContext->width = 1920;
 videoCodecContext->height = 1080;
 videoCodecContext->pix_fmt = AV_PIX_FMT_YUV422P10;
 videoCodecContext->time_base = (AVRational){1, 30}; // Set FPS: 30
 videoCodecContext->bit_rate = 2000000;

 if (avcodec_open2(videoCodecContext, videoCodec, nullptr) < 0) {
 std::cerr << "Failed to open ProRes codec!" << std::endl;
 avcodec_free_context(&videoCodecContext);
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 if (avcodec_parameters_from_context(videoStream->codecpar, videoCodecContext) < 0) {
 std::cerr << "Failed to copy codec parameters to video stream!" << std::endl;
 avcodec_free_context(&videoCodecContext);
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 videoStream->time_base = videoCodecContext->time_base;

 // Timecode stream setup
 AVStream* timecodeStream = avformat_new_stream(formatContext, nullptr);
 if (!timecodeStream) {
 std::cerr << "Failed to create timecode stream!" << std::endl;
 avcodec_free_context(&videoCodecContext);
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 timecodeStream->codecpar->codec_type = AVMEDIA_TYPE_DATA;
 timecodeStream->codecpar->codec_id = AV_CODEC_ID_TIMED_ID3;
 timecodeStream->codecpar->codec_tag = MKTAG('t', 'm', 'c', 'd'); // Timecode tag
 timecodeStream->time_base = (AVRational){1, 30}; // FPS: 30

 if (av_dict_set(&timecodeStream->metadata, "timecode", "00:00:30:00", 0) < 0) {
 std::cerr << "Failed to set timecode metadata!" << std::endl;
 avcodec_free_context(&videoCodecContext);
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 // Write container header
 if (avformat_write_header(formatContext, nullptr) < 0) {
 std::cerr << "Failed to write file header!" << std::endl;
 avcodec_free_context(&videoCodecContext);
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 // Encode a dummy video frame
 AVFrame* frame = av_frame_alloc();
 if (!frame) {
 std::cerr << "Failed to allocate video frame!" << std::endl;
 avcodec_free_context(&videoCodecContext);
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 frame->format = videoCodecContext->pix_fmt;
 frame->width = videoCodecContext->width;
 frame->height = videoCodecContext->height;

 if (av_image_alloc(frame->data, frame->linesize, frame->width, frame->height, videoCodecContext->pix_fmt, 32) < 0) {
 std::cerr << "Failed to allocate frame buffer!" << std::endl;
 av_frame_free(&frame);
 avcodec_free_context(&videoCodecContext);
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);
 return -1;
 }

 // Fill frame with black
 memset(frame->data[0], 0, frame->linesize[0] * frame->height); // Y plane
 memset(frame->data[1], 128, frame->linesize[1] * frame->height / 2); // U plane
 memset(frame->data[2], 128, frame->linesize[2] * frame->height / 2); // V plane

 // Encode the frame
 AVPacket packet;
 av_init_packet(&packet);
 packet.data = nullptr;
 packet.size = 0;

 if (avcodec_send_frame(videoCodecContext, frame) == 0) {
 if (avcodec_receive_packet(videoCodecContext, &packet) == 0) {
 packet.stream_index = videoStream->index;
 av_interleaved_write_frame(formatContext, &packet);
 av_packet_unref(&packet);
 }
 }

 av_frame_free(&frame);

 // Write a dummy packet for the timecode stream
 AVPacket tmcdPacket;
 av_init_packet(&tmcdPacket);
 tmcdPacket.stream_index = timecodeStream->index;
 tmcdPacket.flags |= AV_PKT_FLAG_KEY;
 tmcdPacket.data = nullptr; // Empty packet for timecode
 tmcdPacket.size = 0;
 tmcdPacket.pts = 0; // Set necessary PTS
 tmcdPacket.dts = 0;
 av_interleaved_write_frame(formatContext, &tmcdPacket);

 // Write trailer
 if (av_write_trailer(formatContext) < 0) {
 std::cerr << "Failed to write file trailer!" << std::endl;
 }

 av_dump_format(formatContext, 0, "test.mov", 1);

 // Cleanup
 avcodec_free_context(&videoCodecContext);
 avio_close(formatContext->pb);
 avformat_free_context(formatContext);

 std::cout << "Test file with timecode created successfully: " << outputFileName << std::endl;

 return 0;
}
</iostream>


The code output is :


Creating test file with tmcd stream: test_tmcd.mov
[prores_ks @ 0x11ce05790] Autoselected HQ profile to keep best quality. It can be overridden through -profile option.
[mov @ 0x11ce04f20] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[mov @ 0x11ce04f20] Encoder did not produce proper pts, making some up.
Output #0, mov, to 'test.mov':
 Metadata:
 encoder : Lavf61.7.100
 Stream #0:0: Video: prores (HQ) (apch / 0x68637061), yuv422p10le, 1920x1080, q=2-31, 2000 kb/s, 15360 tbn
 Stream #0:1: Data: timed_id3 (tmcd / 0x64636D74)
 Metadata:
 timecode : 00:00:30:00
Test file with timecode created successfully: test_tmcd.mov



The ffprobe output is :


$ ffprobe test_tmcd.mov
ffprobe version 7.1.1 Copyright (c) 2007-2025 the FFmpeg developers
 built with Apple clang version 16.0.0 (clang-1600.0.26.6)
 configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1.1_3 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
 libavutil 59. 39.100 / 59. 39.100
 libavcodec 61. 19.101 / 61. 19.101
 libavformat 61. 7.100 / 61. 7.100
 libavdevice 61. 3.100 / 61. 3.100
 libavfilter 10. 4.100 / 10. 4.100
 libswscale 8. 3.100 / 8. 3.100
 libswresample 5. 3.100 / 5. 3.100
 libpostproc 58. 3.100 / 58. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test_tmcd.mov':
 Metadata:
 major_brand : qt 
 minor_version : 512
 compatible_brands: qt 
 encoder : Lavf61.7.100
 Duration: N/A, start: 0.000000, bitrate: N/A
 Stream #0:0[0x1]: Video: prores (HQ) (apch / 0x68637061), yuv422p10le, 1920x1080, 15360 tbn (default)
 Metadata:
 handler_name : VideoHandler
 vendor_id : FFMP
$ 




Spent hours with all AI models, no help. Appeal to the human intelligence now


-
Custom Segmentation Guide : How it Works & Segments to Test
13 novembre 2023, par Erin — Analytics Tips, Uncategorized