
Recherche avancée
Autres articles (55)
-
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
-
Dépôt de média et thèmes par FTP
31 mai 2013, parL’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...) -
Keeping control of your media in your hands
13 avril 2011, parThe vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)
Sur d’autres sites (7864)
-
Error setting option use_wallclock_as_timestamps to value 1 in FFmpegFrameGrabber - avformat_open_input() error -22
29 mai 2023, par githubwyjavformat_open_input() error -22 Error setting option


FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("rtsp://xxxxx");
grabber.setOption("use_wallclock_as_timestamps", "1");
grabber.setOption("rtsp_transport", "tcp");
grabber.setOption("rtsp_flags", "prefer_tcp");

grabber.start();



I used ffmpeg in JavaCV to pull rtsp streams, but there was an error like this


Error: [rtsp @ 0x7f2770145a60] Invalid option type.

Error: [rtsp @ 0x7f2770145a60] Error setting option use_wallclock_as_timestamps to value 1.

Error: [rtsp @ 0x7f2770145a60] Invalid option type.

Error: [rtsp @ 0x7f2770145a60] Error setting option use_wallclock_as_timestamps to value 1.

org.bytedeco.javacv.FFmpegFrameGrabber$Exception: avformat_open_input() error -22: Could not open input "rtsp://xxxx@10.10.10.119:554/video/1". (Has setFormat() been called?) (For more details, make sure FFmpegLogCallback.set() has been called.)
 at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:975)
 at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:903)
 at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:898)





When I removed
grabber.setOption("use_wallclock_as_timestamps", "1");
, the following error occurred:

2023-05-29 11:11:02.169 [pool-2-thread-9] ERROR [FFmpegLogCallback:54] - [RTSP demuxer @ 0x7f2b8c007240] [Eval @ 0x7f2b32790080] Undefined constant or missing '(' in 'prefer_tcp'

2023-05-29 11:11:02.169 [pool-2-thread-9] ERROR [FFmpegLogCallback:54] - [RTSP demuxer @ 0x7f2b8c007240] Unable to parse option value "prefer_tcp"

2023-05-29 11:11:02.170 [pool-2-thread-9] ERROR [FFmpegLogCallback:54] - [RTSP demuxer @ 0x7f2b8c007240] Error setting option rtsp_flags to value prefer_tcp.

2023-05-29 11:11:02.170 [pool-2-thread-9] ERROR [FFmpegLogCallback:54] - [RTSP demuxer @ 0x7f2b8c007240] [Eval @ 0x7f2b32790080] Undefined constant or missing '(' in 'prefer_tcp'

2023-05-29 11:11:02.170 [pool-2-thread-9] ERROR [FFmpegLogCallback:54] - [RTSP demuxer @ 0x7f2b8c007240] Unable to parse option value "prefer_tcp"

2023-05-29 11:11:02.170 [pool-2-thread-9] ERROR [FFmpegLogCallback:54] - [RTSP demuxer @ 0x7f2b8c007240] Error setting option rtsp_flags to value prefer_tcp.



org.bytedeco.javacv.FFmpegFrameGrabber$Exception: avformat_open_input() error -22: Could not open input "rtsp://xxxx@10.10.10.119:554/video/1". (Has setFormat() been called?) (For more details, make sure FFmpegLogCallback.set() has been called.)
 at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:975)
 at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:903)
 at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:898)




javacv&ffmpeg :


'org.bytedeco:javacv-platform:1.5.8',
'org.bytedeco:ffmpeg-platform:5.1.2-1.5.8',



-
How to resolve "runOnReady command exited with code 0" when restreaming a stream using Mediamtx ?
2 juillet 2023, par Emad HelmiI'm attempting to publish a stream to the RTMP port
1935
using affmpeg
command with Mediamtx (v0.22.2). Afterward, I want to restream the mainstream to another path using therunOnReady
command in the config file. However, I'm encountering an issue wherethe runOnReady command exits with code 0.


Steps to Replicate :


- 

- Use the provided docker-compose.yml file :




version: "3.8"

name: mediamtx
services:
 mediamtx:
 image: aler9/rtsp-simple-server:v0.22.2
 container_name: media_mtx_rtsp_server
 ports:
 - "8554:8554"
 - "1935:1935"
 - "8888:8888"
 - "8889:8889"
 - "9997:9997"
 - "8000:8000"
 volumes:
 - ./configs/mediamtx/config.yml:/mediamtx.yml
 - ../volumes/hls/segments:/hls/segments



