
Recherche avancée
Médias (91)
-
Collections - Formulaire de création rapide
19 février 2013, par
Mis à jour : Février 2013
Langue : français
Type : Image
-
Les Miserables
4 juin 2012, par
Mis à jour : Février 2013
Langue : English
Type : Texte
-
Ne pas afficher certaines informations : page d’accueil
23 novembre 2011, par
Mis à jour : Novembre 2011
Langue : français
Type : Image
-
The Great Big Beautiful Tomorrow
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
-
Richard Stallman et la révolution du logiciel libre - Une biographie autorisée (version epub)
28 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Texte
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (49)
-
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...) -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (10625)
-
10 Matomo Features You Possibly Didn’t Know About
28 octobre 2022, par Erin -
Stream is not appearing on youtube
1er novembre 2022, par AMRITESH GUPTAI am trying to stream a captured stream to youtube live through FFmpeg, but the stream is not appearing on youtube. I tried giving input from an mp4 file, and it worked perfectly but providing input as a buffer through stdin gives nothing.


FFmpeg command


ffmpeg -rtbufsize 100M -report -i - -v error -c:v libx264 -preset veryfast -tune zerolatency -g:v 60 -c:a aac -strict -2 -ar 44100 -b:a 64k -y -use_wallclock_as_timestamps 1 -async 1 -f flv ${youtubeURL}


I used
-report
for generating a log report, and I couldn't find anything wrong with it.

Here is snippet of log file


ffmpeg started on 2022-11-01 at 09:42:32
Report written to "ffmpeg-20221101-094232.log"
Log level: 48
Command line:
ffmpeg -rtbufsize 100M -report -i - -v error -c:v libx264 -preset veryfast -tune zerolatency -g:v 60 -c:a aac -strict -2 -ar 44100 -b:a 64k -y -use_wallclock_as_timestamps 1 -async 1 -f flv rtmp://a.rtmp.youtube.com/live2/pxjt-j9g5-ygv8-0000-6w8h
ffmpeg version 2022-10-27-git-00b03331a0-full_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
 built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
 configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --ena libavutil 57. 39.101 / 57. 39.101
 libavcodec 59. 51.100 / 59. 51.100
 libavformat 59. 34.101 / 59. 34.101
 libavdevice 59. 8.101 / 59. 8.101
 libavfilter 8. 49.101 / 8. 49.101
 libswscale 6. 8.112 / 6. 8.112
 libswresample 4. 9.100 / 4. 9.100
 libpostproc 56. 7.100 / 56. 7.100
Splitting the commandline.
Reading option '-rtbufsize' ... matched as AVOption 'rtbufsize' with argument '100M'.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-i' ... matched as input url with argument '-'.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'error'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument 'libx264'.
Reading option '-preset' ... matched as AVOption 'preset' with argument 'veryfast'.
Reading option '-tune' ... matched as AVOption 'tune' with argument 'zerolatency'.
Reading option '-g:v' ... matched as AVOption 'g:v' with argument '60'.
Reading option '-c:a' ... matched as option 'c' (codec name) with argument 'aac'.
Reading option '-strict' ...Routing option strict to both codec and muxer layer
 matched as AVOption 'strict' with argument '-2'.
