
Recherche avancée
Autres articles (67)
-
Le profil des utilisateurs
12 avril 2011, parChaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...) -
Configurer la prise en compte des langues
15 novembre 2010, parAccéder à la configuration et ajouter des langues prises en compte
Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...) -
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 (6401)
-
Output Video frames are scrolling vertically when reading from rtmp source using python ffmpeg subprocess
24 février 2018, par nkottapalliThis is what I’m trying to do :
(1) Read rtmp stream with ffmpeg(python subprocess) and piping to rawvideo
(2) processing rawvideo pipe from (1) to opencv readable image using numpy
(3) process the image from (2) using opencv for whatever application
(4) Display or (Stream)to processed image from (3)
This is the code I’ve written :
FFMPEG_BIN = 'ffmpeg'
#SOURCE -> rtmp://yourdomain/rtmpappname/streamkey
SOURCE = 'YOUR RTMP INPUT STREAM HERE URL'
#DESTINATION -> rtmp://yourdomain/rtmpappname/streamkey
DESTINATION = 'YOUR RTMP PROCESSED OUTPUT STREAM URL'
#frame width and height of source stream
FRAME_WIDTH = 1280
FRAME_HEIGHT = 720
import subprocess as sp
#read from rtmp source and output to rawvideo pipe
cmd_video_only_in = [ FFMPEG_BIN, '-i', SOURCE, '-f', 'image2pipe', '-pix_fmt', 'bgr24', '-vcodec', 'rawvideo','-']
video_input_stream = sp.Popen(cmd_video_only_in, stdout=sp.PIPE, bufsize=FRAME_WIDTH*FRAME_HEIGHT*3, shell=False)
#(Optional) stream opencv processed frames to DESTINATION url with audio mapped from source, audio-video sync can be achieved by changing
#the float value 2.00 of -itsoffset to what suits you
#cmd_processed_stream_out = [FFMPEG_BIN,'-y','-thread_queue_size', '1024','-f', 'rawvideo', '-pix_fmt', 'bgr24', '-video_size', str(FRAME_WIDTH)+'X'+str(FRAME_HEIGHT),'-i','-','-itsoffset','2.00','-i', SOURCE,'-map','0:v:0','-map','1:a:0','-vcodec','libx264','-pix_fmt','yuv420p','-acodec','copy','-preset','ultrafast','-f','flv',DESTINATION]
#processed_output_stream = sp.Popen(cmd_processed_stream_out, stdin=sp.PIPE, shell=False)
import cv2
import numpy as np
import time
while (True):
raw_image = video_input_stream.stdout.read(FRAME_WIDTH*FRAME_HEIGHT*3)
image = np.fromstring(raw_image, dtype='uint8')
image = image.reshape((FRAME_HEIGHT,FRAME_WIDTH,3))
#Process the image
#any opencv based image processing can be done here eg. object detection, feature extraction, etc.,
#Display output
cv2.imshow('OUTPUT', image)
#(Optional)send the processed image frames (output) to DESITNATION rtmp url
#processed_output_stream.stdin.write(image.tostring())
video_input_stream.stdout.flush()
if cv2.waitKey(25) & 0xFF == ord('q'):
video_input_stream.terminate()
processed_output_stream.stdin.close()
processed_output_stream.terminate()
breakThe output frames which i’m trying to Display (using cv2.imshow) or Stream to rtmp destination are scrolling vertically from bottom to top. How do I solve this vertical scrolling issue ?
EDIT1 : FULL LOG - streaming output to DESTINATION URL :
$python3 processing.py
ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
Metadata:
Server NGINX RTMP (github.com/arut/nginx-rtmp-module)
width 1280.00
height 720.00
displayWidth 1280.00
displayHeight 720.00
duration 0.00
framerate 25.00
fps 25.00
videodatarate 0.00
videocodecid 7.00
audiodatarate 0.00
audiocodecid 10.00
Input #0, live_flv, from 'SOURCE URL':
Metadata:
Server : NGINX RTMP (github.com/arut/nginx-rtmp-module)
displayWidth : 1280
displayHeight : 720
fps : 25
profile :
level :
Duration: 00:00:00.00, start: 10435.038000, bitrate: N/A
Stream #0:0: Video: h264 (Main), yuv420p, 1280x720, 25 fps, 25 tbr, 1k tbn, 2k tbc
Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp
Output #0, image2pipe, to 'pipe:':
Metadata:
Server : NGINX RTMP (github.com/arut/nginx-rtmp-module)
displayWidth : 1280
displayHeight : 720
fps : 25
profile :
level :
encoder : Lavf56.40.101
Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc56.60.100 rawvideo
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))
Press [q] to stop, [?] for help
Input #0, rawvideo, from 'pipe:':
Duration: N/A, start: 0.000000, bitrate: 552960 kb/s
Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, 552960 kb/s, 25 tbr, 25 tbn, 25 tbc
Metadata:
Server NGINX RTMP (github.com/arut/nginx-rtmp-module)
width 1280.00
height 720.00
displayWidth 1280.00
displayHeight 720.00
duration 0.00
framerate 25.00
fps 25.00
videodatarate 0.00
videocodecid 7.00
audiodatarate 0.00
audiocodecid 10.00
Input #1, live_flv, from 'SOURCE URL':
Metadata:
Server : NGINX RTMP (github.com/arut/nginx-rtmp-module)
displayWidth : 1280
displayHeight : 720
fps : 25
profile :
level :
Duration: 00:00:00.00, start: 10438.591000, bitrate: N/A
Stream #1:0: Video: h264 (Main), yuv420p, 1280x720, 25 fps, 25 tbr, 1k tbn, 2k tbc
Stream #1:1: Audio: aac (LC), 44100 Hz, stereo, fltp
[libx264 @ 0x19c1820] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x19c1820] profile Constrained Baseline, level 3.1
[libx264 @ 0x19c1820] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
[flv @ 0x19c0880] Codec for stream 1 does not use global headers but container format requires global headers
Output #0, flv, to 'DESINATION URL':
Metadata:
encoder : Lavf56.40.101
Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1280x720, q=-1--1, 25 fps, 1k tbn, 25 tbc
Metadata:
encoder : Lavc56.60.100 libx264
Stream #0:1: Audio: aac ([10][0][0][0] / 0x000A), 44100 Hz, stereo
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Stream #1:1 -> #0:1 (copy)
frame= 3 fps=1.0 q=-0.0 size= 8100kB time=00:00:00.12 bitrate=552960.0kbits/[live_flv @ 0x19b1900] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)
frame= 45 fps=0.0 q=20.0 size= 427kB time=00:00:01.28 bitrate=2730.9kbits/s
frame= 123 fps= 34 q=-0.0 size= 332100kB time=00:00:04.92 bitrate=552960.0kbits/
frame= 58 fps= 57 q=21.0 size= 608kB time=00:00:01.80 bitrate=2766.4kbits/s
frame= 136 fps= 33 q=-0.0 size= 367200kB time=00:00:05.44 bitrate=552960.0kbits/
frame= 70 fps= 46 q=20.0 size= 737kB time=00:00:02.28 bitrate=2648.5kbits/s
frame= 149 fps= 32 q=-0.0 size= 402300kB time=00:00:05.96 bitrate=552960.0kbits/ -
What ffmpeg settings to ensure 0 duplicate frames and 0 dropped frames when capturing to mpeg-2 program stream using ffmpeg/avfoundation on Mac ?
16 février 2017, par aerodavoI’m trying to capture to a DVD compliant mpeg-2 file (ffmpeg :
-target ntsc-dvd
) from the HDMI output of a camcorder into a Magewell HDMI to USB 3.0 box into my Late 2012 15" non-retina MacBook Pro (quad core 2.3, 16gb ram, ssd), using ffmpeg/avfoundation.I’ve tried everything I can think of, or find online. I’m still getting duplicate and dropped frames, which either leads to audio/video sync issues, or audio dropouts, especially for longer recordings. I need this to be stable for recordings of up to 2.5 hours. This is the Terminal output for a 1.5 hour recording :
Lapaki:~ Lapaki$ /Users/Lapaki/Desktop/ffmpeg -f avfoundation -video_size 960x540 -pixel_format uyvy422 -framerate ntsc -i "XI:XI" -vf crop=iw-240:ih:120:0 -target ntsc-dvd -aspect 4:3 -q:v 3 -ab 256k /Users/Lapaki/Desktop/FF\ Test/`date +%F`\ `date +%H_%M_%S`.mpg
ffmpeg version 3.2.3-tessus Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 55. 34.101 / 55. 34.101
libavcodec 57. 64.101 / 57. 64.101
libavformat 57. 56.101 / 57. 56.101
libavdevice 57. 1.100 / 57. 1.100
libavfilter 6. 65.100 / 6. 65.100
libswscale 4. 2.100 / 4. 2.100
libswresample 2. 3.100 / 2. 3.100
libpostproc 54. 1.100 / 54. 1.100
Input #0, avfoundation, from 'XI:XI':
Duration: N/A, start: 610606.984208, bitrate: N/A
Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 960x540, 29.97 fps, 29.97 tbr, 1000k tbn, 1000k tbc
Stream #0:1: Audio: pcm_f32le, 48000 Hz, stereo, flt, 3072 kb/s
Output #0, dvd, to '/Users/Lapaki/Desktop/FF Test/2017-02-15 17_46_28.mpg':
Metadata:
encoder : Lavf57.56.101
Stream #0:0: Video: mpeg2video (Main), yuv420p, 720x480 [SAR 8:9 DAR 4:3], q=2-31, 6000 kb/s, 29.97 fps, 90k tbn, 29.97 tbc
Metadata:
encoder : Lavc57.64.101 mpeg2video
Side data:
cpb: bitrate max/min/avg: 9000000/0/6000000 buffer size: 1835008 vbv_delay: -1
Stream #0:1: Audio: ac3, 48000 Hz, stereo, fltp, 256 kb/s
Metadata:
encoder : Lavc57.64.101 ac3
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
Stream #0:1 -> #0:1 (pcm_f32le (native) -> ac3 (native))
Press [q] to stop, [?] for help
[swscaler @ 0x7fd315892800] Warning: data is not aligned! This can lead to a speedloss
frame= 20 fps=0.0 q=3.0 size= 298kB time=00:00:00.65 bitrate=3721.4kbits/sframe= 35 fps= 35 q=3.0 size= 498kB time=00:00:01.13 bitrate=3591.2kbits/sframe= 50 fps= 33 q=3.0 size= 708kB time=00:00:01.64 bitrate=3519.4kbits/sframe= 65 fps= 32 q=3.0 size= 920kB time=00:00:02.16
...
bitrate=2721.7kbits/frame=162094 fps= 30 q=3.0 size= 1796936kB time=01:30:08.47 bitrate=2721.7kbits/frame=162109 fps= 30 q=3.0 size= 1797142kB time=01:30:08.98 bitrate=2721.8kbits/frame=162110 fps= 30 q=3.0 Lsize= 1797202kB time=01:30:09.01 bitrate=2721.9kbits/s dup=221 drop=0 speed= 1x
video:1579050kB audio:168069kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.866632%I deleted the middle part (denoted by the "..."), which is just a lot more of the same accumulating information. By the end there are 221 duplicate frames, and for this one I didn’t get any dropped frames, but that happens every other time as well it seems.
With this code, the audio seems to stay in pretty good sync, but I get little dropouts every 30 seconds to a minute or so. On this recording, there are dropouts at :
00:00:43, 00:01:19, 00:01:47, 00:02:17, 00:03:18, ...
I stopped listening there ; they happen at the end too, so I assume similarly spaced dropouts are happening throughout the file.
Is there some secret ffmpeg code to ensure there are no dropped or duplicate frames when capturing from a live source to dvd compliant mpeg-2 files ?
When I convert from pretty much any type of file to mpeg-2 files using
-target ntsc-dvd
, the speed is something like 10x on this machine, so it seems like it would have no problem keeping up with a live source, right ?I’ve also tried constant bit rate using
-b:v 5000k -minrate 5000k -maxrate 5000k -bufsize 2500k
, which also doesn’t prevent dropped/duplicate frames.I’ve tried separating out the audio and video inputs, which doesn’t solve it.
I’ve tried using
-vsync 0
on the video input, which does seem to solve the issue, because the output doesn’t report dups/drops, but the audio/video drift out of sync more and more, so that hasn’t worked either.Thanks so much for any help. I’ve been testing and testing and searching and searching for weeks...
-
using ffmpeg for development, libavutil/error environment not OK
26 février 2018, par luoyangheroI want to build a latest ffmpeg development library. I refered the docker script
’https://github.com/jrottenberg/ffmpeg/blob/master/docker-images/3.4/Dockerfile’,
and I changed the docker file to a shell file. Download all source files,
compile all dependency source and ffmpeg 3.4.1 source.
The following is my changed shell script.#!/bin/sh
export PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig
LD_LIBRARY_PATH=/opt/ffmpeg/lib
PREFIX=/opt/ffmpeg
MAKEFLAGS="-j4"
export FFMPEG_VERSION=3.4.1
export FDKAAC_VERSION=0.1.5
export LAME_VERSION=3.99.5
export LIBASS_VERSION=0.13.7
export OGG_VERSION=1.3.2
export OPENCOREAMR_VERSION=0.1.4
export OPUS_VERSION=1.2
export OPENJPEG_VERSION=2.1.2
export THEORA_VERSION=1.1.1
export VORBIS_VERSION=1.3.5
export VPX_VERSION=1.6.1
export X264_VERSION=20170226-2245-stable
export X265_VERSION=2.3
export XVID_VERSION=1.3.4
export FREETYPE_VERSION=2.5.5
export FRIBIDI_VERSION=0.19.7
export FONTCONFIG_VERSION=2.12.4
export LIBVIDSTAB_VERSION=1.1.0
SRC=/usr/local
OGG_SHA256SUM="e19ee34711d7af328cb26287f4137e70630e7261b17cbe3cd41011d73a654692 libogg-1.3.2.tar.gz"
OPUS_SHA256SUM="77db45a87b51578fbc49555ef1b10926179861d854eb2613207dc79d9ec0a9a9 opus-1.2.tar.gz"
VORBIS_SHA256SUM="6efbcecdd3e5dfbf090341b485da9d176eb250d893e3eb378c428a2db38301ce libvorbis-1.3.5.tar.gz"
THEORA_SHA256SUM="40952956c47811928d1e7922cda3bc1f427eb75680c3c37249c91e949054916b libtheora-1.1.1.tar.gz"
XVID_SHA256SUM="4e9fd62728885855bc5007fe1be58df42e5e274497591fec37249e1052ae316f xvidcore-1.3.4.tar.gz"
FREETYPE_SHA256SUM="5d03dd76c2171a7601e9ce10551d52d4471cf92cd205948e60289251daddffa8 freetype-2.5.5.tar.gz"
LIBVIDSTAB_SHA256SUM="14d2a053e56edad4f397be0cb3ef8eb1ec3150404ce99a426c4eb641861dc0bb v1.1.0.tar.gz"
LIBASS_SHA256SUM="8fadf294bf701300d4605e6f1d92929304187fca4b8d8a47889315526adbafd7 0.13.7.tar.gz"
FRIBIDI_SHA256SUM="3fc96fa9473bd31dcb5500bdf1aa78b337ba13eb8c301e7c28923fea982453a8 0.19.7.tar.gz"
apt-get -y update
apt-get install -y --no-install-recommends ca-certificates expat libgomp1
apt-get autoremove -y
apt-get clean -y
apt-get install -y --no-install-recommends autoconf
apt-get install -y --no-install-recommends automake
apt-get install -y --no-install-recommends cmake
apt-get install -y --no-install-recommends curl
apt-get install -y --no-install-recommends bzip2
apt-get install -y --no-install-recommends libexpat1-dev
apt-get install -y --no-install-recommends g++
apt-get install -y --no-install-recommends gcc
apt-get install -y --no-install-recommends git
apt-get install -y --no-install-recommends gperf
apt-get install -y --no-install-recommends libtool
apt-get install -y --no-install-recommends make
apt-get install -y --no-install-recommends nasm
apt-get install -y --no-install-recommends perl
apt-get install -y --no-install-recommends pkg-config
apt-get install -y --no-install-recommends python
apt-get install -y --no-install-recommends libssl-dev
apt-get install -y --no-install-recommends yasm
apt-get install -y --no-install-recommends zlib1g-dev
############LIB env
## opencore-amr https://sourceforge.net/projects/opencore-amr/
####OnLine
# DIR=/tmp/opencore-amr && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sL https://downloads.sf.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR_VERSION}.tar.gz | \
# tar -zx --strip-components=1 && \
# ./configure --prefix="${PREFIX}" --enable-shared && \
# make && \
# make install && \
# rm -rf ${DIR}
##curl -sL https://downloads.sf.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.4.tar.gz | tar -zx --strip-components=1
####OffLine
DIR=opencore-amr-${OPENCOREAMR_VERSION} && \
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
./configure --prefix="${PREFIX}" --enable-shared && \
make && \
make install && \
cd ..
### x264 http://www.videolan.org/developers/x264.html
#
# DIR=/tmp/x264 && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sL https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-${X264_VERSION}.tar.bz2 | \
# tar -jx --strip-components=1 && \
# ./configure --prefix="${PREFIX}" --enable-shared --enable-pic --disable-cli && \
# make && \
# make install && \
# rm -rf ${DIR}
####OffLine
DIR=x264-snapshot-${X264_VERSION}
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.bz2 && \
cd ./${DIR} && \
./configure --prefix="${PREFIX}" --enable-shared --enable-pic --disable-cli && \
make && \
make install && \
cd ..
#### x265 http://x265.org/
#
# DIR=/tmp/x265 && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sL https://download.videolan.org/pub/videolan/x265/x265_${X265_VERSION}.tar.gz | \
# tar -zx && \
# cd x265_${X265_VERSION}/build/linux && \
# sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\/opt\/ffmpeg/" multilib.sh && \
# sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \
# ./multilib.sh && \
# make -C 8bit install
### rm -rf ${DIR}
####OffLine
DIR=x265_${X265_VERSION}
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR}/build/linux && \
sed -i "/-DEXTRA_LIB/ s/$/ -DCMAKE_INSTALL_PREFIX=\/opt\/ffmpeg/" multilib.sh && \
sed -i "/^cmake/ s/$/ -DENABLE_CLI=OFF/" multilib.sh && \
./multilib.sh && \
make -C 8bit install
cd ../../../
#### libogg https://www.xiph.org/ogg/
#
# DIR=/tmp/ogg && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO http://downloads.xiph.org/releases/ogg/libogg-${OGG_VERSION}.tar.gz && \
# echo ${OGG_SHA256SUM} | sha256sum --check && \
# tar -zx --strip-components=1 -f libogg-${OGG_VERSION}.tar.gz && \
# ./configure --prefix="${PREFIX}" --enable-shared && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=libogg-${OGG_VERSION}
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
./configure --prefix="${PREFIX}" --enable-shared && \
make && \
make install && \
cd ..
#### libopus https://www.opus-codec.org/
#
# DIR=/tmp/opus && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO https://archive.mozilla.org/pub/opus/opus-${OPUS_VERSION}.tar.gz && \
# echo ${OPUS_SHA256SUM} | sha256sum --check && \
# tar -zx --strip-components=1 -f opus-${OPUS_VERSION}.tar.gz && \
# autoreconf -fiv && \
# ./configure --prefix="${PREFIX}" --enable-shared && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=opus-${OPUS_VERSION}
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
autoreconf -fiv && \
./configure --prefix="${PREFIX}" --enable-shared && \
make && \
make install && \
cd ..
#### libvorbis https://xiph.org/vorbis/
#
# DIR=/tmp/vorbis && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS_VERSION}.tar.gz && \
# echo ${VORBIS_SHA256SUM} | sha256sum --check && \
# tar -zx --strip-components=1 -f libvorbis-${VORBIS_VERSION}.tar.gz && \
# ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=libvorbis-${VORBIS_VERSION}
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
make && \
make install && \
cd ..
#### libtheora http://www.theora.org/
#
# DIR=/tmp/theora && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO http://downloads.xiph.org/releases/theora/libtheora-${THEORA_VERSION}.tar.gz && \
# echo ${THEORA_SHA256SUM} | sha256sum --check && \
# tar -zx --strip-components=1 -f libtheora-${THEORA_VERSION}.tar.gz && \
# ./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=libtheora-${THEORA_VERSION}
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
./configure --prefix="${PREFIX}" --with-ogg="${PREFIX}" --enable-shared && \
make && \
make install && \
cd ..
#### libvpx https://www.webmproject.org/code/
#
# DIR=/tmp/vpx && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sL https://codeload.github.com/webmproject/libvpx/tar.gz/v${VPX_VERSION} | \
# tar -zx --strip-components=1 && \
# ./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-pic --enable-shared \
# --disable-debug --disable-examples --disable-docs --disable-install-bins && \
# make && \
# make install
## rm -rf ${DIR}
#####OffLine
DIR=libvpx-1.6.1
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
./configure --prefix="${PREFIX}" --enable-vp8 --enable-vp9 --enable-pic --enable-shared \
--disable-debug --disable-examples --disable-docs --disable-install-bins && \
make && \
make install && \
cd ..
#### libmp3lame http://lame.sourceforge.net/
#
# DIR=/tmp/lame && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sL https://downloads.sf.net/project/lame/lame/${LAME_VERSION%.*}/lame-${LAME_VERSION}.tar.gz | \
# tar -zx --strip-components=1 && \
# ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic --disable-frontend && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=lame-3.99.5
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --enable-shared --enable-nasm --enable-pic --disable-frontend && \
make && \
make install && \
cd ..
#### xvid https://www.xvid.com/
#
# DIR=/tmp/xvid && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO http://downloads.xvid.org/downloads/xvidcore-${XVID_VERSION}.tar.gz && \
# echo ${XVID_SHA256SUM} | sha256sum --check && \
# tar -zx -f xvidcore-${XVID_VERSION}.tar.gz && \
# cd xvidcore/build/generic && \
# ./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --datadir="${DIR}" --enable-shared --enable-shared && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=xvidcore
BASE_DIR=`pwd`
rm -rf ./${DIR}-1.3.4
tar -xvf ./${DIR}-1.3.4.tar.gz && \
cd ./${DIR} && \
cd ./build/generic && \
./configure --prefix="${PREFIX}" --bindir="${PREFIX}/bin" --datadir="${BASE_DIR}/${DIR}" --enable-shared --enable-shared && \
make && \
make install && \
cd ../../../
#### fdk-aac https://github.com/mstorsjo/fdk-aac
#
# DIR=/tmp/fdk-aac && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sL https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC_VERSION}.tar.gz | \
# tar -zx --strip-components=1 && \
# autoreconf -fiv && \
# ./configure --prefix="${PREFIX}" --enable-shared --datadir="${DIR}" && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
BASE_DIR=`pwd`
DIR=fdk-aac-0.1.5
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
autoreconf -fiv && \
./configure --prefix="${PREFIX}" --enable-shared --datadir="${BASE_DIR}/${DIR}" && \
make && \
make install && \
cd ..
## openjpeg https://github.com/uclouvain/openjpeg
# DIR=/tmp/openjpeg && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sL https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz | \
# tar -zx --strip-components=1 && \
# cmake -DBUILD_THIRDPARTY:BOOL=ON -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=openjpeg-2.1.2
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
cmake -DBUILD_THIRDPARTY:BOOL=ON -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
make && \
make install && \
cd ..
### freetype https://www.freetype.org/
##RUN \
## DIR=/tmp/freetype && \
## mkdir -p ${DIR} && \
## cd ${DIR} && \
## curl -sLO http://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \
## echo ${FREETYPE_SHA256SUM} | sha256sum --check && \
## tar -zx --strip-components=1 -f freetype-${FREETYPE_VERSION}.tar.gz && \
## ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
## make && \
## make install && \
## rm -rf ${DIR}
###OffLine
DIR=freetype-${FREETYPE_VERSION}
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
cd ..
### libvstab https://github.com/georgmartius/vid.stab
#
# DIR=/tmp/vid.stab && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB_VERSION}.tar.gz &&\
# echo ${LIBVIDSTAB_SHA256SUM} | sha256sum --check && \
# tar -zx --strip-components=1 -f v${LIBVIDSTAB_VERSION}.tar.gz && \
# cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=vid.stab
rm -rf ./${DIR}-1.1.0
tar -xvf ./${DIR}_v1.1.0.tar.gz && \
cd ./${DIR}-1.1.0 && \
cmake -DCMAKE_INSTALL_PREFIX="${PREFIX}" . && \
make && \
make install && \
cd ..
### fridibi https://www.fribidi.org/
# + https://github.com/fribidi/fribidi/issues/8
#
# DIR=/tmp/fribidi && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO https://github.com/fribidi/fribidi/archive/${FRIBIDI_VERSION}.tar.gz && \
# echo ${FRIBIDI_SHA256SUM} | sha256sum --check && \
# tar -zx --strip-components=1 -f ${FRIBIDI_VERSION}.tar.gz && \
# sed -i 's/^SUBDIRS =.*/SUBDIRS=gen.tab charset lib/' Makefile.am && \
# ./bootstrap --no-config && \
# ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \
# make && \
# make install
# rm -rf ${DIR}
####OffLine
DIR=fribidi-0.19.7 && \
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.gz && \
cd ./${DIR} && \
sed -i 's/^SUBDIRS =.*/SUBDIRS=gen.tab charset lib/' Makefile.am && \
./bootstrap --no-config && \
./configure -prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
cd ..
### fontconfig https://www.freedesktop.org/wiki/Software/fontconfig/
# DIR=/tmp/fontconfig && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG_VERSION}.tar.bz2 &&\
# tar -jx --strip-components=1 -f fontconfig-${FONTCONFIG_VERSION}.tar.bz2 && \
# ./configure -prefix="${PREFIX}" --disable-static --enable-shared && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=fontconfig-2.12.4 && \
rm -rf ./${DIR}
tar -xvf ./${DIR}.tar.bz2 && \
cd ./${DIR} && \
./configure -prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
cd ..
## libass https://github.com/libass/libass
#need add PKG_CONFIG_PATH
#
# DIR=/tmp/libass && \
# rm -rf ${DIR} && \
# mkdir -p ${DIR} && \
# cd ${DIR} && \
# curl -sLO https://github.com/libass/libass/archive/${LIBASS_VERSION}.tar.gz &&\
# echo ${LIBASS_SHA256SUM} | sha256sum --check && \
# tar -zx --strip-components=1 -f ${LIBASS_VERSION}.tar.gz && \
# ./autogen.sh && \
# ./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
# make && \
# make install
## rm -rf ${DIR}
####OffLine
DIR=libass && \
rm -rf ./${DIR}-0.13.7
tar -xvf ./${DIR}_0.13.7.tar.gz && \
cd ./${DIR}-0.13.7 && \
./autogen.sh && \
./configure --prefix="${PREFIX}" --disable-static --enable-shared && \
make && \
make install && \
cd ..
### ffmpeg https://ffmpeg.org/
#####OffLine
DIR=ffmpeg341 && \
mkdir -p ${DIR} && cd ${DIR} && \
rm -rf ffmpeg-${FFMPEG_VERSION} && \
tar -xvf ffmpeg-${FFMPEG_VERSION}.tar.gz && \
cd ffmpeg-${FFMPEG_VERSION} && \
./configure \
--enable-debug \
--enable-doc \
--disable-ffplay \
--enable-shared \
--enable-avresample \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-gpl \
--enable-libass \
--enable-libfreetype \
--enable-libvidstab \
--enable-libmp3lame \
--enable-libopenjpeg \
--enable-libopus \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx265 \
--enable-libxvid \
--enable-libx264 \
--enable-nonfree \
--enable-openssl \
--enable-libfdk_aac \
--enable-postproc \
--enable-small \
--enable-version3 \
--extra-cflags="-I${PREFIX}/include" \
--extra-ldflags="-L${PREFIX}/lib" \
--extra-libs=-ldl \
--prefix="${PREFIX}" && \
make && \
make install && \
make distclean && \
hash -r && \
cd tools && \
make qt-faststart && \
cp qt-faststart ${PREFIX}/bin
cd ../../I try to run my compiled ffmpeg, it is OK.
#
export LD_LIBRARY_PATH=/opt/ffmpeg/lib/
/opt/ffmpeg/bin/ffmpeg -i "/home/luoy/Videos/芳华.2017.TC720P独家高清中字.mp4" -ss 00:00:00 -t 00:00:01 -f image2 -y "./2_%04d.bmp"
ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.6) 20160609
configuration: --enable-debug --enable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib --extra-libs=-ldl --prefix=/opt/ffmpeg
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/luoy/Videos/芳华.2017.TC720P独家高清中字.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
creation_time : 2017-12-15T16:28:00.000000Z
encoder : Lite MP4 Tool v2.3
Duration: 02:09:09.24, start: 0.000000, bitrate: 1587 kb/s
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p, 1280x720, 1456 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Metadata:
creation_time : 2017-12-15T16:28:00.000000Z
handler_name : Imported with GPAC 0.4.6-DEV (internal rev. 5)
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
creation_time : 2017-12-15T16:28:45.000000Z
handler_name : GPAC ISO Audio Handler
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> bmp (native))
Press [q] to stop, [?] for help
Output #0, image2, to './2_%04d.bmp':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1
encoder : Lavf57.83.100
Stream #0:0(und): Video: bmp, bgr24, 1280x720, q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc (default)
Metadata:
creation_time : 2017-12-15T16:28:00.000000Z
handler_name : Imported with GPAC 0.4.6-DEV (internal rev. 5)
encoder : Lavc57.107.100 bmp
frame= 24 fps=0.0 q=-0.0 Lsize=N/A time=00:00:01.00 bitrate=N/A dup=1 drop=0 speed= 5.6x
video:64801kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown#
Now I write a simple code, save as a 0_hello_world.c file.
#
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include
#include
#include
#include
#include
#include
#include
#include "libavutil/error.h"
int main(int argc, const char *argv[])
{
av_register_all();
int response = 0;
char *pchar;
// pchar = av_err2str(response);
return 0;
}#
Use the follow command for make, it’s OK.
#
gcc -g -Wall -o build/hello_world -lz 0_hello_world.c
-lavformat -lavcodec -lswscale
-I/opt/ffmpeg/include -L/opt/ffmpeg/lib#
But when I use the "av_err2str" function(uncomment this line) :
’pchar = av_err2str(response) ;’
compile show the following error :#
gcc -g -Wall -o build/hello_world -lz 0_hello_world.c
-lavformat -lavcodec -lswscale
-I/opt/ffmpeg/include -L/opt/ffmpeg/lib
0_hello_world.c: In function ‘main’:
0_hello_world.c:16:9: warning: variable ‘pchar’ set but not used [-Wunused-but-set-variable]
char *pchar;
^
/usr/bin/ld: /tmp/ccgJJ9CV.o: undefined reference to symbol 'av_strerror@@LIBAVUTIL_55'
/opt/ffmpeg/lib/libavutil.so.55: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:10: recipe for target 'hello_world' failed
make: *** [hello_world] Error 1#
As I know "av_register_all" use the "libavformat/avformat.h" header ; "av_err2str" use the "libavutil/error.h" header.
Both the two headers I have included, why "av_err2str" is not OK ?
I guess this is my environment not OK. How can I find the error ?
I have checked my LD_LIBRARY_PATH, it is OK.#
$ echo $LD_LIBRARY_PATH
/opt/ffmpeg/lib: