
Recherche avancée
Autres articles (82)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
Personnaliser les catégories
21 juin 2013, parFormulaire de création d’une catégorie
Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
On peut modifier ce formulaire dans la partie :
Administration > Configuration des masques de formulaire.
Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...) -
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.
Sur d’autres sites (10147)
-
Save video using opencv with H264 codec
31 octobre 2023, par ldiaz997This is beyond me and I don't know what I'm doing wrong. I have read that in order to have my video in h265 codec, I need to build opencv from source. Well, I did that, and I also did it for ffmpeg Docker ffmpeg Compiler. But I'm trying to run my application using docker, and I still can't get over the error :


[ERROR:0@93.327] global cap_ffmpeg_impl.hpp:3018 open Could not find encoder for codec_id=27, error: Encoder not found
[ERROR:0@93.327] global cap_ffmpeg_impl.hpp:3093 open VIDEOIO/FFMPEG: Failed to initialize VideoWriter



Dockerfile :


FROM python:3.10.12-slim-buster

RUN apt-get update

# Set the working directory in the container
WORKDIR /app

# Copy the application code into the container
COPY . .

# Set ffmpeg and ffprobe binary files
RUN mv ffmpeg /usr/local/bin
RUN mv ffprobe /usr/local/bin

# Build opencv from source, to be able to use h264 codec.
RUN apt-get install -y cmake \
 gcc \
 g++ \
 python3-numpy \
 libavcodec-dev \
 libavformat-dev \
 libswscale-dev \
 libgstreamer-plugins-base1.0-dev \
 libgstreamer1.0-dev \
 libpng-dev \
 libjpeg-dev \
 libopenexr-dev \
 libtiff-dev \
 libwebp-dev \
 git

RUN git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv.git && \
 git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv_contrib.git && \
 cd opencv && \
 mkdir build && \
 cd build && \
 cmake -D OPENCV_EXTRA_MODULES_PATH=/app/opencv_contrib/modules ../ && \
 make -j"$(nproc)" && \
 make install

# Remove opencv github project
RUN rm -r opencv

# Remove opencv_contrib github project
RUN rm -r opencv_contrib

# Prevents Python from writing pyc files to disc
ENV PYTHONDONTWRITEBYTECODE 1

# Prevents Python from buffering stdout and stderr
ENV PYTHONUNBUFFERED 1

# Install python dependencies
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

# Install netcat to know when rabbitmq is running
RUN apt-get install -y netcat

# Set execute permissions
RUN chmod +x entrypoint.sh
RUN chmod +x web_start.sh

ENTRYPOINT ["./entrypoint.sh"]



I ran the command
./ffmpeg -i 57b3e3a7-ad22-469d-a7ff-cf76ba780664 -vcodec libx264 -acodec aac output.mp4
to test ffmpeg and this was the result.

ffmpeg version N-112515-gba6a5e7a3d Copyright (c) 2000-2023 the FFmpeg developers
 built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
 configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-libs=-static --extra-cflags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/root/bin --enable-gpl --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
 libavutil 58. 27.100 / 58. 27.100
 libavcodec 60. 30.102 / 60. 30.102
 libavformat 60. 15.101 / 60. 15.101
 libavdevice 60. 2.101 / 60. 2.101
 libavfilter 9. 11.100 / 9. 11.100
 libswscale 7. 4.100 / 7. 4.100
 libswresample 4. 11.100 / 4. 11.100
 libpostproc 57. 2.100 / 57. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '57b3e3a7-ad22-469d-a7ff-cf76ba780664':
 Metadata:
 major_brand : qt 
 minor_version : 0
 compatible_brands: qt 
 creation_time : 2023-10-30T15:34:32.000000Z
 com.apple.quicktime.make: Apple
 com.apple.quicktime.model: iPhone 13 Pro Max
 com.apple.quicktime.software: 16.6
 com.apple.quicktime.creationdate: 2023-10-30T11:34:32-0400
 Duration: 00:00:03.60, start: 0.000000, bitrate: 16264 kb/s
 Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 16120 kb/s, 29.99 fps, 29.97 tbr, 600 tbn (default)
 Metadata:
 creation_time : 2023-10-30T15:34:32.000000Z
 handler_name : Core Media Video
 vendor_id : [0][0][0][0]
 encoder : H.264
 Side data:
 displaymatrix: rotation of -90.00 degrees
 Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 89 kb/s (default)
 Metadata:
 creation_time : 2023-10-30T15:34:32.000000Z
 handler_name : Core Media Audio
 vendor_id : [0][0][0][0]
 Stream #0:2[0x3](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
 Metadata:
 creation_time : 2023-10-30T15:34:32.000000Z
 handler_name : Core Media Metadata
 Stream #0:3[0x4](und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
 Metadata:
 creation_time : 2023-10-30T15:34:32.000000Z
 handler_name : Core Media Metadata
 Stream #0:4[0x5](und): Data: none (mebx / 0x7862656D), 34 kb/s (default)
 Metadata:
 creation_time : 2023-10-30T15:34:32.000000Z
 handler_name : Core Media Metadata