Reading option '-ar' ... matched as option 'ar' (set audio sampling rate (in Hz)) with argument '44100'.
Reading option '-b:a' ... matched as option 'b' (video bitrate (please use -b:v)) with argument '64k'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Reading option '-use_wallclock_as_timestamps' ... matched as AVOption 'use_wallclock_as_timestamps' with argument '1'.
Reading option '-async' ... matched as AVOption 'async' with argument '1'.
Reading option '-f' ... matched as option 'f' (force format) with argument 'flv'.
Reading option 'rtmp://a.rtmp.youtube.com/live2/pxjt-j9g5-ygv8-0000-6w8h' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option report (generate a report) with argument 1.
Applying option v (set logging level) with argument error.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url -.
Successfully parsed a group of options.
Opening an input file: -.
[NULL @ 0000025c01844940] Opening 'pipe:' for reading
[pipe @ 0000025c01844e00] Setting default whitelist 'crypto,data'
[matroska,webm @ 0000025c01844940] Format matroska,webm probed with size=2048 and score=100
st:0 removing common factor 1000000 from timebase
[matroska,webm @ 0000025c01844940] Before avformat_find_stream_info() pos: 136 bytes read:32271 seeks:0 nb_streams:1
[extract_extradata @ 0000025c01817d40] nal_unit_type: 7(SPS), nal_ref_idc: 3
[extract_extradata @ 0000025c01817d40] nal_unit_type: 8(PPS), nal_ref_idc: 3
[extract_extradata @ 0000025c01817d40] nal_unit_type: 5(IDR), nal_ref_idc: 3
[extract_extradata @ 0000025c01817d40] nal_unit_type: 5(IDR), nal_ref_idc: 3
[extract_extradata @ 0000025c01817d40] nal_unit_type: 5(IDR), nal_ref_idc: 3
[extract_extradata @ 0000025c01817d40] nal_unit_type: 5(IDR), nal_ref_idc: 3
[extract_extradata @ 0000025c01817d40] nal_unit_type: 5(IDR), nal_ref_idc: 3
[extract_extradata @ 0000025c01817d40] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 7(SPS), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 8(PPS), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] Format yuv420p chosen by get_format().
[h264 @ 0000025c0186aac0] Reinit context to 1280x384, pix_fmt: yuv420p
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[h264 @ 0000025c0186aac0] nal_unit_type: 1(Coded slice of a non-IDR picture), nal_ref_idc: 3
[matroska,webm @ 0000025c01844940] max_analyze_duration 5000000 reached at 22181000 microseconds st:0
[matroska,webm @ 0000025c01844940] rfps: 1.000000 0.006758
[matroska,webm @ 0000025c01844940] rfps: 2.000000 0.019257
[matroska,webm @ 0000025c01844940] rfps: 7.916667 0.017773
[matroska,webm @ 0000025c01844940] rfps: 9.916667 0.012828
[matroska,webm @ 0000025c01844940] rfps: 10.916667 0.019976
[matroska,webm @ 0000025c01844940] rfps: 16.833333 0.010482
[matroska,webm @ 0000025c01844940] rfps: 17.833333 0.007736
[matroska,webm @ 0000025c01844940] rfps: 17.833333 0.007736
[matroska,webm @ 0000025c01844940] rfps: 18.833333 0.018506
[matroska,webm @ 0000025c01844940] After avformat_find_stream_info() pos: 88442 bytes read:88443 seeks:0 frames:31
Input #0, matroska,webm, from 'pipe:':
 Metadata:
 encoder : Chrome
 Duration: N/A, start: 0.000000, bitrate: N/A
 Stream #0:0(eng), 31, 1/1000: Video: h264 (Constrained Baseline), yuv420p(progressive), 1280x382, SAR 1:1 DAR 640:191, 1 tbr, 1k tbn (default)