- 

- Add the following path to the
config.yml
file :




paths:
 show/test:
 runOnReady: ffmpeg -i rtmp://localhost:1935/show/test -c copy -f flv "rtmp://localhost:1935/compressed/test"
 runOnReadyRestart: yes



- 

- Start the server using docker-compose.
- Publish an
RTMP
stream to the server using the following command :






ffmpeg -re -stream_loop -1 -i files/sample-30s.mp4 -c copy -f flv "rtmp://localhost:1935/show/test"



- 

- When I check the logs :




2023/07/01 15:16:30 INF [RTMP] [conn 172.26.0.1:51044] opened
2023/07/01 15:16:30 INF [path show/test] runOnReady command started
2023/07/01 15:16:30 INF [RTMP] [conn 172.26.0.1:51044] is publishing to path 'show/test', 2 tracks (H264, MPEG4-audio-gen)
2023/07/01 15:16:30 INF [path show/test] runOnReady command exited with code 0



So I can't watch the stream on the new path (/compressed/test)


-
Java shelling out to FFMPEG not running nor giving error
4 janvier, par ToddI'm writing a Podcast downloader where I want to be able to download one or more podcasts then run them through FFMPEG.


It does run when I run the program in Windows.

It does not run when I run the program in Linux - Meaning FFMPEG may or may not have been called. I have no way of knowing. I get a -1 back from process.waitfor() but no error in my Java logs and no entries at all in the ffmpeg.log file. And there is no file in the processed file directory that FFMPEG would have created.

It does run in Linux if I run the same command that fails in Java from the command line.

FFMPEG has the permissions : rwxr-xr-x , so it doesn't seem as if it'd be a permission error. The Java code looks like :


ProcessBuilder processBuilder = new ProcessBuilder( commands );
 processBuilder.redirectErrorStream( true );
 // Added the next line to see if I could log an error from ffmpeg
 processBuilder.redirectOutput( ProcessBuilder.Redirect.appendTo( new File( "./ffmpeg.log" ) ) );

 Process process = processBuilder.start();
 BufferedReader bufferedOutputReader = new BufferedReader( new InputStreamReader( process.getInputStream() ) );
 do {
 outputString = bufferedOutputReader.readLine();
 if ( outputString != null ) {
 LOGGER.trace( outputString );
 }
 } while ( outputString != null );
 results = process.waitFor();
 LOGGER.debug( "Exit value: " + results );



The commands are :


2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: /bin/ffmpeg 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -y 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -i 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "/home/todd/aggregator/incoming/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3" 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -ac 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: 1 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -af 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "atempo=1.4,volume=1.4" 
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "/home/todd/aggregator/processed/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3"



And the manually constructed and run command line that DOES work is :


/bin/ffmpeg -y -i "/home/todd/aggregator/incoming/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3" -ac 1 -af "atempo=1.4,volume=1.4" "/home/todd/aggregator/processed/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3"



The ffmpeg.log file is empty, so I'm doubting whether FFMPEG is ever being reached.


What am I doing wrong ?


EDIT :
I changed the commands to be


"/bin/ffmpeg 2> foo.txt" 



and the execution code to :


ProcessBuilder processBuilder = new ProcessBuilder( commands );
// processBuilder.redirectErrorStream( true );
 // Added the next line to see if I could log an error from ffmpeg
// processBuilder.redirectOutput( ProcessBuilder.Redirect.appendTo( new File( "./ffmpeg.log" ) ) );
 Process process = processBuilder.start();
 results = process.waitFor();



Running that command from the command line displays a list of MMPEG commands that can be run within foo.txt. Upon running from within the Java app, the foo.txt file is empty, so it doesn't appear that FFMPEG ever gets reached. But, I'm clueless why not.


EDIT 2 :
I converted the /bin/ffmpeg path to uppercase to see if that would return an error and it did.


ERROR org.mrpc.utilities.ShellUtils - Cannot run program "/BIN/FFMPEG": error=2, No such file or directory



This seems to confirm that the Java Process object can locate ffmpeg successfully when it is properly cased (i.e. my original code) as I don't see an error message when the case is incorrect. Still not sure why nothing happens when it is called.


EDIT 3 :
I punted on this a year ago, but recently had to revisit. This time I found the answer. It is because I included double quotes around some of the command parameters. That caused the files to not be found. This link states that the Process class handles embedded spaces without any intervention required by you : ProcessBuilder adds extra quotes to command line