Stream mapping:
 Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
 Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x5ae4c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x5ae4c00] profile High, level 4.0
[libx264 @ 0x5ae4c00] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=30 lookahead_threads=5 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
 Metadata:
 major_brand : qt 
 minor_version : 0
 compatible_brands: qt 
 com.apple.quicktime.creationdate: 2023-10-30T11:34:32-0400
 com.apple.quicktime.make: Apple
 com.apple.quicktime.model: iPhone 13 Pro Max
 com.apple.quicktime.software: 16.6
 encoder : Lavf60.15.101
 Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1080x1920, q=2-31, 29.97 fps, 30k tbn (default)
 Metadata:
 creation_time : 2023-10-30T15:34:32.000000Z
 handler_name : Core Media Video
 vendor_id : [0][0][0][0]
 encoder : Lavc60.30.102 libx264
 Side data:
 cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
 displaymatrix: rotation of -0.00 degrees
 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)
 Metadata:
 creation_time : 2023-10-30T15:34:32.000000Z
 handler_name : Core Media Audio
 vendor_id : [0][0][0][0]
 encoder : Lavc60.30.102 aac
[out#0/mp4 @ 0x5ae3440] video:2773kB audio:31kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.157082%
frame= 108 fps= 74 q=-1.0 Lsize= 2809kB time=00:00:03.59 bitrate=6393.3kbits/s speed=2.47x 
[libx264 @ 0x5ae4c00] frame I:4 Avg QP:22.27 size: 48408
[libx264 @ 0x5ae4c00] frame P:104 Avg QP:24.58 size: 25440
[libx264 @ 0x5ae4c00] mb I I16..4: 10.3% 82.9% 6.8%
[libx264 @ 0x5ae4c00] mb P I16..4: 4.6% 18.1% 0.8% P16..4: 40.3% 6.9% 4.1% 0.0% 0.0% skip:25.3%
[libx264 @ 0x5ae4c00] 8x8 transform intra:78.0% inter:85.0%
[libx264 @ 0x5ae4c00] coded y,uvDC,uvAC intra: 44.9% 29.1% 0.1% inter: 22.5% 23.3% 0.0%
[libx264 @ 0x5ae4c00] i16 v,h,dc,p: 17% 49% 14% 19%
[libx264 @ 0x5ae4c00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 25% 37% 3% 3% 5% 3% 2% 4%
[libx264 @ 0x5ae4c00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 30% 17% 3% 4% 8% 3% 2% 3%
[libx264 @ 0x5ae4c00] i8c dc,h,v,p: 67% 20% 12% 0%
[libx264 @ 0x5ae4c00] Weighted P-Frames: Y:1.9% UV:0.0%
[libx264 @ 0x5ae4c00] ref P L0: 61.8% 10.4% 18.3% 9.4% 0.2%
[libx264 @ 0x5ae4c00] kb/s:6303.40
[aac @ 0x68c9880] Qavg: 119.986



The resulting video had an h264 codec. In my opinion, the problem is in opencv. Basically this is what I do in my python code :


cap = cv2.VideoCapture(video)
shoot_frames = []
while True:
 ret, img = cap.read()
 if not ret:
 break
 if some_condition:
 shoot_frames.append(img)
 if len(shoot_frames) > 41:
 out1 = cv2.VideoWriter(upload_path(name , dir), cv2.VideoWriter_fourcc(*'avc1'), int(fps), (int(width), int(height)), True)
 for shoot_frame in shoot_frames:
 out1.write(shoot_frame)
 out1.release()
 shoot_frames = []



Output from
print(cv2.getBuildInformation())
:

General configuration for OpenCV 4.8.1 =====================================
 Version control: 4.8.1-dirty

 Platform:
 Timestamp: 2023-09-27T14:20:56Z
 Host: Linux 5.15.0-1046-azure x86_64
 CMake: 3.27.5
 CMake generator: Unix Makefiles
 CMake build tool: /bin/gmake
 Configuration: Release

 CPU/HW features:
 Baseline: SSE SSE2 SSE3
 requested: SSE3
 Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
 requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
 SSE4_1 (16 files): + SSSE3 SSE4_1
 SSE4_2 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2
 FP16 (0 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
 AVX (7 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
 AVX2 (35 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
 AVX512_SKX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX

 C/C++:
 Built as dynamic libs?: NO
 C++ standard: 11
 C++ Compiler: /opt/rh/devtoolset-10/root/usr/bin/c++ (ver 10.2.1)
 C++ flags (Release): -Wl,-strip-all -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG
 C++ flags (Debug): -Wl,-strip-all -fsigned-char -W -Wall -Wreturn-type -Wnon-virtual-dtor -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG
 C Compiler: /opt/rh/devtoolset-10/root/usr/bin/cc
 C flags (Release): -Wl,-strip-all -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG
 C flags (Debug): -Wl,-strip-all -fsigned-char -W -Wall -Wreturn-type -Waddress -Wsequence-point -Wformat -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG
 Linker flags (Release): -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -L/ffmpeg_build/lib -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined 
 Linker flags (Debug): -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -L/ffmpeg_build/lib -Wl,--gc-sections -Wl,--as-needed -Wl,--no-undefined 
 ccache: YES
 Precompiled headers: NO
 Extra dependencies: /lib64/libopenblas.so Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Test Qt5::Concurrent /usr/local/lib/libpng.so /lib64/libz.so dl m pthread rt
 3rdparty dependencies: libprotobuf ade ittnotify libjpeg-turbo libwebp libtiff libopenjp2 IlmImf quirc ippiw ippicv

 OpenCV modules:
 To be built: calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python3 stitching video videoio
 Disabled: world
 Disabled by dependency: -
 Unavailable: java python2 ts
 Applications: -
 Documentation: NO
 Non-free algorithms: NO

 GUI: QT5
 QT: YES (ver 5.15.0 )
 QT OpenGL support: NO
 GTK+: NO
 VTK support: NO

 Media I/O: 
 ZLib: /lib64/libz.so (ver 1.2.7)
 JPEG: libjpeg-turbo (ver 2.1.3-62)
 WEBP: build (ver encoder: 0x020f)
 PNG: /usr/local/lib/libpng.so (ver 1.6.40)
 TIFF: build (ver 42 - 4.2.0)
 JPEG 2000: build (ver 2.5.0)
 OpenEXR: build (ver 2.3.0)
 HDR: YES
 SUNRASTER: YES
 PXM: YES
 PFM: YES

 Video I/O:
 DC1394: NO
 FFMPEG: YES
 avcodec: YES (59.37.100)
 avformat: YES (59.27.100)
 avutil: YES (57.28.100)
 swscale: YES (6.7.100)
 avresample: NO
 GStreamer: NO
 v4l/v4l2: YES (linux/videodev2.h)

 Parallel framework: pthreads

 Trace: YES (with Intel ITT)

 Other third-party libraries:
 Intel IPP: 2021.8 [2021.8.0]
 at: /io/_skbuild/linux-x86_64-3.7/cmake-build/3rdparty/ippicv/ippicv_lnx/icv
 Intel IPP IW: sources (2021.8.0)
 at: /io/_skbuild/linux-x86_64-3.7/cmake-build/3rdparty/ippicv/ippicv_lnx/iw
 VA: NO
 Lapack: YES (/lib64/libopenblas.so)
 Eigen: NO
 Custom HAL: NO
 Protobuf: build (3.19.1)
 Flatbuffers: builtin/3rdparty (23.5.9)

 OpenCL: YES (no extra features)
 Include path: /io/opencv/3rdparty/include/opencl/1.2
 Link libraries: Dynamic load

 Python 3:
 Interpreter: /opt/python/cp37-cp37m/bin/python3.7 (ver 3.7.17)
 Libraries: libpython3.7m.a (ver 3.7.17)
 numpy: /home/ci/.local/lib/python3.7/site-packages/numpy/core/include (ver 1.17.0)
 install path: python/cv2/python-3

 Python (for build): /opt/python/cp37-cp37m/bin/python3.7

 Java: 
 ant: NO
 Java: NO
 JNI: NO
 Java wrappers: NO
 Java tests: NO

 Install to: /io/_skbuild/linux-x86_64-3.7/cmake-install
-----------------------------------------------------------------





Update


I made my docker image more simpler, and therefore my question. Install ffmpeg from the repository :


FROM python:3.10.12-slim-buster

RUN apt-get update

# Set the working directory in the container
WORKDIR /app

# Install ffmpeg for opencv
RUN apt-get install -y ffmpeg

# Copy the application code into the container
COPY . .

# Build opencv from source, to be able to use h264 codec.
RUN apt-get install -y cmake \
 gcc \
 g++ \
 python3-numpy \
 libavcodec-dev \
 libavformat-dev \
 libswscale-dev \
 libgstreamer-plugins-base1.0-dev \
 libgstreamer1.0-dev \
 libpng-dev \
 libjpeg-dev \
 libopenexr-dev \
 libtiff-dev \
 libwebp-dev \
 git

RUN git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv.git && \
 git clone --depth 1 --branch 4.8.0 https://github.com/opencv/opencv_contrib.git && \
 cd opencv && \
 mkdir build && \
 cd build && \
 cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=/app/opencv_contrib/modules -D OPENCV_ENABLE_NONFREE=ON ../ && \
 make -j"$(nproc)" && \
 make install

# Remove opencv github project
RUN rm -r opencv

# Remove opencv_contrib github project
RUN rm -r opencv_contrib

# Prevents Python from writing pyc files to disc
ENV PYTHONDONTWRITEBYTECODE 1

# Prevents Python from buffering stdout and stderr
ENV PYTHONUNBUFFERED 1

# Install python dependencies
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt

# Install netcat to know when rabbitmq is running
RUN apt-get install -y netcat

# Set execute permissions
RUN chmod +x entrypoint.sh
RUN chmod +x web_start.sh

ENTRYPOINT ["./entrypoint.sh"]



Run the following commands inside the docker container :


$ ffmpeg -version

ffmpeg version 4.1.11-0+deb10u1 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --prefix=/usr --extra-version=0+deb10u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100



$ ffmpeg -i cf91f302-c357-49ba-b59c-bcfb8b7f4866 -vcodec libx264 -f mp4 output.mp4

ffmpeg version 4.1.11-0+deb10u1 Copyright (c) 2000-2023 the FFmpeg developers
 built with gcc 8 (Debian 8.3.0-6)
 configuration: --prefix=/usr --extra-version=0+deb10u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
 libavutil 56. 22.100 / 56. 22.100
 libavcodec 58. 35.100 / 58. 35.100
 libavformat 58. 20.100 / 58. 20.100
 libavdevice 58. 5.100 / 58. 5.100
 libavfilter 7. 40.101 / 7. 40.101
 libavresample 4. 0. 0 / 4. 0. 0
 libswscale 5. 3.100 / 5. 3.100
 libswresample 3. 3.100 / 3. 3.100
 libpostproc 55. 3.100 / 55. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'cf91f302-c357-49ba-b59c-bcfb8b7f4866':
 Metadata:
 major_brand : qt 
 minor_version : 0
 compatible_brands: qt 
 creation_time : 2023-10-31T10:38:42.000000Z
 com.apple.quicktime.make: Apple
 com.apple.quicktime.model: iPhone 13 Pro Max
 com.apple.quicktime.software: 16.6
 com.apple.quicktime.creationdate: 2023-10-31T06:38:42-0400
 Duration: 00:00:04.23, start: 0.000000, bitrate: 15915 kb/s
 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080, 15767 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default)
 Metadata:
 rotate : 90
 creation_time : 2023-10-31T10:38:42.000000Z
 handler_name : Core Media Video
 encoder : H.264
 Side data:
 displaymatrix: rotation of -90.00 degrees
 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 89 kb/s (default)
 Metadata:
 creation_time : 2023-10-31T10:38:42.000000Z
 handler_name : Core Media Audio
 Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
 Metadata:
 creation_time : 2023-10-31T10:38:42.000000Z
 handler_name : Core Media Metadata
 Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
 Metadata:
 creation_time : 2023-10-31T10:38:42.000000Z
 handler_name : Core Media Metadata
 Stream #0:4(und): Data: none (mebx / 0x7862656D), 34 kb/s (default)
 Metadata:
 creation_time : 2023-10-31T10:38:42.000000Z
 handler_name : Core Media Metadata
Stream mapping:
 Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
 Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x55db965ee980] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x55db965ee980] profile High, level 4.0
[libx264 @ 0x55db965ee980] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
 Metadata:
 major_brand : qt 
 minor_version : 0
 compatible_brands: qt 
 com.apple.quicktime.creationdate: 2023-10-31T06:38:42-0400
 com.apple.quicktime.make: Apple
 com.apple.quicktime.model: iPhone 13 Pro Max
 com.apple.quicktime.software: 16.6
 encoder : Lavf58.20.100
 Stream #0:0(und): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 1080x1920, q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
 Metadata:
 encoder : Lavc58.35.100 libx264
 creation_time : 2023-10-31T10:38:42.000000Z
 handler_name : Core Media Video
 Side data:
 cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
 displaymatrix: rotation of -0.00 degrees
 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 69 kb/s (default)
 Metadata:
 creation_time : 2023-10-31T10:38:42.000000Z
 handler_name : Core Media Audio
 encoder : Lavc58.35.100 aac
frame= 127 fps= 27 q=-1.0 Lsize= 2005kB time=00:00:04.24 bitrate=3866.2kbits/s speed=0.909x 
video:1964kB audio:36kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.282549%
[libx264 @ 0x55db965ee980] frame I:1 Avg QP:21.43 size: 36791
[libx264 @ 0x55db965ee980] frame P:59 Avg QP:23.61 size: 22380
[libx264 @ 0x55db965ee980] frame B:67 Avg QP:24.20 size: 9743
[libx264 @ 0x55db965ee980] consecutive B-frames: 20.5% 22.0% 16.5% 40.9%
[libx264 @ 0x55db965ee980] mb I I16..4: 29.4% 58.6% 11.9%
[libx264 @ 0x55db965ee980] mb P I16..4: 15.0% 21.8% 1.3% P16..4: 26.1% 7.5% 3.1% 0.0% 0.0% skip:25.2%
[libx264 @ 0x55db965ee980] mb B I16..4: 1.9% 1.7% 0.1% B16..8: 36.3% 3.6% 0.5% direct: 3.9% skip:52.1% L0:42.9% L1:52.1% BI: 5.0%
[libx264 @ 0x55db965ee980] 8x8 transform intra:56.2% inter:86.6%
[libx264 @ 0x55db965ee980] coded y,uvDC,uvAC intra: 19.5% 27.3% 2.1% inter: 11.7% 18.9% 0.1%
[libx264 @ 0x55db965ee980] i16 v,h,dc,p: 25% 54% 8% 12%
[libx264 @ 0x55db965ee980] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 25% 44% 1% 2% 2% 2% 1% 1%
[libx264 @ 0x55db965ee980] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 45% 13% 2% 7% 6% 6% 3% 3%
[libx264 @ 0x55db965ee980] i8c dc,h,v,p: 62% 27% 10% 1%
[libx264 @ 0x55db965ee980] Weighted P-Frames: Y:3.4% UV:0.0%
[libx264 @ 0x55db965ee980] ref P L0: 65.2% 18.0% 12.2% 4.6% 0.1%
[libx264 @ 0x55db965ee980] ref B L0: 89.1% 9.3% 1.6%
[libx264 @ 0x55db965ee980] ref B L1: 97.2% 2.8%
[libx264 @ 0x55db965ee980] kb/s:3798.37
[aac @ 0x55db965edf00] Qavg: 125.454



The errors persist.


>>> import cv2
>>> out = cv2.VideoWriter("./out.mp4", cv2.VideoWriter_fourcc(*'avc1'), 30, (800, 600), True)
[ERROR:0@91.872] global cap_ffmpeg_impl.hpp:3018 open Could not find encoder for codec_id=27, error: Encoder not found
[ERROR:0@91.872] global cap_ffmpeg_impl.hpp:3093 open VIDEOIO/FFMPEG: Failed to initialize VideoWriter



Could someone please tell me what I'm doing wrong ?


-
doc/community : update the rules according to voting results
6 novembre 2023, par Anton Khirnovdoc/community : update the rules according to voting results
Cf. :
* http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-October/316054.html
* http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316618.html -
Discord FFMPEG audio wont play from yt-dlp
19 mars 2023, par user21236822My question is this : Why isn't my bot playing audio ?


I want the bot to join, play audio from queue, then disconnect without downloading an mp3 file.


I tried using youtube-dl, but I switched to the yt-dlp library after getting errors I couldn't fix.
I am running on Windows 10 locally. All my libraries are up to date.


Here are my ydl_opts and FFMPEG_OPTS :


ydl_opts = {
 'format': 'bestaudio/best',
 'postprocessors': [{
 'key': 'FFmpegExtractAudio',
 'preferredcodec': 'mp3',
 'preferredquality': '192',
 }],
}

FFMPEG_OPTIONS = {
 'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5',
 'options': '-vn'
} 



Here is where I believe the problem is.


async def play():
 print("Play Called")
 musicPlay()
 # Get message object from initial request
 message = ytLinkQue.get()
 print(f"Message object recieved: {message}")
 voiceChannel = message.author.voice.channel
 vc = await voiceChannel.connect()
 songsPlayed = 0
 
 while not ytLinkQue.empty():
 # Get current song
 currentSong = ytLinkQue.get()[0]
 print(f"Current song: {currentSong}")

 # Get song from Youtube
 with yt_dlp.YoutubeDL(ydl_opts) as ydl:
 # song = ydl.download(currentSong)
 info = ydl.extract_info(currentSong, download=False)
 song = info['formats'][0]['url']

 # Play Song
 vc.play(discord.FFmpegPCMAudio(song, **FFMPEG_OPTIONS), after=lambda e: print('Song done'))

 # Wait until the song has finished playing
 while vc.is_playing():
 print("playing rn")
 await asyncio.sleep(1)
 
 await vc.disconnect()
 musicStop()



When play() is called, here is the output in terminal with my annotations as **** text **** :


>python main.py
2023-02-17 15:21:09 INFO discord.client logging in using static token
2023-02-17 15:21:10 INFO discord.gateway Shard ID None has connected to Gateway (Session ID: 60b9fce14faa5daa4aed9eb6db01a74d).
Max que: 50
Text Channel: 828698708123451434
Testing Bot#4591 is ready.
Passing message object
**** play() funciton is called ****
Play Called
Message object recieved: <message channel="<TextChannel" position="7" nsfw="False" news="False"> type= author=<member discriminator="'0199'" bot="False" nick="'Fragnk7?'" guild="<Guild" chunked="True">> flags=<messageflags value="0">>
2023-02-17 15:21:16 INFO discord.voice_client Connecting to voice...
2023-02-17 15:21:16 INFO discord.voice_client Starting voice handshake... (connection attempt 1)
2023-02-17 15:21:17 INFO discord.voice_client Voice handshake complete. Endpoint found seattle2004.discord.media
Current song: https://www.youtube.com/watch?v=vcAp4nmTZCA
[youtube] Extracting URL: https://www.youtube.com/watch?v=vcAp4nmTZCA 
[youtube] vcAp4nmTZCA: Downloading webpage 
[youtube] vcAp4nmTZCA: Downloading android player API JSON 
**** Does not play any audio ****
Playing rn
Song done
2023-02-17 15:21:18 INFO discord.player ffmpeg process 20700 successfully terminated with return code of 1.
2023-02-17 15:21:19 INFO discord.voice_client The voice handshake is being terminated for Channel ID 400178308467392513 (Guild ID 261601676941721602)
2023-02-17 15:21:19 INFO discord.voice_client Disconnecting from voice normally, close code 1000.
</messageflags></member></message>


On Discord's end, the bot successfully connects then disconnects after 2 second.


Note : I've only included code I think is relevant. Please let me know if I should add anything else to the post, otherwise, here is the github for the project. Code is in main.py.
https://github.com/LukeLeimbach/wallMomentMusic


Thank you in advance !


I've applied the advice from these posts but it still will not play audio :


-
https://stackoverflow.com/questions/45770016/how-do-i-make-my-discord-bot-play-audio-from-youtube


-
https://stackoverflow.com/questions/66070749/how-to-fix-discord-music-bot-that-stops-playing-before-the-song-is-actually-over?newreg=c70dd786cf5844e490045494223c0381


-
https://stackoverflow.com/questions/57688808/playing-music-with-a-bot-from-youtube-without-downloading-the-file