Successfully opened the file.
Parsing a group of options: output url rtmp://a.rtmp.youtube.com/live2/pxjt-j9g5-ygv8-0000-6w8h.
Applying option c:v (codec name) with argument libx264.
Applying option c:a (codec name) with argument aac.
Applying option ar (set audio sampling rate (in Hz)) with argument 44100.
Applying option b:a (video bitrate (please use -b:v)) with argument 64k.
Applying option f (force format) with argument flv.
Successfully parsed a group of options.
Opening an output file: rtmp://a.rtmp.youtube.com/live2/pxjt-j9g5-ygv8-0000-6w8h.
Codec AVOption b (set bitrate (in bits/s)) specified for output file #0 (rtmp://a.rtmp.youtube.com/live2/pxjt-j9g5-ygv8-0000-6w8h) 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 stream.
[rtmp @ 0000025c01d1bd00] No default whitelist set
[tcp @ 0000025c01844f40] No default whitelist set
[tcp @ 0000025c01844f40] Original list of addresses:
[tcp @ 0000025c01844f40] Address 142.250.193.204 port 1935
[tcp @ 0000025c01844f40] Address 142.250.193.236 port 1935
[tcp @ 0000025c01844f40] Address 142.250.206.108 port 1935
[tcp @ 0000025c01844f40] Address 142.250.206.140 port 1935
[tcp @ 0000025c01844f40] Address 142.250.206.172 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.12 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.44 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.76 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.108 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.140 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.172 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.204 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.236 port 1935
[tcp @ 0000025c01844f40] Address 142.250.195.12 port 1935
[tcp @ 0000025c01844f40] Address 142.250.207.204 port 1935
[tcp @ 0000025c01844f40] Address 142.250.207.236 port 1935
[tcp @ 0000025c01844f40] Interleaved list of addresses:
[tcp @ 0000025c01844f40] Address 142.250.193.204 port 1935
[tcp @ 0000025c01844f40] Address 142.250.193.236 port 1935
[tcp @ 0000025c01844f40] Address 142.250.206.108 port 1935
[tcp @ 0000025c01844f40] Address 142.250.206.140 port 1935
[tcp @ 0000025c01844f40] Address 142.250.206.172 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.12 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.44 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.76 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.108 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.140 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.172 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.204 port 1935
[tcp @ 0000025c01844f40] Address 142.250.194.236 port 1935
[tcp @ 0000025c01844f40] Address 142.250.195.12 port 1935
[tcp @ 0000025c01844f40] Address 142.250.207.204 port 1935
[tcp @ 0000025c01844f40] Address 142.250.207.236 port 1935
[tcp @ 0000025c01844f40] Starting connection attempt to 142.250.193.204 port 1935
[tcp @ 0000025c01844f40] Successfully connected to 142.250.193.204 port 1935
[rtmp @ 0000025c01d1bd00] Handshaking...
[rtmp @ 0000025c01d1bd00] Type answer 3
[rtmp @ 0000025c01d1bd00] Server version 4.0.0.1
[rtmp @ 0000025c01d1bd00] Proto = rtmp, path = /live2/pxjt-j9g5-ygv8-0000-6w8h, app = live2, fname = pxjt-j9g5-ygv8-0000-6w8h
[rtmp @ 0000025c01d1bd00] Window acknowledgement size = 2500000
[rtmp @ 0000025c01d1bd00] Max sent, unacked = 59768832
[rtmp @ 0000025c01d1bd00] Releasing stream...
[rtmp @ 0000025c01d1bd00] FCPublish stream...
[rtmp @ 0000025c01d1bd00] Creating stream...
[rtmp @ 0000025c01d1bd00] Sending publish command for 'pxjt-j9g5-ygv8-0000-6w8h'
Successfully opened the file.
detected 8 logical cores
[h264 @ 0000025c01882e00] nal_unit_type: 7(SPS), nal_ref_idc: 3
[h264 @ 0000025c01882e00] nal_unit_type: 8(PPS), nal_ref_idc: 3
Stream mapping:
 Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless if it occurs once at the start per stream)
