
Recherche avancée
Médias (1)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
Autres articles (111)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
Script d’installation automatique de MediaSPIP
25 avril 2011, parAfin de palier aux difficultés d’installation dues principalement aux dépendances logicielles coté serveur, un script d’installation "tout en un" en bash a été créé afin de faciliter cette étape sur un serveur doté d’une distribution Linux compatible.
Vous devez bénéficier d’un accès SSH à votre serveur et d’un compte "root" afin de l’utiliser, ce qui permettra d’installer les dépendances. Contactez votre hébergeur si vous ne disposez pas de cela.
La documentation de l’utilisation du script d’installation (...) -
XMP PHP
13 mai 2011, parDixit Wikipedia, XMP signifie :
Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)
Sur d’autres sites (6693)
-
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


-
Unwrapping Matomo 5.2.0 – Bringing you enhanced security and performance
25 décembre 2024, par Daniel Crough — Latest Releases