
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (23)
-
Installation en mode ferme
4 février 2011, parLe mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
C’est la méthode que nous utilisons sur cette même plateforme.
L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...) -
Configuration spécifique d’Apache
4 février 2011, parModules spécifiques
Pour la configuration d’Apache, il est conseillé d’activer certains modules non spécifiques à MediaSPIP, mais permettant d’améliorer les performances : mod_deflate et mod_headers pour compresser automatiquement via Apache les pages. Cf ce tutoriel ; mode_expires pour gérer correctement l’expiration des hits. Cf ce tutoriel ;
Il est également conseillé d’ajouter la prise en charge par apache du mime-type pour les fichiers WebM comme indiqué dans ce tutoriel.
Création d’un (...) -
Le plugin : Gestion de la mutualisation
2 mars 2010, parLe plugin de Gestion de mutualisation permet de gérer les différents canaux de mediaspip depuis un site maître. Il a pour but de fournir une solution pure SPIP afin de remplacer cette ancienne solution.
Installation basique
On installe les fichiers de SPIP sur le serveur.
On ajoute ensuite le plugin "mutualisation" à la racine du site comme décrit ici.
On customise le fichier mes_options.php central comme on le souhaite. Voilà pour l’exemple celui de la plateforme mediaspip.net :
< ?php (...)
Sur d’autres sites (2392)
-
Resize the video
8 juin 2016, par Android devI have a requirement for video size before upload on the server and would like to resize the video to make sure it will not go the threshold.
So far I ended up with this command :
ffmpeg -y -i E:\test3.mp4 -s 640*480 -r 15 -aspect 3:4 -ab 12288 -vcodec mpeg4 -b 2097152 E:\debug_video.mp4
The issues with this command :
- is it changes aspect ratio of the video
- it works too slow (30 seconds for 12 seconds 24mb video on Nexus 5)The best solution so far for the first issue is to check the video resolution first and only than run the ffmpeg.
Do you know how to do that with help of ffmpeg as two separate commands or as a single one ? Do you know how to make it faster ? Thank you in advance
UPDATE
The console output is below. Please let me know if you would like to get console output foronProgress
callbackadb -s 07f0f4ac01897da5 logcat "ffmpeg:*" "*:S"
06-08 17:43:29.589 20835 20835 D ffmpeg : FFmpeg:onProgress: ffmpeg version n3.
0.1 Copyright (c) 2000-2016 the FFmpeg developers
06-08 17:43:29.589 20835 20835 D ffmpeg : FFmpeg:onProgress: built with gcc 4
.8 (GCC)
06-08 17:43:29.592 20835 20835 D ffmpeg : FFmpeg:onProgress: configuration: -
-target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchai
n-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime
-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/s
ysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enab
le-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disabl
e-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable
-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-sha
red --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-
pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --
extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/includ
e -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-a
ll' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android
/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxf
lags=
06-08 17:43:29.600 20835 20835 D ffmpeg : FFmpeg:onProgress: libavutil 5
5. 17.103 / 55. 17.103
06-08 17:43:29.600 20835 20835 D ffmpeg : FFmpeg:onProgress: libavcodec 5
7. 24.102 / 57. 24.102
06-08 17:43:29.600 20835 20835 D ffmpeg : FFmpeg:onProgress: libavformat 5
7. 25.100 / 57. 25.100
06-08 17:43:29.600 20835 20835 D ffmpeg : FFmpeg:onProgress: libavdevice 5
7. 0.101 / 57. 0.101
06-08 17:43:29.600 20835 20835 D ffmpeg : FFmpeg:onProgress: libavfilter
6. 31.100 / 6. 31.100
06-08 17:43:29.600 20835 20835 D ffmpeg : FFmpeg:onProgress: libswscale
4. 0.100 / 4. 0.100
06-08 17:43:29.600 20835 20835 D ffmpeg : FFmpeg:onProgress: libswresample
2. 0.101 / 2. 0.101
06-08 17:43:29.600 20835 20835 D ffmpeg : FFmpeg:onProgress: libpostproc 5
4. 0.100 / 54. 0.100
06-08 17:43:29.885 20835 20835 D ffmpeg : FFmpeg:onProgress: Input #0, mov,mp4,
m4a,3gp,3g2,mj2, from '/storage/emulated/0/Pictures/test2.mp4':
06-08 17:43:29.885 20835 20835 D ffmpeg : FFmpeg:onProgress: Metadata:
06-08 17:43:29.885 20835 20835 D ffmpeg : FFmpeg:onProgress: major_brand
: mp42
06-08 17:43:29.885 20835 20835 D ffmpeg : FFmpeg:onProgress: minor_version
: 0
06-08 17:43:29.885 20835 20835 D ffmpeg : FFmpeg:onProgress: compatible_bra
nds: isommp42
06-08 17:43:29.886 20835 20835 D ffmpeg : FFmpeg:onProgress: creation_time
: 2016-06-02 09:20:58
06-08 17:43:29.886 20835 20835 D ffmpeg : FFmpeg:onProgress: com.android.ve
rsion: 6.0.1
06-08 17:43:29.886 20835 20835 D ffmpeg : FFmpeg:onProgress: Duration: 00:00:
12.03, start: 0.000000, bitrate: 17234 kb/s
06-08 17:43:29.886 20835 20835 D ffmpeg : FFmpeg:onProgress: Stream #0:0(en
g): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080, 16902 kb/s,
SAR 1:1 DAR 16:9, 29.81 fps, 29.85 tbr, 90k tbn, 180k tbc (default)
06-08 17:43:29.886 20835 20835 D ffmpeg : FFmpeg:onProgress: Metadata:
06-08 17:43:29.890 20835 20835 D ffmpeg : FFmpeg:onProgress: rotate
: 90
06-08 17:43:29.890 20835 20835 D ffmpeg : FFmpeg:onProgress: creation_tim
e : 2016-06-02 09:20:58
06-08 17:43:29.891 20835 20835 D ffmpeg : FFmpeg:onProgress: handler_name
: VideoHandle
06-08 17:43:29.891 20835 20835 D ffmpeg : FFmpeg:onProgress: Side data:
06-08 17:43:29.891 20835 20835 D ffmpeg : FFmpeg:onProgress: displaymatri
x: rotation of -90.00 degrees
06-08 17:43:29.892 20835 20835 D ffmpeg : FFmpeg:onProgress: Stream #0:1(en
g): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s (default)
06-08 17:43:29.892 20835 20835 D ffmpeg : FFmpeg:onProgress: Metadata:
06-08 17:43:29.893 20835 20835 D ffmpeg : FFmpeg:onProgress: creation_tim
e : 2016-06-02 09:20:58
06-08 17:43:29.893 20835 20835 D ffmpeg : FFmpeg:onProgress: handler_name
: SoundHandle
06-08 17:43:29.893 20835 20835 D ffmpeg : FFmpeg:onProgress: Please use -b:a or
-b:v, -b is ambiguous
06-08 17:43:29.894 20835 20835 D ffmpeg : FFmpeg:onProgress: Codec AVOption pre
set (Set the encoding preset (cf. x264 --fullhelp)) specified for output file #0
(/storage/emulated/0/Pictures/scaled_video.mp4) has not been used for any strea
m. The most likely reason is either wrong type (e.g. a video option with no vide
o streams) or that it is a private option of some encoder which was not actually
used for any stream.
06-08 17:43:29.939 20835 20835 D ffmpeg : FFmpeg:onProgress: [mpeg4 @ 0xb5c4440
0] Invalid pixel aspect ratio 5121/5120, limit is 255/255 reducing
06-08 17:43:29.996 20835 20835 D ffmpeg : FFmpeg:onProgress: Output #0, mp4, to
'/storage/emulated/0/Pictures/scaled_video.mp4':
06-08 17:43:29.998 20835 20835 D ffmpeg : FFmpeg:onProgress: Metadata:
06-08 17:43:29.999 20835 20835 D ffmpeg : FFmpeg:onProgress: major_brand
: mp42
06-08 17:43:30.000 20835 20835 D ffmpeg : FFmpeg:onProgress: minor_version
: 0
06-08 17:43:30.000 20835 20835 D ffmpeg : FFmpeg:onProgress: compatible_bra
nds: isommp42
06-08 17:43:30.001 20835 20835 D ffmpeg : FFmpeg:onProgress: com.android.ve
rsion: 6.0.1
06-08 17:43:30.002 20835 20835 D ffmpeg : FFmpeg:onProgress: encoder
: Lavf57.25.100
06-08 17:43:30.003 20835 20835 D ffmpeg : FFmpeg:onProgress: Stream #0:0(en
g): Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 640x1138 [SAR 1:1 DAR 320:569],
q=2-31, 2097 kb/s, SAR 5121:5120 DAR 9:16, 15 fps, 15360 tbn, 15 tbc (default)
06-08 17:43:30.004 20835 20835 D ffmpeg : FFmpeg:onProgress: Metadata:
06-08 17:43:30.005 20835 20835 D ffmpeg : FFmpeg:onProgress: handler_name
: VideoHandle
06-08 17:43:30.006 20835 20835 D ffmpeg : FFmpeg:onProgress: creation_tim
e : 2016-06-02 09:20:58
06-08 17:43:30.007 20835 20835 D ffmpeg : FFmpeg:onProgress: encoder
: Lavc57.24.102 mpeg4
06-08 17:43:30.008 20835 20835 D ffmpeg : FFmpeg:onProgress: Side data:
06-08 17:43:30.008 20835 20835 D ffmpeg : FFmpeg:onProgress: unknown side
data type 10 (24 bytes)
06-08 17:43:30.008 20835 20835 D ffmpeg : FFmpeg:onProgress: Stream #0:1(en
g): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, mono, fltp, 12 kb/s (def
ault)
06-08 17:43:30.008 20835 20835 D ffmpeg : FFmpeg:onProgress: Metadata:
06-08 17:43:30.008 20835 20835 D ffmpeg : FFmpeg:onProgress: creation_tim
e : 2016-06-02 09:20:58
06-08 17:43:30.008 20835 20835 D ffmpeg : FFmpeg:onProgress: handler_name
: SoundHandle
06-08 17:43:30.009 20835 20835 D ffmpeg : FFmpeg:onProgress: encoder
: Lavc57.24.102 aac
06-08 17:43:30.009 20835 20835 D ffmpeg : FFmpeg:onProgress: Stream mapping:
06-08 17:43:30.009 20835 20835 D ffmpeg : FFmpeg:onProgress: Stream #0:0 -> #
0:0 (h264 (native) -> mpeg4 (native))
06-08 17:43:30.009 20835 20835 D ffmpeg : FFmpeg:onProgress: Stream #0:1 -> #
0:1 (aac (native) -> aac (native))
06-08 17:43:30.010 20835 20835 D ffmpeg : FFmpeg:onProgress: Press [q] to stop,
[?] for help
06-08 17:43:30.730 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 2 fps=0.
0 q=2.0 size= 129kB time=00:00:01.00 bitrate=1056.4kbits/s speed=1.66x
06-08 17:43:31.350 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 5 fps=4.
0 q=2.0 size= 314kB time=00:00:01.00 bitrate=2566.0kbits/s dup=0 drop=1 spee
d=0.809x
06-08 17:43:31.842 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 8 fps=4.
6 q=7.5 size= 404kB time=00:00:01.00 bitrate=3302.5kbits/s dup=0 drop=4 spee
d=0.573x
06-08 17:43:32.367 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 10 fps=4.
4 q=8.7 size= 431kB time=00:00:01.00 bitrate=3523.1kbits/s dup=0 drop=6 spee
d=0.441x
06-08 17:43:32.873 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 13 fps=4.
7 q=9.0 size= 518kB time=00:00:01.00 bitrate=4230.9kbits/s dup=0 drop=9 spee
d=0.361x
06-08 17:43:33.392 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 15 fps=4.
5 q=11.6 size= 536kB time=00:00:01.00 bitrate=4381.7kbits/s dup=0 drop=11 sp
eed=0.303x
06-08 17:43:34.011 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 17 fps=4.
3 q=11.7 size= 558kB time=00:00:02.00 bitrate=2279.7kbits/s dup=0 drop=13 sp
eed=0.512x
06-08 17:43:34.621 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 20 fps=4.
4 q=12.5 size= 598kB time=00:00:02.00 bitrate=2444.5kbits/s dup=0 drop=16 sp
eed=0.443x
06-08 17:43:35.207 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 23 fps=4.
5 q=11.3 size= 630kB time=00:00:02.00 bitrate=2574.3kbits/s dup=0 drop=19 sp
eed=0.394x
06-08 17:43:35.726 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 26 fps=4.
6 q=10.1 size= 689kB time=00:00:02.00 bitrate=2815.3kbits/s dup=0 drop=22 sp
eed=0.357x
06-08 17:43:36.252 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 28 fps=4.
6 q=9.6 size= 707kB time=00:00:02.00 bitrate=2888.7kbits/s dup=0 drop=24 spe
ed=0.327x
06-08 17:43:36.749 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 31 fps=4.
7 q=9.5 size= 726kB time=00:00:02.06 bitrate=2879.6kbits/s dup=0 drop=27 spe
ed=0.311x
06-08 17:43:37.341 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 33 fps=4.
6 q=9.3 size= 767kB time=00:00:03.00 bitrate=2089.4kbits/s dup=0 drop=29 spe
ed=0.417x
06-08 17:43:37.872 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 35 fps=4.
5 q=9.4 size= 791kB time=00:00:03.00 bitrate=2154.3kbits/s dup=0 drop=31 spe
ed=0.386x
06-08 17:43:38.447 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 38 fps=4.
6 q=9.2 size= 854kB time=00:00:03.00 bitrate=2324.7kbits/s dup=0 drop=34 spe
ed=0.361x
06-08 17:43:39.005 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 41 fps=4.
6 q=8.2 size= 883kB time=00:00:03.00 bitrate=2404.7kbits/s dup=0 drop=36 spe
ed=0.338x
06-08 17:43:39.507 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 43 fps=4.
6 q=9.0 size= 918kB time=00:00:03.00 bitrate=2499.3kbits/s dup=0 drop=38 spe
ed=0.32x
06-08 17:43:40.065 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 46 fps=4.
6 q=9.6 size= 948kB time=00:00:03.06 bitrate=2531.5kbits/s dup=0 drop=41 spe
ed=0.307x
06-08 17:43:40.602 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 48 fps=4.
6 q=9.3 size= 990kB time=00:00:04.01 bitrate=2021.2kbits/s dup=0 drop=43 spe
ed=0.381x
06-08 17:43:41.189 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 51 fps=4.
6 q=7.3 size= 1025kB time=00:00:04.01 bitrate=2094.5kbits/s dup=0 drop=46 spe
ed=0.361x
06-08 17:43:41.744 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 54 fps=4.
6 q=6.9 size= 1064kB time=00:00:04.01 bitrate=2173.0kbits/s dup=0 drop=49 spe
ed=0.345x
06-08 17:43:42.288 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 56 fps=4.
6 q=6.1 size= 1082kB time=00:00:04.01 bitrate=2209.5kbits/s dup=0 drop=51 spe
ed=0.329x
06-08 17:43:42.872 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 59 fps=4.
6 q=4.5 size= 1107kB time=00:00:04.01 bitrate=2260.3kbits/s dup=0 drop=54 spe
ed=0.314x
06-08 17:43:43.292 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 61 fps=4.
6 q=3.2 size= 1152kB time=00:00:04.26 bitrate=2212.2kbits/s dup=0 drop=56 spe
ed=0.321x
06-08 17:43:43.986 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 64 fps=4.
6 q=3.9 size= 1178kB time=00:00:05.01 bitrate=1924.7kbits/s dup=0 drop=59 spe
ed=0.361x
06-08 17:43:44.518 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 66 fps=4.
6 q=3.6 size= 1196kB time=00:00:05.01 bitrate=1953.9kbits/s dup=0 drop=61 spe
ed=0.347x
06-08 17:43:45.104 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 69 fps=4.
6 q=3.4 size= 1232kB time=00:00:05.01 bitrate=2013.0kbits/s dup=0 drop=64 spe
ed=0.334x
06-08 17:43:45.687 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 72 fps=4.
6 q=4.9 size= 1263kB time=00:00:05.01 bitrate=2063.4kbits/s dup=0 drop=67 spe
ed=0.321x
06-08 17:43:46.262 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 75 fps=4.
6 q=3.5 size= 1307kB time=00:00:05.01 bitrate=2135.1kbits/s dup=0 drop=70 spe
ed=0.31x
06-08 17:43:46.840 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 77 fps=4.
6 q=3.1 size= 1334kB time=00:00:06.01 bitrate=1816.5kbits/s dup=0 drop=72 spe
ed=0.359x
06-08 17:43:47.354 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 80 fps=4.
6 q=3.5 size= 1380kB time=00:00:06.01 bitrate=1878.6kbits/s dup=0 drop=75 spe
ed=0.349x
06-08 17:43:47.826 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 82 fps=4.
6 q=3.6 size= 1412kB time=00:00:06.01 bitrate=1923.2kbits/s dup=0 drop=77 spe
ed=0.339x
06-08 17:43:48.346 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 85 fps=4.
7 q=3.5 size= 1476kB time=00:00:06.01 bitrate=2009.8kbits/s dup=0 drop=80 spe
ed=0.33x
06-08 17:43:48.911 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 88 fps=4.
7 q=3.5 size= 1524kB time=00:00:06.01 bitrate=2074.7kbits/s dup=0 drop=83 spe
ed=0.32x
06-08 17:43:49.496 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 91 fps=4.
7 q=3.8 size= 1556kB time=00:00:06.06 bitrate=2101.5kbits/s dup=0 drop=86 spe
ed=0.313x
06-08 17:43:50.100 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 93 fps=4.
7 q=4.1 size= 1616kB time=00:00:07.01 bitrate=1886.0kbits/s dup=0 drop=88 spe
ed=0.352x
06-08 17:43:50.598 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 95 fps=4.
6 q=4.3 size= 1652kB time=00:00:07.01 bitrate=1928.4kbits/s dup=0 drop=90 spe
ed=0.342x
06-08 17:43:51.182 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 98 fps=4.
7 q=4.7 size= 1728kB time=00:00:07.01 bitrate=2017.1kbits/s dup=0 drop=93 spe
ed=0.333x
06-08 17:43:51.693 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 100 fps=4.
6 q=4.6 size= 1763kB time=00:00:07.01 bitrate=2057.5kbits/s dup=0 drop=95 spe
ed=0.325x
06-08 17:43:52.272 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 103 fps=4.
6 q=4.6 size= 1812kB time=00:00:07.01 bitrate=2115.1kbits/s dup=0 drop=98 spe
ed=0.317x
06-08 17:43:52.839 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 106 fps=4.
7 q=4.2 size= 1845kB time=00:00:07.06 bitrate=2138.7kbits/s dup=0 drop=101 sp
eed=0.311x
06-08 17:43:53.383 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 108 fps=4.
6 q=4.1 size= 1886kB time=00:00:08.02 bitrate=1925.7kbits/s dup=0 drop=103 sp
eed=0.344x
06-08 17:43:53.966 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 111 fps=4.
7 q=3.5 size= 1940kB time=00:00:08.02 bitrate=1981.0kbits/s dup=0 drop=106 sp
eed=0.336x
06-08 17:43:54.472 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 113 fps=4.
6 q=3.1 size= 1968kB time=00:00:08.02 bitrate=2010.1kbits/s dup=0 drop=108 sp
eed=0.329x
06-08 17:43:55.129 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 116 fps=4.
6 q=3.3 size= 2016kB time=00:00:08.02 bitrate=2058.5kbits/s dup=0 drop=111 sp
eed=0.321x
06-08 17:43:55.624 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 119 fps=4.
7 q=3.2 size= 2052kB time=00:00:08.02 bitrate=2096.0kbits/s dup=0 drop=114 sp
eed=0.314x
06-08 17:43:56.082 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 121 fps=4.
6 q=2.7 size= 2119kB time=00:00:08.06 bitrate=2152.0kbits/s dup=0 drop=116 sp
eed=0.309x
06-08 17:43:56.729 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 124 fps=4.
7 q=4.0 size= 2172kB time=00:00:09.02 bitrate=1971.5kbits/s dup=0 drop=119 sp
eed=0.339x
06-08 17:43:57.292 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 127 fps=4.
7 q=3.5 size= 2210kB time=00:00:09.02 bitrate=2006.0kbits/s dup=0 drop=122 sp
eed=0.332x
06-08 17:43:57.793 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 129 fps=4.
7 q=3.3 size= 2234kB time=00:00:09.02 bitrate=2028.1kbits/s dup=0 drop=124 sp
eed=0.326x
06-08 17:43:58.431 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 132 fps=4.
7 q=3.3 size= 2275kB time=00:00:09.02 bitrate=2065.6kbits/s dup=0 drop=127 sp
eed=0.319x
06-08 17:43:58.986 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 135 fps=4.
7 q=3.4 size= 2344kB time=00:00:09.02 bitrate=2127.5kbits/s dup=0 drop=130 sp
eed=0.313x
06-08 17:43:59.374 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 136 fps=4.
6 q=3.2 size= 2356kB time=00:00:09.10 bitrate=2119.0kbits/s dup=0 drop=131 sp
eed=0.31x
06-08 17:43:59.986 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 139 fps=4.
6 q=2.9 size= 2392kB time=00:00:10.02 bitrate=1954.2kbits/s dup=0 drop=133 sp
eed=0.335x
06-08 17:44:00.582 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 142 fps=4.
7 q=2.8 size= 2428kB time=00:00:10.02 bitrate=1983.5kbits/s dup=0 drop=136 sp
eed=0.329x
06-08 17:44:01.158 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 145 fps=4.
7 q=3.0 size= 2516kB time=00:00:10.02 bitrate=2055.4kbits/s dup=0 drop=139 sp
eed=0.323x
06-08 17:44:01.691 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 148 fps=4.
7 q=4.6 size= 2583kB time=00:00:10.02 bitrate=2110.7kbits/s dup=0 drop=142 sp
eed=0.317x
06-08 17:44:02.168 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 150 fps=4.
7 q=4.8 size= 2626kB time=00:00:10.02 bitrate=2145.1kbits/s dup=0 drop=144 sp
eed=0.312x
06-08 17:44:02.587 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 152 fps=4.
7 q=5.0 size= 2668kB time=00:00:10.32 bitrate=2117.0kbits/s dup=0 drop=146 sp
eed=0.317x
06-08 17:44:03.209 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 154 fps=4.
6 q=5.0 size= 2709kB time=00:00:11.02 bitrate=2012.4kbits/s dup=0 drop=148 sp
eed=0.333x
06-08 17:44:03.815 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 157 fps=4.
7 q=3.7 size= 2770kB time=00:00:11.02 bitrate=2057.2kbits/s dup=0 drop=151 sp
eed=0.327x
06-08 17:44:04.402 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 160 fps=4.
7 q=3.3 size= 2800kB time=00:00:11.02 bitrate=2079.7kbits/s dup=0 drop=154 sp
eed=0.321x
06-08 17:44:04.965 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 163 fps=4.
7 q=3.0 size= 2835kB time=00:00:11.02 bitrate=2105.7kbits/s dup=0 drop=157 sp
eed=0.316x
06-08 17:44:05.505 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 166 fps=4.
7 q=3.1 size= 2880kB time=00:00:11.06 bitrate=2131.8kbits/s dup=0 drop=160 sp
eed=0.313x
06-08 17:44:06.094 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 169 fps=4.
7 q=3.3 size= 2880kB time=00:00:11.26 bitrate=2093.9kbits/s dup=0 drop=163 sp
eed=0.313x
06-08 17:44:06.603 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 171 fps=4.
7 q=3.8 size= 2880kB time=00:00:11.40 bitrate=2069.5kbits/s dup=0 drop=165 sp
eed=0.312x
06-08 17:44:07.192 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 174 fps=4.
7 q=3.6 size= 2880kB time=00:00:11.60 bitrate=2033.8kbits/s dup=0 drop=168 sp
eed=0.313x
06-08 17:44:07.772 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 177 fps=4.
7 q=3.3 size= 2880kB time=00:00:11.80 bitrate=1999.3kbits/s dup=0 drop=171 sp
eed=0.313x
06-08 17:44:08.287 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 180 fps=4.
7 q=3.2 size= 2880kB time=00:00:12.00 bitrate=1966.0kbits/s dup=0 drop=174 sp
eed=0.314x
06-08 17:44:08.900 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 182 fps=4.
7 q=3.5 size= 3118kB time=00:00:12.13 bitrate=2105.2kbits/s dup=0 drop=176 sp
eed=0.313x
06-08 17:44:08.915 20835 20835 D ffmpeg : FFmpeg:onProgress: frame= 182 fps=4.
7 q=3.5 Lsize= 3205kB time=00:00:12.13 bitrate=2163.7kbits/s dup=0 drop=176 s
peed=0.312x
06-08 17:44:08.915 20835 20835 D ffmpeg : FFmpeg:onProgress: video:3177kB audio
:21kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.19565
3%
06-08 17:44:08.946 20835 20835 D ffmpeg : FFmpeg:onProgress: [aac @ 0xb5c44c00]
Qavg: 137.182
06-08 17:44:08.963 20835 20835 D ffmpeg : FFmpeg:onSuccess: ffmpeg version n3.0
.1 Copyright (c) 2000-2016 the FFmpeg developers
06-08 17:44:08.963 20835 20835 D ffmpeg : built with gcc 4.8 (GCC)
06-08 17:44:08.963 20835 20835 D ffmpeg : configuration: --target-os=linux --
cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-l
inux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroo
t=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic
--enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --ena
ble-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-f
fserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-f
fprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static
--pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix
=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/ho
me/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE
-D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags
='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -
Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
06-08 17:44:08.963 20835 20835 D ffmpeg : libavutil 55. 17.103 / 55. 17.
103
06-08 17:44:08.963 20835 20835 D ffmpeg : libavcodec 57. 24.102 / 57. 24.
102
06-08 17:44:08.963 20835 20835 D ffmpeg : libavformat 57. 25.100 / 57. 25.
100
06-08 17:44:08.963 20835 20835 D ffmpeg : libavdevice 57. 0.101 / 57. 0.
101
06-08 17:44:08.963 20835 20835 D ffmpeg : libavfilter 6. 31.100 / 6. 31.
100
06-08 17:44:08.963 20835 20835 D ffmpeg : libswscale 4. 0.100 / 4. 0.
100
06-08 17:44:08.963 20835 20835 D ffmpeg : libswresample 2. 0.101 / 2. 0.
101
06-08 17:44:08.963 20835 20835 D ffmpeg : libpostproc 54. 0.100 / 54. 0.
100
06-08 17:44:08.963 20835 20835 D ffmpeg : Input #0, mov,mp4,m4a,3gp,3g2,mj2, fr
om '/storage/emulated/0/Pictures/test2.mp4':
06-08 17:44:08.963 20835 20835 D ffmpeg : Metadata:
06-08 17:44:08.963 20835 20835 D ffmpeg : major_brand : mp42
06-08 17:44:08.963 20835 20835 D ffmpeg : minor_version : 0
06-08 17:44:08.963 20835 20835 D ffmpeg : compatible_brands: isommp42
06-08 17:44:08.963 20835 20835 D ffmpeg : creation_time : 2016-06-02 09:2
0:58
06-08 17:44:08.963 20835 20835 D ffmpeg : com.android.version: 6.0.1
06-08 17:44:08.963 20835 20835 D ffmpeg : Duration: 00:00:12.03, start: 0.000
000, bitrate: 17234 kb/s
06-08 17:44:08.963 20835 20835 D ffmpeg : Stream #0:0(eng): Video: h264 (Ba
seline) (avc1 / 0x31637661), yuv420p, 1920x1080, 16902 kb/s, SAR 1:1 DAR 16:9, 2
9.81 fps, 29.85 tbr, 90k tbn, 180k tbc (default)
06-08 17:44:08.963 20835 20835 D ffmpeg : Metadata:
06-08 17:44:08.963 20835 20835 D ffmpeg : rotate : 90
06-08 17:44:08.963 20835 20835 D ffmpeg : creation_time : 2016-06-02 09
:20:58
06-08 17:44:08.963 20835 20835 D ffmpeg : handler_name : VideoHandle
06-08 17:44:08.963 20835 20835 D ffmpeg : Side data:
06-08 17:44:08.963 20835 20835 D ffmpeg : displaymatrix: rotation of -90.
00 degrees
06-08 17:44:08.963 20835 20835 D ffmpeg : Stream #0:1(eng): Audio: aac (LC)
(mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s (default)
06-08 17:44:08.963 20835 20835 D ffmpeg : Metadata:
06-08 17:44:08.963 20835 20835 D ffmpeg : creation_time : 2016-06-02 09
:20:58
06-08 17:44:08.963 20835 20835 D ffmpeg : handler_name : SoundHandle
06-08 17:44:08.963 20835 20835 D ffmpeg : Please use -b:a or -b:v, -b is ambigu
ous
06-08 17:44:08.963 20835 20835 D ffmpeg : Codec AVOption preset (Set the encodi
ng preset (cf. x264 --fullhelp)) specified for output file #0 (/storage/emulated
/0/Pictures/scaled_video.mp4) has not been used for any stream. The most likely
reason is either wrong type (e.g. a video option with no video streams) or that
it is a private option of some encoder which was not actually used for any strea
m.
06-08 17:44:08.963 20835 20835 D ffmpeg : [mpeg4 @ 0xb5c44400] Invalid pixel as
pect ratio 5121/5120, limit is 255/255 reducing
06-08 17:44:08.963 20835 20835 D ffmpeg : Output #0, mp4, to '/storage/emulated
/0/Pictures/scaled_video.mp4':
06-08 17:44:08.963 20835 20835 D ffmpeg : Metadata:
06-08 17:44:08.963 20835 20835 D ffmpeg : major_brand : mp42
06-08 17:44:08.963 20835 20835 D ffmpeg : minor_version : 0
06-08 17:44:08.963 20835 20835 D ffmpeg : compatible_brands: isommp42
06-08 17:44:08.963 20835 20835 D ffmpeg : com.android.version: 6.0.1
06-08 17:44:08.963 20835 20835 D ffmpeg : encoder : Lavf57.25.100
06-08 17:44:08.963 20835 20835 D ffmpeg : Stream #0:0(eng): Video: mpeg4 (
[0][0][0] / 0x0020), yuv420p, 640x1138 [SAR 1:1 DAR 320:569], q=2-31, 2097 kb/s,
SAR 5121:5120 DAR 9:16, 15 fps, 15360 tbn, 15 tbc (default)
06-08 17:44:08.963 20835 20835 D ffmpeg : Metadata:
06-08 17:44:08.963 20835 20835 D ffmpeg : handler_name : VideoHandle
06-08 17:44:08.963 20835 20835 D ffmpeg : creation_time : 2016-06-02 09
:20:58
06-08 17:44:08.963 20835 20835 D ffmpeg : encoder : Lavc57.24.102
mpeg4
06-08 17:44:08.963 20835 20835 D ffmpeg : Side data:
06-08 17:44:08.963 20835 20835 D ffmpeg : unknown side data type 10 (24 b
ytes)
06-08 17:44:08.963 20835 20835 D ffmpeg : Stream #0:1(eng): Audio: aac (LC)
([64][0][0][0] / 0x0040), 48000 Hz, mono, fltp, 12 kb/s (default)
06-08 17:44:08.963 20835 20835 D ffmpeg : Metadata:
06-08 17:44:08.963 20835 20835 D ffmpeg : creation_time : 2016-06-02 09
:20:58
06-08 17:44:08.963 20835 20835 D ffmpeg : handler_name : SoundHandle
06-08 17:44:08.963 20835 20835 D ffmpeg : encoder : Lavc57.24.102
aac
06-08 17:44:08.963 20835 20835 D ffmpeg : Stream mapping:
06-08 17:44:08.963 20835 20835 D ffmpeg : Stream #0:0 -> #0:0 (h264 (native)
-> mpeg4 (native))
06-08 17:44:08.963 20835 20835 D ffmpeg : Stream #0:1 -> #0:1 (aac (native) -
> aac (native))
06-08 17:44:08.963 20835 20835 D ffmpeg : Press [q] to stop, [?] for help
06-08 17:44:08.963 20835 20835 D ffmpeg : frame= 2 fps=0.0 q=2.0 size= 1
29kB time=00:00:01.00 bitrate=1056.4kbits/s speed=1.66x
06-08 17:44:08.963 20835 20835 D ffmpeg : frame= 5 fps=4.0 q=2.0 size= 3
14kB time=00:00:01.00 bitrate=2566.0kbits/s dup=0 drop=1 speed=0.809x
06-08 17:44:08.963 20835 20835 D ffmpeg : frame= 8
06-08 17:44:08.963 20835 20835 D ffmpeg : FFmpeg:onFinish: -
Ffmpeg avs to avi lossless conversion
21 février 2016, par PiotrHow to convert avs (Avisynth file) to avi without loss of quality ?
Firstly, I’m changing avs to 264 :
ffmpeg -i "Source.avs" -c:v libx264 -preset veryslow -crf 24 "Output.264"
Secondly, I’m trying to convert 264 to avi :
ffmpeg -i "input.264" "output.avi"
Final avi should have almost 200MB, but has only 2MB. 264 file has almost 150MB, so it should be good. I think that I should use some codec in second command, but I don’t know which. I’m trying to change this for a few days, but without effect.
Or maybe there is a way to lossless conversion without 264, only avs to avi ?
Thank you for your help.
Edit :
Thank you for answers. Unfortunatelly, both methods fail.
First gives me a video, which is blurry and I can’t see anything on it.Output :
C:\Users\Piotr>"C:\Users\Piotr\Documents\Visual Studio 2010\Projects\SoRecorder\
SoRecorder\bin\Release\Ffmpeg\ffmpeg.exe" -i "C:\Users\Piotr\Documents\Visual St
udio 2010\Projects\SoRecorder\SoRecorder\bin\Release\Scripts\-2016-02-20.avs" -c
copy "E:\-2016-02-20.avi"
ffmpeg version N-78559-g2e8ad2d Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-l
ibilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enab
le-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --en
able-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --ena
ble-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --
enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-lib
x265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-d
ecklink --enable-zlib
libavutil 55. 17.103 / 55. 17.103
libavcodec 57. 24.103 / 57. 24.103
libavformat 57. 25.100 / 57. 25.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 32.100 / 6. 32.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, avisynth, from 'C:\Users\Piotr\Documents\Visual Studio 2010\Projects\S
oRecorder\SoRecorder\bin\Release\Scripts\-2016-02-20.avs':
Duration: 00:00:21.80, start: 0.000000, bitrate: 0 kb/s
Stream #0:0: Video: rawvideo (BGRA / 0x41524742), bgra, 1280x720, 15 fps, 15
tbr, 15 tbn, 15 tbc
[avi @ 048d8cc0] bgra rawvideo cannot be written to avi, output file will be unr
eadable
Output #0, avi, to 'E:\-2016-02-20.avi':
Metadata:
ISFT : Lavf57.25.100
Stream #0:0: Video: rawvideo, bgra, 1280x720, q=2-31, 15 fps, 15 tbr, 15 tbn
, 15 tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 41 fps=0.0 q=-1.0 size= 147606kB time=00:00:02.73 bitrate=442385.6kbit
frame= 65 fps= 63 q=-1.0 size= 234006kB time=00:00:04.33 bitrate=442379.5kbit
frame= 93 fps= 60 q=-1.0 size= 334806kB time=00:00:06.20 bitrate=442376.3kbit
frame= 110 fps= 51 q=-1.0 size= 396006kB time=00:00:07.33 bitrate=442375.2kbit
frame= 116 fps= 42 q=-1.0 size= 417606kB time=00:00:07.73 bitrate=442374.9kbit
frame= 122 fps= 37 q=-1.0 size= 439206kB time=00:00:08.13 bitrate=442374.6kbit
frame= 128 fps= 33 q=-1.0 size= 460807kB time=00:00:08.53 bitrate=442374.3kbit
frame= 133 fps= 31 q=-1.0 size= 478807kB time=00:00:08.86 bitrate=442374.1kbit
frame= 139 fps= 29 q=-1.0 size= 500407kB time=00:00:09.26 bitrate=442373.8kbit
frame= 145 fps= 27 q=-1.0 size= 522007kB time=00:00:09.66 bitrate=442373.6kbit
frame= 151 fps= 25 q=-1.0 size= 543607kB time=00:00:10.06 bitrate=442373.5kbit
frame= 157 fps= 24 q=-1.0 size= 565207kB time=00:00:10.46 bitrate=442373.3kbit
frame= 163 fps= 23 q=-1.0 size= 586807kB time=00:00:10.86 bitrate=442373.1kbit
frame= 169 fps= 22 q=-1.0 size= 608407kB time=00:00:11.26 bitrate=442373.0kbit
frame= 175 fps= 21 q=-1.0 size= 630007kB time=00:00:11.66 bitrate=442372.8kbit
frame= 181 fps= 21 q=-1.0 size= 651607kB time=00:00:12.06 bitrate=442372.7kbit
frame= 187 fps= 20 q=-1.0 size= 673207kB time=00:00:12.46 bitrate=442372.6kbit
frame= 193 fps= 19 q=-1.0 size= 694807kB time=00:00:12.86 bitrate=442372.5kbit
frame= 199 fps= 19 q=-1.0 size= 716407kB time=00:00:13.26 bitrate=442372.4kbit
frame= 204 fps= 19 q=-1.0 size= 734407kB time=00:00:13.60 bitrate=442372.3kbit
frame= 210 fps= 18 q=-1.0 size= 756007kB time=00:00:14.00 bitrate=442372.2kbit
frame= 215 fps= 18 q=-1.0 size= 774007kB time=00:00:14.33 bitrate=442372.1kbit
frame= 221 fps= 18 q=-1.0 size= 795607kB time=00:00:14.73 bitrate=442372.1kbit
frame= 226 fps= 17 q=-1.0 size= 813607kB time=00:00:15.06 bitrate=442372.0kbit
frame= 232 fps= 17 q=-1.0 size= 835207kB time=00:00:15.46 bitrate=442371.9kbit
frame= 238 fps= 17 q=-1.0 size= 856807kB time=00:00:15.86 bitrate=442371.8kbit
frame= 244 fps= 17 q=-1.0 size= 878407kB time=00:00:16.26 bitrate=442371.7kbit
frame= 250 fps= 16 q=-1.0 size= 900007kB time=00:00:16.66 bitrate=442371.7kbit
frame= 256 fps= 16 q=-1.0 size= 921608kB time=00:00:17.06 bitrate=442371.6kbit
frame= 261 fps= 16 q=-1.0 size= 939608kB time=00:00:17.40 bitrate=442371.6kbit
frame= 267 fps= 16 q=-1.0 size= 961208kB time=00:00:17.80 bitrate=442371.5kbit
frame= 273 fps= 16 q=-1.0 size= 982808kB time=00:00:18.20 bitrate=442371.5kbit
frame= 278 fps= 16 q=-1.0 size= 1000808kB time=00:00:18.53 bitrate=442371.4kbit
frame= 284 fps= 15 q=-1.0 size= 1022408kB time=00:00:18.93 bitrate=442371.4kbit
frame= 290 fps= 15 q=-1.0 size= 1044008kB time=00:00:19.33 bitrate=442371.3kbit
frame= 296 fps= 15 q=-1.0 size= 1065615kB time=00:00:19.73 bitrate=442374.1kbit
frame= 302 fps= 15 q=-1.0 size= 1087215kB time=00:00:20.13 bitrate=442374.0kbit
frame= 308 fps= 15 q=-1.0 size= 1108815kB time=00:00:20.53 bitrate=442373.9kbit
frame= 314 fps= 15 q=-1.0 size= 1130415kB time=00:00:20.93 bitrate=442373.8kbit
frame= 320 fps= 15 q=-1.0 size= 1152015kB time=00:00:21.33 bitrate=442373.7kbit
frame= 326 fps= 15 q=-1.0 size= 1173615kB time=00:00:21.73 bitrate=442373.7kbit
frame= 327 fps= 15 q=-1.0 Lsize= 1177215kB time=00:00:21.80 bitrate=442373.8kbi
ts/s speed=0.967x
video:1177200kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxi
ng overhead: 0.001301%EDIT : Output after PNG command :
C:\Users\Piotr>"C:\Users\Piotr\Documents\Visual Studio 2010\Projects\SoRecorder\
SoRecorder\bin\Release\Ffmpeg\ffmpeg.exe" -i "C:\Users\Piotr\Documents\Visual St
udio 2010\Projects\SoRecorder\SoRecorder\bin\Release\Scripts\-2016-02-21--1.avs"
-c:v png -pix_fmt bgra "E:\-2016-02-21.avi"
ffmpeg version N-78559-g2e8ad2d Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --
enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-l
ibilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enab
le-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --en
able-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --ena
ble-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --
enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-lib
x265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-d
ecklink --enable-zlib
libavutil 55. 17.103 / 55. 17.103
libavcodec 57. 24.103 / 57. 24.103
libavformat 57. 25.100 / 57. 25.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 32.100 / 6. 32.100
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, avisynth, from 'C:\Users\Piotr\Documents\Visual Studio 2010\Projects\S
oRecorder\SoRecorder\bin\Release\Scripts\-2016-02-21--1.avs':
Duration: 00:00:25.07, start: 0.000000, bitrate: 0 kb/s
Stream #0:0: Video: rawvideo (BGRA / 0x41524742), bgra, 640x480, 30 fps, 30
tbr, 30 tbn, 30 tbc
Incompatible pixel format 'bgra' for codec 'png', auto-selecting format 'rgba'
Output #0, avi, to 'E:\-2016-02-21.avi':
Metadata:
ISFT : Lavf57.25.100
Stream #0:0: Video: png (MPNG / 0x474E504D), rgba, 640x480, q=2-31, 200 kb/s
, 30 fps, 30 tbn, 30 tbc
Metadata:
encoder : Lavc57.24.103 png
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> png (native))
Press [q] to stop, [?] for help
frame= 18 fps=0.0 q=-0.0 size= 10716kB time=00:00:00.46 bitrate=188119.0kbit
frame= 35 fps= 34 q=-0.0 size= 23722kB time=00:00:01.03 bitrate=188065.8kbit
frame= 48 fps= 27 q=-0.0 size= 33668kB time=00:00:01.46 bitrate=188052.7kbit
frame= 61 fps= 26 q=-0.0 size= 43614kB time=00:00:01.90 bitrate=188045.7kbit
frame= 74 fps= 26 q=-0.0 size= 53560kB time=00:00:02.33 bitrate=188041.3kbit
frame= 89 fps= 26 q=-0.0 size= 65036kB time=00:00:02.83 bitrate=188037.8kbit
frame= 106 fps= 27 q=-0.0 size= 78042kB time=00:00:03.40 bitrate=188035.1kbit
frame= 123 fps= 28 q=-0.0 size= 91048kB time=00:00:03.96 bitrate=188033.2kbit
frame= 137 fps= 28 q=-0.0 size= 101759kB time=00:00:04.43 bitrate=188032.0kbit
frame= 155 fps= 28 q=-0.0 size= 115530kB time=00:00:05.03 bitrate=188030.8kbit
frame= 186 fps= 31 q=-0.0 size= 125735kB time=00:00:06.06 bitrate=169783.8kbit
frame= 224 fps= 35 q=-0.0 size= 133831kB time=00:00:07.33 bitrate=149501.7kbit
frame= 261 fps= 37 q=-0.0 size= 142679kB time=00:00:08.56 bitrate=136438.4kbit
frame= 300 fps= 40 q=-0.0 size= 151249kB time=00:00:09.86 bitrate=125577.5kbit
frame= 338 fps= 42 q=-0.0 size= 159452kB time=00:00:11.13 bitrate=117326.2kbit
frame= 371 fps= 44 q=-0.0 size= 169169kB time=00:00:12.23 bitrate=113283.3kbit
frame= 407 fps= 45 q=-0.0 size= 178924kB time=00:00:13.43 bitrate=109112.3kbit
frame= 444 fps= 47 q=-0.0 size= 187571kB time=00:00:14.66 bitrate=104767.1kbit
frame= 488 fps= 49 q=-0.0 size= 194672kB time=00:00:16.13 bitrate=98848.5kbits
frame= 535 fps= 51 q=-0.0 size= 199781kB time=00:00:17.70 bitrate=92463.5kbits
frame= 569 fps= 52 q=-0.0 size= 208530kB time=00:00:18.83 bitrate=90705.2kbits
frame= 604 fps= 52 q=-0.0 size= 216658kB time=00:00:20.00 bitrate=88743.0kbits
frame= 622 fps= 52 q=-0.0 size= 229851kB time=00:00:20.60 bitrate=91404.7kbits
frame= 639 fps= 51 q=-0.0 size= 242857kB time=00:00:21.16 bitrate=93991.3kbits
frame= 656 fps= 50 q=-0.0 size= 255863kB time=00:00:21.73 bitrate=96443.0kbits
frame= 673 fps= 49 q=-0.0 size= 268869kB time=00:00:22.30 bitrate=98770.1kbits
frame= 690 fps= 49 q=-0.0 size= 281875kB time=00:00:22.86 bitrate=100981.9kbit
frame= 707 fps= 48 q=-0.0 size= 294881kB time=00:00:23.43 bitrate=103086.7kbit
frame= 724 fps= 48 q=-0.0 size= 307887kB time=00:00:24.00 bitrate=105092.1kbit
frame= 741 fps= 47 q=-0.0 size= 320893kB time=00:00:24.56 bitrate=107005.0kbit
frame= 752 fps= 46 q=-0.0 Lsize= 332381kB time=00:00:25.06 bitrate=108624.9kbi
ts/s speed=1.54x
video:332357kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxin
g overhead: 0.007042% -
RTSP relay using ffmpeg library
23 novembre 2015, par kiran_gI am implementing an RTSP relay using libavcodec (ffmpeg). Basically, it connects to an IP camera, which is an RTSP server, PULLs the stream and then PUSHes it to wowza. I am finding it very difficult to get any sample implementation for this in the internet. So I started implementing this using bits and pieces from here and there. I took code for code samples to a) read RTSP stream and write to file b)read from file and serve it over RTSP.
This is the current state of the code :
/*
* Copyright (c) 2010 Nicolas George
* Copyright (c) 2011 Stefano Sabatini
* Copyright (c) 2014 Andrey Utkin
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/**
* @file
* API example for demuxing, decoding, filtering, encoding and muxing
* @example transcoding.c
*/
#include <libavcodec></libavcodec>avcodec.h>
#include <libavformat></libavformat>avformat.h>
#include <libavfilter></libavfilter>avfiltergraph.h>
#include <libavfilter></libavfilter>buffersink.h>
#include <libavfilter></libavfilter>buffersrc.h>
#include <libavutil></libavutil>opt.h>
#include <libavutil></libavutil>pixdesc.h>
static AVFormatContext *ifmt_ctx,*temp;
static AVFormatContext *ofmt_ctx;
typedef struct FilteringContext {
AVFilterContext *buffersink_ctx;
AVFilterContext *buffersrc_ctx;
AVFilterGraph *filter_graph;
} FilteringContext;
static FilteringContext *filter_ctx;
static int open_input_file(const char *filename)
{
int ret;
unsigned int i;
ifmt_ctx = NULL;
if ((ret = avformat_open_input(&ifmt_ctx, filename, NULL, NULL)) < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot open input file\n");
return ret;
}
if ((ret = avformat_find_stream_info(ifmt_ctx, NULL)) < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot find stream information\n");
return ret;
}
for (i = 0; i < ifmt_ctx->nb_streams; i++) {
AVStream *stream;
AVCodecContext *codec_ctx;
stream = ifmt_ctx->streams[i];
codec_ctx = stream->codec;
/* Reencode video & audio and remux subtitles etc. */
if (codec_ctx->codec_type == AVMEDIA_TYPE_VIDEO
|| codec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) {
/* Open decoder */
ret = avcodec_open2(codec_ctx,
avcodec_find_decoder(codec_ctx->codec_id), NULL);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Failed to open decoder for stream #%u\n", i);
return ret;
}
}
}
av_dump_format(ifmt_ctx, 0, filename, 0);
return 0;
}
static int open_output_file(const char *filename)
{
AVStream *out_stream;
AVStream *in_stream;
AVCodecContext *dec_ctx, *enc_ctx;
AVCodec *encoder,*codec;
int ret;
unsigned int i;
ofmt_ctx = NULL;
avformat_open_input(&temp, "rtsp://localhost:8554/live", NULL, NULL);
avformat_alloc_output_context2(&ofmt_ctx, temp->oformat,"rtsp", filename);
if (!ofmt_ctx) {
av_log(NULL, AV_LOG_ERROR, "Could not create output context\n");
return AVERROR_UNKNOWN;
}
for (i = 0; i < ifmt_ctx->nb_streams; i++) {
out_stream = avformat_new_stream(ofmt_ctx, NULL);
if (!out_stream) {
av_log(NULL, AV_LOG_ERROR, "Failed allocating output stream\n");
return AVERROR_UNKNOWN;
}
in_stream = ifmt_ctx->streams[i];
dec_ctx = in_stream->codec;
enc_ctx = out_stream->codec;
if (dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO
|| dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) {
/* in this example, we choose transcoding to same codec */
encoder = avcodec_find_encoder(dec_ctx->codec_id);
printf("codec : %d",dec_ctx->codec_id);
if (!encoder) {
av_log(NULL, AV_LOG_FATAL, "Necessary encoder not found\n");
return AVERROR_INVALIDDATA;
}
/* In this example, we transcode to same properties (picture size,
* sample rate etc.). These properties can be changed for output
* streams easily using filters */
if (dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO) {
enc_ctx->height = dec_ctx->height;
enc_ctx->width = dec_ctx->width;
enc_ctx->sample_aspect_ratio = dec_ctx->sample_aspect_ratio;
/* take first format from list of supported formats */
enc_ctx->pix_fmt = encoder->pix_fmts[0];
//enc_ctx->codec_id = AV_CODEC_ID_H264;
/* video time_base can be set to whatever is handy and supported by encoder */
enc_ctx->time_base = dec_ctx->time_base;
} else {
enc_ctx->sample_rate = dec_ctx->sample_rate;
enc_ctx->channel_layout = dec_ctx->channel_layout;
enc_ctx->channels = av_get_channel_layout_nb_channels(enc_ctx->channel_layout);
/* take first format from list of supported formats */
enc_ctx->sample_fmt = encoder->sample_fmts[0];
enc_ctx->pix_fmt =AV_PIX_FMT_RGB24 ;
enc_ctx->time_base = (AVRational){1, enc_ctx->sample_rate};
}
/* Third parameter can be used to pass settings to encoder */
//codec = avcodec_find_encoder(AV_CODEC_ID_H264);
ret = avcodec_open2(enc_ctx, encoder, NULL);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot open video encoder for stream #%u\n", i);
return ret;
}
} else if (dec_ctx->codec_type == AVMEDIA_TYPE_UNKNOWN) {
av_log(NULL, AV_LOG_FATAL, "Elementary stream #%d is of unknown type, cannot proceed\n", i);
return AVERROR_INVALIDDATA;
} else {
/* if this stream must be remuxed */
ret = avcodec_copy_context(ofmt_ctx->streams[i]->codec,
ifmt_ctx->streams[i]->codec);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Copying stream context failed\n");
return ret;
}
}
if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
enc_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
}
av_dump_format(ofmt_ctx, 0, filename, 1);
if (!(ofmt_ctx->oformat->flags & AVFMT_NOFILE)) {
ret = avio_open(&ofmt_ctx->pb, filename, AVIO_FLAG_WRITE);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Could not open output file '%s'", filename);
return ret;
}
}
/* init muxer, write output file header */
ret = avformat_write_header(ofmt_ctx, NULL);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Error occurred when opening output file\n");
return ret;
}
return 0;
}
static int init_filter(FilteringContext* fctx, AVCodecContext *dec_ctx,
AVCodecContext *enc_ctx, const char *filter_spec)
{
char args[512];
int ret = 0;
AVFilter *buffersrc = NULL;
AVFilter *buffersink = NULL;
AVFilterContext *buffersrc_ctx = NULL;
AVFilterContext *buffersink_ctx = NULL;
AVFilterInOut *outputs = avfilter_inout_alloc();
AVFilterInOut *inputs = avfilter_inout_alloc();
AVFilterGraph *filter_graph = avfilter_graph_alloc();
if (!outputs || !inputs || !filter_graph) {
ret = AVERROR(ENOMEM);
goto end;
}
if (dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO) {
buffersrc = avfilter_get_by_name("buffer");
buffersink = avfilter_get_by_name("buffersink");
if (!buffersrc || !buffersink) {
av_log(NULL, AV_LOG_ERROR, "filtering source or sink element not found\n");
ret = AVERROR_UNKNOWN;
goto end;
}
snprintf(args, sizeof(args),
"video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
dec_ctx->width, dec_ctx->height, dec_ctx->pix_fmt,
dec_ctx->time_base.num, dec_ctx->time_base.den,
dec_ctx->sample_aspect_ratio.num,
dec_ctx->sample_aspect_ratio.den);
ret = avfilter_graph_create_filter(&buffersrc_ctx, buffersrc, "in",
args, NULL, filter_graph);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot create buffer source\n");
goto end;
}
ret = avfilter_graph_create_filter(&buffersink_ctx, buffersink, "out",
NULL, NULL, filter_graph);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot create buffer sink\n");
goto end;
}
ret = av_opt_set_bin(buffersink_ctx, "pix_fmts",
(uint8_t*)&enc_ctx->pix_fmt, sizeof(enc_ctx->pix_fmt),
AV_OPT_SEARCH_CHILDREN);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot set output pixel format\n");
goto end;
}
} else if (dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) {
buffersrc = avfilter_get_by_name("abuffer");
buffersink = avfilter_get_by_name("abuffersink");
if (!buffersrc || !buffersink) {
av_log(NULL, AV_LOG_ERROR, "filtering source or sink element not found\n");
ret = AVERROR_UNKNOWN;
goto end;
}
if (!dec_ctx->channel_layout)
dec_ctx->channel_layout =
av_get_default_channel_layout(dec_ctx->channels);
snprintf(args, sizeof(args),
"time_base=%d/%d:sample_rate=%d:sample_fmt=%s:channel_layout=0x%"PRIx64,
dec_ctx->time_base.num, dec_ctx->time_base.den, dec_ctx->sample_rate,
av_get_sample_fmt_name(dec_ctx->sample_fmt),
dec_ctx->channel_layout);
ret = avfilter_graph_create_filter(&buffersrc_ctx, buffersrc, "in",
args, NULL, filter_graph);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot create audio buffer source\n");
goto end;
}
ret = avfilter_graph_create_filter(&buffersink_ctx, buffersink, "out",
NULL, NULL, filter_graph);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot create audio buffer sink\n");
goto end;
}
ret = av_opt_set_bin(buffersink_ctx, "sample_fmts",
(uint8_t*)&enc_ctx->sample_fmt, sizeof(enc_ctx->sample_fmt),
AV_OPT_SEARCH_CHILDREN);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot set output sample format\n");
goto end;
}
ret = av_opt_set_bin(buffersink_ctx, "channel_layouts",
(uint8_t*)&enc_ctx->channel_layout,
sizeof(enc_ctx->channel_layout), AV_OPT_SEARCH_CHILDREN);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot set output channel layout\n");
goto end;
}
ret = av_opt_set_bin(buffersink_ctx, "sample_rates",
(uint8_t*)&enc_ctx->sample_rate, sizeof(enc_ctx->sample_rate),
AV_OPT_SEARCH_CHILDREN);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Cannot set output sample rate\n");
goto end;
}
} else {
ret = AVERROR_UNKNOWN;
goto end;
}
/* Endpoints for the filter graph. */
outputs->name = av_strdup("in");
outputs->filter_ctx = buffersrc_ctx;
outputs->pad_idx = 0;
outputs->next = NULL;
inputs->name = av_strdup("out");
inputs->filter_ctx = buffersink_ctx;
inputs->pad_idx = 0;
inputs->next = NULL;
if (!outputs->name || !inputs->name) {
ret = AVERROR(ENOMEM);
goto end;
}
if ((ret = avfilter_graph_parse_ptr(filter_graph, filter_spec,
&inputs, &outputs, NULL)) < 0)
goto end;
if ((ret = avfilter_graph_config(filter_graph, NULL)) < 0)
goto end;
/* Fill FilteringContext */
fctx->buffersrc_ctx = buffersrc_ctx;
fctx->buffersink_ctx = buffersink_ctx;
fctx->filter_graph = filter_graph;
end:
avfilter_inout_free(&inputs);
avfilter_inout_free(&outputs);
return ret;
}
static int init_filters(void)
{
const char *filter_spec;
unsigned int i;
int ret;
filter_ctx = av_malloc_array(ifmt_ctx->nb_streams, sizeof(*filter_ctx));
if (!filter_ctx)
return AVERROR(ENOMEM);
for (i = 0; i < ifmt_ctx->nb_streams; i++) {
filter_ctx[i].buffersrc_ctx = NULL;
filter_ctx[i].buffersink_ctx = NULL;
filter_ctx[i].filter_graph = NULL;
if (!(ifmt_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO
|| ifmt_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO))
continue;
if (ifmt_ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO)
filter_spec = "null"; /* passthrough (dummy) filter for video */
else
filter_spec = "anull"; /* passthrough (dummy) filter for audio */
ret = init_filter(&filter_ctx[i], ifmt_ctx->streams[i]->codec,
ofmt_ctx->streams[i]->codec, filter_spec);
if (ret)
return ret;
}
return 0;
}
static int encode_write_frame(AVFrame *filt_frame, unsigned int stream_index, int *got_frame) {
int ret;
int got_frame_local;
AVPacket enc_pkt;
int (*enc_func)(AVCodecContext *, AVPacket *, const AVFrame *, int *) =
(ifmt_ctx->streams[stream_index]->codec->codec_type ==
AVMEDIA_TYPE_VIDEO) ? avcodec_encode_video2 : avcodec_encode_audio2;
if (!got_frame)
got_frame = &got_frame_local;
av_log(NULL, AV_LOG_INFO, "Encoding frame\n");
/* encode filtered frame */
enc_pkt.data = NULL;
enc_pkt.size = 0;
av_init_packet(&enc_pkt);
ret = enc_func(ofmt_ctx->streams[stream_index]->codec, &enc_pkt,
filt_frame, got_frame);
av_frame_free(&filt_frame);
if (ret < 0)
return ret;
if (!(*got_frame))
return 0;
/* prepare packet for muxing */
enc_pkt.stream_index = stream_index;
av_packet_rescale_ts(&enc_pkt,
ofmt_ctx->streams[stream_index]->codec->time_base,
ofmt_ctx->streams[stream_index]->time_base);
av_log(NULL, AV_LOG_DEBUG, "Muxing frame\n");
/* mux encoded frame */
ret = av_interleaved_write_frame(ofmt_ctx, &enc_pkt);
return ret;
}
static int filter_encode_write_frame(AVFrame *frame, unsigned int stream_index)
{
int ret;
AVFrame *filt_frame;
av_log(NULL, AV_LOG_INFO, "Pushing decoded frame to filters\n");
/* push the decoded frame into the filtergraph */
ret = av_buffersrc_add_frame_flags(filter_ctx[stream_index].buffersrc_ctx,
frame, 0);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Error while feeding the filtergraph\n");
return ret;
}
/* pull filtered frames from the filtergraph */
while (1) {
filt_frame = av_frame_alloc();
if (!filt_frame) {
ret = AVERROR(ENOMEM);
break;
}
av_log(NULL, AV_LOG_INFO, "Pulling filtered frame from filters\n");
ret = av_buffersink_get_frame(filter_ctx[stream_index].buffersink_ctx,
filt_frame);
if (ret < 0) {
/* if no more frames for output - returns AVERROR(EAGAIN)
* if flushed and no more frames for output - returns AVERROR_EOF
* rewrite retcode to 0 to show it as normal procedure completion
*/
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
ret = 0;
av_frame_free(&filt_frame);
break;
}
filt_frame->pict_type = AV_PICTURE_TYPE_NONE;
ret = encode_write_frame(filt_frame, stream_index, NULL);
if (ret < 0)
break;
}
return ret;
}
static int flush_encoder(unsigned int stream_index)
{
int ret;
int got_frame;
if (!(ofmt_ctx->streams[stream_index]->codec->codec->capabilities &
AV_CODEC_CAP_DELAY))
return 0;
while (1) {
av_log(NULL, AV_LOG_INFO, "Flushing stream #%u encoder\n", stream_index);
ret = encode_write_frame(NULL, stream_index, &got_frame);
if (ret < 0)
break;
if (!got_frame)
return 0;
}
return ret;
}
int main(int argc, char **argv)
{
int ret;
AVPacket packet = { .data = NULL, .size = 0 };
AVFrame *frame = NULL;
enum AVMediaType type;
unsigned int stream_index;
unsigned int i;
int got_frame;
int (*dec_func)(AVCodecContext *, AVFrame *, int *, const AVPacket *);
if (argc != 3) {
av_log(NULL, AV_LOG_ERROR, "Usage: %s <input file="file" /> <output file="file">\n", argv[0]);
return 1;
}
av_register_all();
avfilter_register_all();
avformat_network_init();
if ((ret = open_input_file(argv[1])) < 0)
goto end;
if ((ret = open_output_file(argv[2])) < 0)
goto end;
if ((ret = init_filters()) < 0)
goto end;
/* read all packets */
while (1) {
if ((ret = av_read_frame(ifmt_ctx, &packet)) < 0)
break;
stream_index = packet.stream_index;
type = ifmt_ctx->streams[packet.stream_index]->codec->codec_type;
av_log(NULL, AV_LOG_DEBUG, "Demuxer gave frame of stream_index %u\n",
stream_index);
if (filter_ctx[stream_index].filter_graph) {
av_log(NULL, AV_LOG_DEBUG, "Going to reencode&filter the frame\n");
frame = av_frame_alloc();
if (!frame) {
ret = AVERROR(ENOMEM);
break;
}
av_packet_rescale_ts(&packet,
ifmt_ctx->streams[stream_index]->time_base,
ifmt_ctx->streams[stream_index]->codec->time_base);
dec_func = (type == AVMEDIA_TYPE_VIDEO) ? avcodec_decode_video2 :
avcodec_decode_audio4;
ret = dec_func(ifmt_ctx->streams[stream_index]->codec, frame,
&got_frame, &packet);
if (ret < 0) {
av_frame_free(&frame);
av_log(NULL, AV_LOG_ERROR, "Decoding failed\n");
break;
}
if (got_frame) {
frame->pts = av_frame_get_best_effort_timestamp(frame);
ret = filter_encode_write_frame(frame, stream_index);
av_frame_free(&frame);
if (ret < 0)
goto end;
} else {
av_frame_free(&frame);
}
} else {
/* remux this frame without reencoding */
av_packet_rescale_ts(&packet,
ifmt_ctx->streams[stream_index]->time_base,
ofmt_ctx->streams[stream_index]->time_base);
ret = av_interleaved_write_frame(ofmt_ctx, &packet);
if (ret < 0)
goto end;
}
av_packet_unref(&packet);
}
/* flush filters and encoders */
for (i = 0; i < ifmt_ctx->nb_streams; i++) {
/* flush filter */
if (!filter_ctx[i].filter_graph)
continue;
ret = filter_encode_write_frame(NULL, i);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Flushing filter failed\n");
goto end;
}
/* flush encoder */
ret = flush_encoder(i);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Flushing encoder failed\n");
goto end;
}
}
av_write_trailer(ofmt_ctx);
end:
av_packet_unref(&packet);
av_frame_free(&frame);
for (i = 0; i < ifmt_ctx->nb_streams; i++) {
avcodec_close(ifmt_ctx->streams[i]->codec);
if (ofmt_ctx && ofmt_ctx->nb_streams > i && ofmt_ctx->streams[i] && ofmt_ctx->streams[i]->codec)
avcodec_close(ofmt_ctx->streams[i]->codec);
if (filter_ctx && filter_ctx[i].filter_graph)
avfilter_graph_free(&filter_ctx[i].filter_graph);
}
av_free(filter_ctx);
avformat_close_input(&ifmt_ctx);
if (ofmt_ctx && !(ofmt_ctx->oformat->flags & AVFMT_NOFILE))
avio_closep(&ofmt_ctx->pb);
avformat_free_context(ofmt_ctx);
if (ret < 0)
av_log(NULL, AV_LOG_ERROR, "Error occurred: %s\n", av_err2str(ret));
return ret ? 1 : 0;
}
</output>When we run this we are getting this error :
Input #0, rtsp, from 'rtsp://localhost:8554/live':
Metadata:
title : Unnamed
comment : N/A
Duration: N/A, start: 5294.642467, bitrate: N/A
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 30 fps, 30 tbr, 90k tbn, 60 tbc
[libx264 @ 0xe87c80] Specified pixel format -1 is invalid or not supported
Cannot open video encoder for stream #0
codec : 28 and pix :12
Error occurred: Invalid argumentBut I could see that the correct pixel format macro "AV_PIX_FMT_YUV420P" is provided.
UPDATE 1 :
This is the section in ffmpeg where the error is thrown from(utils.c line 1547) :if (avctx->codec->pix_fmts) {
for (i = 0; avctx->codec->pix_fmts[i] != AV_PIX_FMT_NONE; i++)
if (avctx->pix_fmt == avctx->codec->pix_fmts[i])
break;
if (avctx->codec->pix_fmts[i] == AV_PIX_FMT_NONE
&& !((avctx->codec_id == AV_CODEC_ID_MJPEG || avctx->codec_id == AV_CODEC_ID_LJPEG)
&& avctx->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL)) {
char buf[128];
snprintf(buf, sizeof(buf), "%d", avctx->pix_fmt);
av_log(avctx, AV_LOG_ERROR, "Specified pixel format %s is invalid or not supported\n",
(char *)av_x_if_null(av_get_pix_fmt_name(avctx->pix_fmt), buf));
ret = AVERROR(EINVAL);
goto free_and_end;
}Can someone suggest a solution for this.
Thanks