[matroska,webm @ 0000025c01844940] Thread message queue blocking; consider raising the thread_queue_size option (current value: 1)
[h264 @ 0000025c01882e00] nal_unit_type: 7(SPS), nal_ref_idc: 3
[h264 @ 0000025c01882e00] nal_unit_type: 8(PPS), nal_ref_idc: 3
[h264 @ 0000025



-
ffmpeg-python Unable to open .srt, .vtt files. Error initializing filter 'subtitles' with args ... Error initializing complex filters
3 novembre 2022, par Batuhan YılmazI'm trying to build a web app where users can upload a video file and a transcript as .srt or .vtt file to get a video with subtitles. But keep getting an error with the subtitles.

Here's my code :

import streamlit as st
from streamlit_lottie import st_lottie
from utils import write_vtt, write_srt
import ffmpeg
import requests
from typing import Iterator
from io import StringIO
import numpy as np
import pathlib
import os
import components.authenticate as authenticate


st.set_page_config(page_title="Auto Subtitled Video Generator", page_icon=":movie_camera:", layout="wide")

# Define a function that we can use to load lottie files from a link.
@st.cache(allow_output_mutation=True)
def load_lottieurl(url: str):
 r = requests.get(url)
 if r.status_code != 200:
 return None
 return r.json()


APP_DIR = pathlib.Path(__file__).parent.absolute()

LOCAL_DIR = APP_DIR / "local_transcript"
LOCAL_DIR.mkdir(exist_ok=True)
save_dir = LOCAL_DIR / "output"
save_dir.mkdir(exist_ok=True)


col1, col2 = st.columns([1, 3])
with col1:
 lottie = load_lottieurl("https://assets1.lottiefiles.com/packages/lf20_HjK9Ol.json")
 st_lottie(lottie)

with col2:
 st.write("""
 ## Auto Subtitled Video Generator 
 ##### Upload a video file and a transcript as .srt file and get a video with subtitles.""")


def getSubs(segments: Iterator[dict], format: str, maxLineWidth: int) -> str:
 segmentStream = StringIO()

 if format == 'vtt':
 write_vtt(segments, file=segmentStream, maxLineWidth=maxLineWidth)
 elif format == 'srt':
 write_srt(segments, file=segmentStream, maxLineWidth=maxLineWidth)
 else:
 raise Exception("Unknown format " + format)

 segmentStream.seek(0)
 return segmentStream.read()


def generate_subtitled_video(uploaded_file):
 with open(f"{save_dir}/input.mp4", "wb") as f:
 f.write(uploaded_file.read())
 audio = ffmpeg.input(f"{save_dir}/input.mp4")
 audio = ffmpeg.output(audio, f"{save_dir}/output.wav", acodec="pcm_s16le", ac=1, ar="16k")
 ffmpeg.run(audio, overwrite_output=True)


def main():
 video_file = st.file_uploader("File", type=["mp4", "avi", "mov", "mkv"])
 # get the name of the input_file
 if video_file is not None:
 filename = video_file.name[:-4]
 else:
 filename = None
 transcript_file = st.file_uploader("Transcript", type=["srt", "vtt"])
 if transcript_file is not None:
 transcript_name = transcript_file.name
 else:
 transcript_name = None
 if video_file is not None and transcript_file is not None:
 if transcript_name[-3:] == "vtt":
 with open(f"{save_dir}/transcript.vtt", "wb") as f:
 f.writelines(transcript_file)
 f.close()
 with open(os.path.join(os.getcwd(), f"{save_dir}/transcript.vtt"), "rb") as f:
 vtt_file = f.read()
 if st.button("Generate Video with Subtitles"):
 generate_subtitled_video(video_file)
 video_file = ffmpeg.input(f"{save_dir}/input.mp4")
 audio_file = ffmpeg.input(f"{save_dir}/output.wav")
 ffmpeg.concat(video_file.filter("subtitles", vtt_file), audio_file, v=1, a=1).output("final.mp4").global_args('-report').run(quiet=True, overwrite_output=True)
 video_with_subs = open("final.mp4", "rb")
 col3, col4 = st.columns([3, 1])
 with col3:
 st.video(video_with_subs)
 with col4:
 st.download_button(label="Download Video with Subtitles",
 data=video_with_subs,
 file_name=f"{filename}_with_subs.mp4")
 else:
 st.error("Please upload a video file and a transcript file.")
 elif transcript_name[-3:] == "srt":
 with open(f"{save_dir}/transcript.srt", "wb") as f:
 f.writelines(transcript_file)
 f.close()
 with open(os.path.join(os.getcwd(), f"{save_dir}/transcript.srt"), "rb") as f:
 srt_file = f.read()
 f.close()
 if st.button("Generate Video with Subtitles"):
 generate_subtitled_video(video_file)
 video_file = ffmpeg.input(f"{save_dir}/input.mp4")
 audio_file = ffmpeg.input(f"{save_dir}/output.wav")
 ffmpeg.concat(video_file.filter("subtitles", f'{save_dir}/transcript.srt'), audio_file, v=1, a=1).output("final.mp4").global_args('-report').run(quiet=True, overwrite_output=True)
 video_with_subs = open("final.mp4", "rb")

 col3, col4 = st.columns([3, 1])
 with col3:
 st.video(video_with_subs)
 with col4:
 st.download_button(label="Download Video with Subtitles",
 data=video_with_subs,
 file_name=f"{filename}_with_subs.mp4")
 else:
 st.error("Please upload a .srt or .vtt file")
 else:
 st.info("Please upload a video file and a transcript file")


if __name__ == "__main__":
 authenticate.set_st_state_vars()
 if st.session_state["authenticated"]:
 main()
 authenticate.button_logout()
 else:
 st.info("Please log in or sign up to use the app.")
 authenticate.button_login()
 




I couldn't figure out what I'm doing wrong. Please help


And the log file of ffmpeg error :


ffmpeg started on 2022-11-03 at 21:29:27
Report written to "ffmpeg-20221103-212927.log"
Log level: 48
Command line:
ffmpeg -i "C:\\Users\\batuh\\Auto-Subtitled-Video-Generator - Copy2\\pages\\local_transcript\\output/input.mp4" -i "C:\\Users\\batuh\\Auto-Subtitled-Video-Generator - Copy2\\pages\\local_transcript\\output/output.wav" -filter_complex "[0]subtitles=C\\\\\\\\\\\\:\\\\\\\\\\\\\\\\Users\\\\\\\\\\\\\\\\batuh\\\\\\\\\\\\\\\\Auto-Subtitled-Video-Generator - Copy2\\\\\\\\\\\\\\\\pages\\\\\\\\\\\\\\\\local_transcript\\\\\\\\\\\\\\\\output/transcript.srt[s0];[s0][1]concat=a=1:n=1:v=1[s1]" -map "[s1]" final.mp4 -report -y
ffmpeg version 2022-10-24-git-d79c240196-full_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
 built with gcc 12.1.0 (Rev2, Built by MSYS2 project)
 configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --ena libavutil 57. 39.101 / 57. 39.101
 libavcodec 59. 51.100 / 59. 51.100
 libavformat 59. 34.101 / 59. 34.101
 libavdevice 59. 8.101 / 59. 8.101
 libavfilter 8. 49.101 / 8. 49.101
 libswscale 6. 8.112 / 6. 8.112
 libswresample 4. 9.100 / 4. 9.100
 libpostproc 56. 7.100 / 56. 7.100
Splitting the commandline.
Reading option '-i' ... matched as input url with argument 'C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/input.mp4'.
Reading option '-i' ... matched as input url with argument 'C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/output.wav'.
Reading option '-filter_complex' ... matched as option 'filter_complex' (create a complex filtergraph) with argument '[0]subtitles=C\\\\\\:\\\\\\\\Users\\\\\\\\batuh\\\\\\\\Auto-Subtitled-Video-Generator - Copy2\\\\\\\\pages\\\\\\\\local_transcript\\\\\\\\output/transcript.srt[s0];[s0][1]concat=a=1:n=1:v=1[s1]'.
Reading option '-map' ... matched as option 'map' (set input stream mapping) with argument '[s1]'.
Reading option 'final.mp4' ... matched as output url.
Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option filter_complex (create a complex filtergraph) with argument [0]subtitles=C\\\\\\:\\\\\\\\Users\\\\\\\\batuh\\\\\\\\Auto-Subtitled-Video-Generator - Copy2\\\\\\\\pages\\\\\\\\local_transcript\\\\\\\\output/transcript.srt[s0];[s0][1]concat=a=1:n=1:v=1[s1].
Applying option report (generate a report) with argument 1.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/input.mp4.
Successfully parsed a group of options.
Opening an input file: C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/input.mp4.
[NULL @ 000001baaeb55300] Opening 'C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/input.mp4' for reading
[file @ 000001baaeb55800] Setting default whitelist 'file,crypto,data'
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] ISO: File Type Major Brand: mp42
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] Unknown dref type 0x206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] Processing st: 0, edit list 0 - media time: 3003, duration: 8201160
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] Offset DTS by 3003 to make first pts zero.
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] Setting codecpar->delay to 1 for stream st: 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] Unknown dref type 0x206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] Before avformat_find_stream_info() pos: 34044 bytes read:65536 seeks:0 nb_streams:2
[h264 @ 000001baaeb68bc0] nal_unit_type: 7(SPS), nal_ref_idc: 3
[h264 @ 000001baaeb68bc0] nal_unit_type: 8(PPS), nal_ref_idc: 3
[h264 @ 000001baaeb68bc0] nal_unit_type: 7(SPS), nal_ref_idc: 3
[h264 @ 000001baaeb68bc0] nal_unit_type: 8(PPS), nal_ref_idc: 3
[h264 @ 000001baaeb68bc0] nal_unit_type: 5(IDR), nal_ref_idc: 3
[h264 @ 000001baaeb68bc0] Format yuv420p chosen by get_format().
[h264 @ 000001baaeb68bc0] Reinit context to 1280x720, pix_fmt: yuv420p
[h264 @ 000001baaeb68bc0] no picture 
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] All info found
[mov,mp4,m4a,3gp,3g2,mj2 @ 000001baaeb55300] After avformat_find_stream_info() pos: 109849 bytes read:131072 seeks:0 frames:15
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/input.mp4':
 Metadata:
 major_brand : mp42
 minor_version : 0
 compatible_brands: isommp42
 creation_time : 2016-08-24T03:50:36.000000Z
 Duration: 00:01:31.14, start: 0.000000, bitrate: 1149 kb/s
 Stream #0:0[0x1](und), 14, 1/90000: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 1020 kb/s, 29.97 fps, 29.97 tbr, 90k tbn (default)
 Metadata:
 creation_time : 2016-08-24T03:50:36.000000Z
 handler_name : ISO Media file produced by Google Inc.
 vendor_id : [0][0][0][0]
 Stream #0:1[0x2](und), 1, 1/44100: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
 Metadata:
 creation_time : 2016-08-24T03:50:36.000000Z
 handler_name : ISO Media file produced by Google Inc.
 vendor_id : [0][0][0][0]
Successfully opened the file.
Parsing a group of options: input url C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/output.wav.
Successfully parsed a group of options.
Opening an input file: C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/output.wav.
[NULL @ 000001baaec0e8c0] Opening 'C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/output.wav' for reading
[file @ 000001baaf24ee40] Setting default whitelist 'file,crypto,data'
[wav @ 000001baaec0e8c0] Format wav probed with size=2048 and score=99
[wav @ 000001baaec0e8c0] Before avformat_find_stream_info() pos: 78 bytes read:65614 seeks:1 nb_streams:1
[wav @ 000001baaec0e8c0] probing stream 0 pp:32
[wav @ 000001baaec0e8c0] probing stream 0 pp:31
[wav @ 000001baaec0e8c0] probing stream 0 pp:30
[wav @ 000001baaec0e8c0] probing stream 0 pp:29
[wav @ 000001baaec0e8c0] probing stream 0 pp:28
[wav @ 000001baaec0e8c0] probing stream 0 pp:27
[wav @ 000001baaec0e8c0] probing stream 0 pp:26
[wav @ 000001baaec0e8c0] probing stream 0 pp:25
[wav @ 000001baaec0e8c0] probing stream 0 pp:24
[wav @ 000001baaec0e8c0] probing stream 0 pp:23
[wav @ 000001baaec0e8c0] probing stream 0 pp:22
[wav @ 000001baaec0e8c0] probing stream 0 pp:21
[wav @ 000001baaec0e8c0] probing stream 0 pp:20
[wav @ 000001baaec0e8c0] probing stream 0 pp:19
[wav @ 000001baaec0e8c0] probing stream 0 pp:18
[wav @ 000001baaec0e8c0] probing stream 0 pp:17
[wav @ 000001baaec0e8c0] probing stream 0 pp:16
[wav @ 000001baaec0e8c0] probing stream 0 pp:15
[wav @ 000001baaec0e8c0] probing stream 0 pp:14
[wav @ 000001baaec0e8c0] probing stream 0 pp:13
[wav @ 000001baaec0e8c0] probing stream 0 pp:12
[wav @ 000001baaec0e8c0] probing stream 0 pp:11
[wav @ 000001baaec0e8c0] probing stream 0 pp:10
[wav @ 000001baaec0e8c0] probing stream 0 pp:9
[wav @ 000001baaec0e8c0] probing stream 0 pp:8
[wav @ 000001baaec0e8c0] probing stream 0 pp:7
[wav @ 000001baaec0e8c0] probing stream 0 pp:6
[wav @ 000001baaec0e8c0] probing stream 0 pp:5
[wav @ 000001baaec0e8c0] probing stream 0 pp:4
[wav @ 000001baaec0e8c0] probing stream 0 pp:3
[wav @ 000001baaec0e8c0] probing stream 0 pp:2
[wav @ 000001baaec0e8c0] probing stream 0 pp:1
[wav @ 000001baaec0e8c0] probed stream 0
[wav @ 000001baaec0e8c0] parser not found for codec pcm_s16le, packets or times may be invalid.
[wav @ 000001baaec0e8c0] max_analyze_duration 5000000 reached at 5120000 microseconds st:0
[wav @ 000001baaec0e8c0] After avformat_find_stream_info() pos: 176206 bytes read:262222 seeks:1 frames:42
Guessed Channel Layout for Input Stream #1.0 : mono
Input #1, wav, from 'C:\Users\batuh\Auto-Subtitled-Video-Generator - Copy2\pages\local_transcript\output/output.wav':
 Metadata:
 encoder : Lavf59.34.101
 Duration: 00:01:31.14, bitrate: 256 kb/s
 Stream #1:0, 42, 1/16000: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 16000 Hz, 1 channels, s16, 256 kb/s
Successfully opened the file.
[Parsed_subtitles_0 @ 000001baaeb7d040] Setting 'filename' to value 'C\:\\Users\\batuh\\Auto-Subtitled-Video-Generator - Copy2\\pages\\local_transcript\\output/transcript.srt'
[Parsed_subtitles_0 @ 000001baaeb7d040] libass API version: 0x1600010
[Parsed_subtitles_0 @ 000001baaeb7d040] libass source: commit: 0.16.0-48-g75a3dbac9bd41842a4d00b0d42c9513e2c8aec67
[Parsed_subtitles_0 @ 000001baaeb7d040] Raster: FreeType 2.12.1
[Parsed_subtitles_0 @ 000001baaeb7d040] Shaper: FriBidi 1.0.12 (SIMPLE) HarfBuzz-ng 5.3.1 (COMPLEX)
[Parsed_subtitles_0 @ 000001baaeb7d040] Initialized
[NULL @ 000001baaf473400] Opening 'C\:\\Users\\batuh\\Auto-Subtitled-Video-Generator - Copy2\\pages\\local_transcript\\output/transcript.srt' for reading
[file @ 000001baaeb7dc40] Setting default whitelist 'file,crypto,data'
[Parsed_subtitles_0 @ 000001baaeb7d040] Unable to open C\:\\Users\\batuh\\Auto-Subtitled-Video-Generator - Copy2\\pages\\local_transcript\\output/transcript.srt
[AVFilterGraph @ 000001baaf24ef40] Error initializing filter 'subtitles' with args 'C\\\:\\\\Users\\\\batuh\\\\Auto-Subtitled-Video-Generator - Copy2\\\\pages\\\\local_transcript\\\\output/transcript.srt'
Error initializing complex filters.
Invalid argument
[AVIOContext @ 000001baaeb5f880] Statistics: 131072 bytes read, 0 seeks
[AVIOContext @ 000001baaf10b2c0] Statistics: 262222 bytes read, 1 seeks




I tried doing all ffmpeg related things under the generate_subtitled_video function but couldn't make it work either.