Newest 'ffmpeg' Questions - Stack Overflow
Les articles publiés sur le site
-
Decoding pcm_s16le with FFMPEG ?
9 juin, par Davide Caresiai have a problem decoding a wav file using ffmpeg. I'm new to it and i'm not quite used to it.
In my application i have to input the audio file and get an array of samples to work on. I used ffmpeg to create a function that gets in input the path of the file, the position in time where to start to output the samples and the lenght of the chunk to decode in seconds.
When I try to decode the file harp.wav everything runs fine, and I can plot the samples as in the image plot-harp.png
The file is a WAV file encoded as: pcm_u8, 11025 Hz, 1 channels, u8, 88 kb/s
The problems comes when i try to decode the file demo-unprocessed.wav. It outputs a series of samples that has no sense. It outputs a serie of samples plotted as the image graph1-demo.jpg shows.
The file is a WAV file encoded as: pcm_s16le, 44100 Hz, 1 channels, s16, 705 kb/s
IDK where the problem in my code is, I already checked the code before and after the decoding with FFMPEG, and it works absolutely fine.
Here is the code for the dataReader.cpp :
/* Start by including the necessary */ #include "dataReader.h" #include
#include #include #ifdef __cplusplus extern "C" { #endif #include avcodec.h> #include avformat.h> #include avutil.h> #ifdef __cplusplus } #endif using namespace std; /* initialization function for audioChunk */ audioChunk::audioChunk(){ data=NULL; size=0; bitrate=0; } /* function to get back chunk lenght in seconds */ int audioChunk::getTimeLenght(){ return size/bitrate; } /* initialization function for audioChunk_dNorm */ audioChunk_dNorm::audioChunk_dNorm(){ data=NULL; size=0; bitrate=0; } /* function to get back chunk lenght in seconds */ int audioChunk_dNorm::getTimeLenght(){ return size/bitrate; } /* function to normalize audioChunk into audioChunk_dNorm */ void audioChunk_dNorm::fillAudioChunk(audioChunk* cnk){ size=cnk->size; bitrate=cnk->bitrate; double min=cnk->data[0]; double max=cnk->data[0]; for(int i=0;isize;i++){ if(*(cnk->data+i)>max) max=*(cnk->data+i); else if(*(cnk->data+i)data+i); } data=new double[size]; for(int i=0;i/data[i]=cnk->data[i]+256*data[i+1]; if(data[i]!=255) data[i]=2*((cnk->data[i])-(max-min)/2)/(max-min); else data[i]=0; } cout<<"bitrate "<* inizialize audioChunk */ audioChunk output; /* Check input times */ if((start_time<0)||(lenght<0)) { cout<<"Input times should be positive"; return output; } /* Start FFmpeg */ av_register_all(); /* Initialize the frame to read the data and verify memory allocation */ AVFrame* frame = av_frame_alloc(); if (!frame) { cout << "Error allocating the frame" << endl; return output; } /* Initialization of the Context, to open the file */ AVFormatContext* formatContext = NULL; /* Opening the file, and check if it has opened */ if (avformat_open_input(&formatContext, path_name, NULL, NULL) != 0) { av_frame_free(&frame); cout << "Error opening the file" << endl; return output; } /* Find the stream info, if not found, exit */ if (avformat_find_stream_info(formatContext, NULL) < 0) { av_frame_free(&frame); avformat_close_input(&formatContext); cout << "Error finding the stream info" << endl; return output; } /* Check inputs to verify time input */ if(start_time>(formatContext->duration/1000000)){ cout<< "Error, start_time is over file duration"<* Chunk = number of samples to output */ long long int chunk = ((formatContext->bit_rate)*lenght/8); /* Start = address of sample where start to read */ long long int start = ((formatContext->bit_rate)*start_time/8); /* Tot_sampl = number of the samples in the file */ long long int tot_sampl = (formatContext->bit_rate)*(formatContext->duration)/8000000; /* Set the lenght of chunk to avoid segfault and to read all the file */ if (start+chunk>tot_sampl) {chunk = tot_sampl-start;} if (lenght==0) {start = 0; chunk = tot_sampl;} /* initialize the array to output */ output.data = new unsigned char[chunk]; output.bitrate = formatContext->bit_rate; output.size=chunk; av_dump_format(formatContext,0,NULL,0); cout<* Find the audio Stream, if no audio stream are found, clean and exit */ AVCodec* cdc = NULL; int streamIndex = av_find_best_stream(formatContext, AVMEDIA_TYPE_AUDIO, -1, -1, &cdc, 0); if (streamIndex < 0) { av_frame_free(&frame); avformat_close_input(&formatContext); cout << "Could not find any audio stream in the file" << endl; return output; } /* Open the audio stream to read data in audioStream */ AVStream* audioStream = formatContext->streams[streamIndex]; /* Initialize the codec context */ AVCodecContext* codecContext = audioStream->codec; codecContext->codec = cdc; /* Open the codec, and verify if it has opened */ if (avcodec_open2(codecContext, codecContext->codec, NULL) != 0) { av_frame_free(&frame); avformat_close_input(&formatContext); cout << "Couldn't open the context with the decoder" << endl; return output; } /* Initialize buffer to store compressed packets */ AVPacket readingPacket; av_init_packet(&readingPacket); int j=0; int count = 0; while(av_read_frame(formatContext, &readingPacket)==0){ if((count+readingPacket.size)>start){ if(readingPacket.stream_index == audioStream->index){ AVPacket decodingPacket = readingPacket; // Audio packets can have multiple audio frames in a single packet while (decodingPacket.size > 0){ // Try to decode the packet into a frame // Some frames rely on multiple packets, so we have to make sure the frame is finished before // we can use it int gotFrame = 0; int result = avcodec_decode_audio4(codecContext, frame, &gotFrame, &decodingPacket); count += result; if (result >= 0 && gotFrame) { decodingPacket.size -= result; decodingPacket.data += result; int a; for(int i=0;idata[0][i]; j++; if(j>=chunk) break; } // We now have a fully decoded audio frame } else { decodingPacket.size = 0; decodingPacket.data = NULL; } if(j>=chunk) break; } } }else count+=readingPacket.size; // To prevent memory leak, must free packet. av_free_packet(&readingPacket); if(j>=chunk) break; } // Some codecs will cause frames to be buffered up in the decoding process. If the CODEC_CAP_DELAY flag // is set, there can be buffered up frames that need to be flushed, so we'll do that if (codecContext->codec->capabilities & CODEC_CAP_DELAY) { av_init_packet(&readingPacket); // Decode all the remaining frames in the buffer, until the end is reached int gotFrame = 0; int a; int result=avcodec_decode_audio4(codecContext, frame, &gotFrame, &readingPacket); while (result >= 0 && gotFrame) { // We now have a fully decoded audio frame for(int i=0;idata[0][i]; j++; if(j>=chunk) break; } if(j>=chunk) break; } } // Clean up! av_free(frame); avcodec_close(codecContext); avformat_close_input(&formatContext); cout<<"Ended Reading, "<code> Here is the dataReader.h
/* * File: dataReader.h * Author: davide * * Created on 27 luglio 2015, 11.11 */ #ifndef DATAREADER_H #define DATAREADER_H /* function that reads a file and outputs an array of samples * @ path_name = the path of the file to read * @ start_time = the position where to start the data reading, 0 = start * the time is in seconds, it can hold to 10e-6 seconds * @ lenght = the lenght of the frame to extract the data, * 0 = read all the file (do not use with big files) * if lenght > of file duration, it reads through the end of file. * the time is in seconds, it can hold to 10e-6 seconds */ #include class audioChunk{ public: uint8_t *data; unsigned int size; int bitrate; int getTimeLenght(); audioChunk(); }; class audioChunk_dNorm{ public: double* data; unsigned int size; int bitrate; int getTimeLenght(); void fillAudioChunk(audioChunk* cnk); audioChunk_dNorm(); }; audioChunk readData(const char* path_name, const double start_time, const double lenght); #endif /* DATAREADER_H */
And finally there is the main.cpp of the application.
/* * File: main.cpp * Author: davide * * Created on 28 luglio 2015, 17.04 */ #include
#include "dataReader.h" #include "transforms.h" #include "tognuplot.h" #include #include using namespace std; /* * */ int main(int argc, char** argv) { audioChunk *chunk1=new audioChunk; audioChunk_dNorm *normChunk1=new audioChunk_dNorm; *chunk1=readData("./audio/demo-unprocessed.wav",0,1); normChunk1->fillAudioChunk(chunk1); ofstream file1; file1.open("./file/2wave.txt", std::ofstream::trunc); if(file1.is_open()) { for(int i=0;isize;i++) { int a=chunk1->data[i]; file1<code> I can't understand why the outputs goes like this. Is it possible that the decoder can't convert the samples (pcm_16le, 16bits) into FFMPEG AVFrame.data, that stores the samples ad uint8_t? And if it is it is there some way to make FFMPEG work for audio files that stores samples at more than 8 bits?
The file graph1-demo_good.jpg is how the samples should be, extracted with a working LIBSNDFILE application that I made.
EDIT: Seems like the program can't convert the decoded data, couples of little endian bytes stored in a couple of uint8_t unsigned char, into the destination format (that i set as unsigned char[]), because it stores the bits as little-endian 16 bytes. So the data into audioChunk.data is right, but I have to read it not as an unsigned char, but as a couple of little-endian bytes.
-
How to cut one track from one big flac file (16 tracks) [closed]
9 juin, par Павел ДёминThere is a flac file + log to it. The file weighs more than 200 MB and contains 16 tracks. I need to cut track number 3 from it. How to do this in ffmpeg?
Read offset correction : 48 Overread into Lead-In and Lead-Out : No Fill up missing offset samples with silence : Yes Delete leading and trailing silent blocks : No Null samples used in CRC calculations : Yes Used interface : Installed external ASPI interface
Used output format : Internal WAV Routines Sample format : 44.100 Hz; 16 Bit; Stereo
TOC of the extracted CD
Track | Start | Length | Start sector | End sector --------------------------------------------------------- 1 | 0:00.00 | 3:56.26 | 0 | 17725 2 | 3:56.26 | 3:30.58 | 17726 | 33533 3 | 7:27.09 | 3:48.13 | 33534 | 50646 4 | 11:15.22 | 3:47.32 | 50647 | 67703 5 | 15:02.54 | 3:22.39 | 67704 | 82892 6 | 18:25.18 | 3:35.27 | 82893 | 99044 7 | 22:00.45 | 2:53.09 | 99045 | 112028 8 | 24:53.54 | 3:38.10 | 112029 | 128388 9 | 28:31.64 | 3:42.55 | 128389 | 145093 10 | 32:14.44 | 3:35.43 | 145094 | 161261 11 | 35:50.12 | 2:55.64 | 161262 | 174450 12 | 38:46.01 | 3:49.45 | 174451 | 191670 13 | 42:35.46 | 3:33.74 | 191671 | 207719 14 | 46:09.45 | 3:26.38 | 207720 | 223207 15 | 49:36.08 | 4:37.38 | 223208 | 244020 16 | 56:45.46 | 7:58.17 | 255421 | 291287
-
I detected an error downloading a twitch tv stream. I use ffmpeg. That error stops the download, how can I fix it ? [closed]
9 juin, par sort35ofnI wanted to perform a download via ffmpeg of a video streamed live on the Twitch tv platform. I have windows 10 and I use cmd to run ffmpeg.
The command I use to download the concert is:
ffmpeg.exe -i "m3u8-link" -c copy name.ts
I once downloaded with yt-dlp, but noticed that the quality was noticeably lower, at least using the following command: yt-dlp.exe -f (bestvideo+bestaudio/best) "amazon-channel-link"
That's why I prefer to download with ffmpeg. Normally I haven't had any problems with downloads. But this is already the third time (not continuously/consecutively) that I get this error. That error causes the download of the stream to terminate. It is not like in other occasions that sometimes a .ts fragment (of 3 seconds, for example) has already expired (and is not included in the download) but the download continues.
[https @ 000001edada180c0] Opening 'https://sae12.playlist.ttvnw.net/v1/playlist/Cr4GlKuutNM7CxfM9Sq0mdUFxA8uA3F2oluPaJOmOPaBjmTkdiv4RxnkTtt_tEV8t2CyuH6D1E0HB3Erpbjq3mCfV5KqO4GfOMNOElmyYe2AKZcyQJHNeavrFfVBPB_pbDS5PYWTzUHoS0iTLfmn2cx-wHMHXa5MO-IdGPRixWDvezKNhOebWYscoIWvYwstshPSFvem1EN1UES7QfIDHSlBcZF3lGeVpg2yl05dhVwAX8YI9rnBtXYbwAUwcjEmPiqk_wm6oEX-2LRsw_05dznnVv6BbyYsLvyZu810xt9BNQU6rNCSzuoZhVx8gFxoyEdUt-VV3L_xj78-5CFibrvnO4uCafCZ5-wE_bEtUQeuHsLmm9Qf9Pj5BIGB2BHWm2LqlGTHcDG-8Z0u1-3_FB_h7fN7-uuyN-6-lreZYHDPviM8hKHFMU3zwNY29elgKRPgVMJ-4ysLWGuOPdwrylJpLFJSzsXhZaEE4p_4Zg6gfDuozYYttmPI2G1LErd5p1lT9DkQncFZibymap5Fiv-x21-jeNbrZo92PfW7lIo6NPdlnPWyoUTOb2KjgU9R0fm1UJt1kQJmQMVyDN2OHZ4t7dcAfyGMTwU26O7DdaYZhhv8mPMteBZcyjnLKH7e5AMtHUEVO2r9QIOiH0wDLNh-f9WS2kmRdJENBvl5mMGdyVHhBc9K9G5SuxBesi6F_9P_8agwpPo51m8ikJvSVJKduoIfVLSuto2SIe4DFI7hMxbplWfxBb1PNEoMWyeQd0iHUwDqQwVCFHq8OhGBp1EJtx1CNVtBhztLIqNXBbxR1Cdy8tx5rdJjq4EKlFKU3eh3_aRkhe7gulUKx2cZYNg4bGHpNBU1DP-std8xG1ckPdTpig-h_1okYPd7sXnynBFnhMHkVipsIJC4fkoT2MXHo3ItgMgTUBh1-oWD6qaD00VDM9TyDcCawJt-kI8-KnwlUkh7pq2cUv9ODqSjm5xcLoxPUxutCoZ9aKq9cnV0kqKPXxmLOekmgWK8G8MjFZ6Es5n46NeKREgQEBUTf2TZkUTOHZAiElyPy0ZdyOxFkdFZ06yqq8zUWG_dnhpgbrS1SueCOx5rGInRIdg94TIaDLMJTUvkLrqDdcS2jiABKgl1cy1lYXN0LTIwuAw.m3u8' for reading [https @ 000001edad715600] HTTP error 500 Internal Server Errortrate=4480.2kbits/s speed=1.01x elapsed=0:17:30.76 [hls @ 000001edab89e500] keepalive request failed for 'https://sae12.playlist.ttvnw.net/v1/playlist/Cr4GlKuutNM7CxfM9Sq0mdUFxA8uA3F2oluPaJOmOPaBjmTkdiv4RxnkTtt_tEV8t2CyuH6D1E0HB3Erpbjq3mCfV5KqO4GfOMNOElmyYe2AKZcyQJHNeavrFfVBPB_pbDS5PYWTzUHoS0iTLfmn2cx-wHMHXa5MO-IdGPRixWDvezKNhOebWYscoIWvYwstshPSFvem1EN1UES7QfIDHSlBcZF3lGeVpg2yl05dhVwAX8YI9rnBtXYbwAUwcjEmPiqk_wm6oEX-2LRsw_05dznnVv6BbyYsLvyZu810xt9BNQU6rNCSzuoZhVx8gFxoyEdUt-VV3L_xj78-5CFibrvnO4uCafCZ5-wE_bEtUQeuHsLmm9Qf9Pj5BIGB2BHWm2LqlGTHcDG-8Z0u1-3_FB_h7fN7-uuyN-6-lreZYHDPviM8hKHFMU3zwNY29elgKRPgVMJ-4ysLWGuOPdwrylJpLFJSzsXhZaEE4p_4Zg6gfDuozYYttmPI2G1LErd5p1lT9DkQncFZibymap5Fiv-x21-jeNbrZo92PfW7lIo6NPdlnPWyoUTOb2KjgU9R0fm1UJt1kQJmQMVyDN2OHZ4t7dcAfyGMTwU26O7DdaYZhhv8mPMteBZcyjnLKH7e5AMtHUEVO2r9QIOiH0wDLNh-f9WS2kmRdJENBvl5mMGdyVHhBc9K9G5SuxBesi6F_9P_8agwpPo51m8ikJvSVJKduoIfVLSuto2SIe4DFI7hMxbplWfxBb1PNEoMWyeQd0iHUwDqQwVCFHq8OhGBp1EJtx1CNVtBhztLIqNXBbxR1Cdy8tx5rdJjq4EKlFKU3eh3_aRkhe7gulUKx2cZYNg4bGHpNBU1DP-std8xG1ckPdTpig-h_1okYPd7sXnynBFnhMHkVipsIJC4fkoT2MXHo3ItgMgTUBh1-oWD6qaD00VDM9TyDcCawJt-kI8-KnwlUkh7pq2cUv9ODqSjm5xcLoxPUxutCoZ9aKq9cnV0kqKPXxmLOekmgWK8G8MjFZ6Es5n46NeKREgQEBUTf2TZkUTOHZAiElyPy0ZdyOxFkdFZ06yqq8zUWG_dnhpgbrS1SueCOx5rGInRIdg94TIaDLMJTUvkLrqDdcS2jiABKgl1cy1lYXN0LTIwuAw.m3u8' with error: 'Server returned 5XX Server Error reply' when parsing playlist [https @ 000001edad714900] HTTP error 500 Internal Server Errortrate=4480.2kbits/s speed= 1x elapsed=0:17:32.82 [hls @ 000001edab89e500] Failed to reload playlist 0 [https @ 000001edab8a4dc0] Opening 'https://c513a515af41.chantenay.akamai.hls.ttvnw.net/v1/segment/CvUCxQ8TAK7dXfVU_OB77Tl0jy4jVuXiNgXG_97z6zGC4vXLrJNkgegJgVTcnrjyxZuL37UAeKJ9nhR48Yq2YRy_r8EnJ3PyAX407Gj21HDw3AG1KFXL-Z1ysn7DFTvOb434uA_farXGB276wYH-n0dFr7TzD7G2sCLcYSZeyadGEwJbq3wvb7AglP8UEU0JxwZRVKWx0zX9Vd4I3EiSdAUP7w96T75UBwreFKwxvq16-od59YpbneYRYUYkgKEZSLTgrmCkm_nN4FWxOCSOhFHqHmjCenSREMJMdSHbhcqgvU5pdIxSm0ITMAxY4jX6cUTFKsqYGeKwCMHjy0gptCuPGVvEJCffxq00YNmF194USBRWumBZCp0TuRtI4LzjyPB1LARLdzJ56bCibI6lRE4hDn53zAV5ZUcWlkUIuUJ52D4vH3fRl85AQHV8UiWl8MEfyjJ4B8XxThp7lZ8nhAX42pUJ_8YgaK6BO51syG2Rkm9icm8ddRoM8pDl2Pkp8FgFncdIIAEqCXVzLWVhc3QtMjC4DA.ts?dna=CnWfUp8FT0O95nMtHpmzX-0LudnQmJLc-YARNX594okBXpxNtNQOAoOFUhTgI3_AReiOPiW_1e2e3oeoXJfoJbH4KZniEQhFhSWU7wMaSzM8CkZomzvn1Gig5l71lY9wSw8DV-QRh6LK7zfRqp5yy547EAFTbcwaDDnujf_TZXo1TVET8CABKgl1cy1lYXN0LTIwuAw' for reading [https @ 000001edad4be180] Opening 'https://c513a515af41.chantenay.akamai.hls.ttvnw.net/v1/segment/CvUCvDoClU0qVRu8zB4Vm0gdhBMUSkOd9X-6zOlmLSLjAZDs-Oxj_mW5vBJWinuwpM4xU4bDToC8hfj7Xv80h6Rc93voJNaNiUxYWszEFu1AJh-_LsqxEJA-3nW8MBNo9YeaecC_EX8TF0VTaVBGiLI1SQNREb-1B5pAkYXfVcO_OSI2QqrssKXbBzkNwsx6dW38ir7CNT9qTZACJGzDZkxXYrSlArubviw_wXxSKXQKn0YcF3yXeKO4iXHRjkyrX0rnaSM3PRDJhr1xGT47u9J5jymTL55O9QRLS-9Z8ZN1LhqpXLxBFJbFi-4v_yJZWponNmS3F6b3rMhW3WCv5qw96B4UHF7NjFJWk0LmyLTkNcBAPC2yyARDZ02MoIXPzMSEq9Z1O4jrASPj34HXA_8BdxqZdVtyzjEekR2ThJkueLyFshQ3HIGkeFH49xpQmDNgE93VovfMACG9RTUCIPP9cZuOhTkoFBpT7JSrOx_p2oS3q4QiYxoMQNuunEN7QhQW4OPMIAEqCXVzLWVhc3QtMjC4DA.ts?dna=CnWfUp8FT0O95nMtHpmzX-0LudnQmJLc-YARNX594okBXpxNtNQOAoOFUhTgI3_AReiOPiW_1e2e3oeoXJfoJbH4KZniEQhFhSWU7wMaSzM8CkZomzvn1Gig5l71lY9wSw8DV-QRh6LK7zfRqp5yy547EAFTbcwaDDnujf_TZXo1TVET8CABKgl1cy1lYXN0LTIwuAw' for reading [in#0/hls @ 000001edab89e3c0] Error during demuxing: Server returned 5XX Server Error reply 1x elapsed=0:17:33.34 [out#0/mpegts @ 000001edab92e880] video:547017KiB audio:12398KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 3.451806% frame=26450 fps= 25 q=-1.0 Lsize= 578726KiB time=00:17:37.96 bitrate=4481.2kbits/s speed= 1x elapsed=0:17:33.35 yt-dlp>
Is there any way to prevent this error? Or can I do something so that the download does not stop because of this error?
And excuse me but I forgot to take a screenshot of the cmd screen, so I don't remember the colors of the letters (it certainly changed the colors of the letters when the error appeared). So I proceed to indicate that the error starts when it says: “ [hls @ 000001edab89e500] keepalive request failed for ”.
-
Extract motion vectors from h264 using hardware codec [closed]
9 juin, par adoreI am writing program to extract motion vectors from stream (videofile or webcam). While i am using software decoder everything seems ok, but when i trying to change decoder from
h264
toh264_rkmpp
, then and error, that appears in console:RgaBlit(1465) RGA_BLIT fail: Invalid argument RgaBlit(1466) RGA_BLIT fail: Invalid argument handl-fd-vir-phy-hnd-format[0, 17, (nil), (nil), 0, 0] rect[0, 0, 640, 480, 640, 480, 2560, 0] f-blend-size-rotation-col-log-mmu[0, 0, 0, 0, 0, 0, 1] handl-fd-vir-phy-hnd-format[0, 0, 0x9f70c30, (nil), 0, 0] rect[0, 0, 640, 480, 640, 512, 2816, 0] f-blend-size-rotation-col-log-mmu[0, 0, 0, 0, 0, 0, 1] This output the user parameters when rga call blit fail
I tried to ask chatgpt is there a way to extract motion vectors from h264 stream using hardware decoder h264_rkmpp, and he said that there isn't a way you can do it, if you want to get mvs, then you need to switch decoder back to software
h264
. So i googled it and didn't found accurate answer on this topic. So i am asking here. Is there a way to get motion vectors (or side data) from h264 stream using hardware decoder like h264_rkmpp? (ffmpeg) -
FFmpeg Android Errors
8 juin, par axjpOk so im making a kotlin android app and for file conversion from 3gp to wav i added the android ffmpeg library with
implementation 'com.arthenica:mobile-ffmpeg-full:4.4'
then i added this code to convert the filesFFmpeg.execute("-i" + f2 +"/storage/emulated/0/Android/data/com.icompilecodewithnowarnings.ffmpegthing/files/Documents/recording.wav")
for further context f2 is/storage/emulated/0/Android/data/com.icompilecodewithnowarnings.ffmpegthing/files/Documents/recording.3gp
The error log is to large to simply just fit here but heres some of it
Execution failed for task ':app:checkDebugAarMetadata'. > Could not resolve all files for configuration ':app:debugRuntimeClasspath'. > Could not find com.github.hiteshsondhi88.libffmpeg:FFmpegAndroid:0.3.2. Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/github/hiteshsondhi88/libffmpeg/FFmpegAndroid/0.3.2/FFmpegAndroid-0.3.2.pom - https://repo.maven.apache.org/maven2/com/github/hiteshsondhi88/libffmpeg/FFmpegAndroid/0.3.2/FFmpegAndroid-0.3.2.pom Required by: project :app
Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find com.github.hiteshsondhi88.libffmpeg:FFmpegAndroid:0.3.2.
I tried to compile however the compiler immediatley rejected my app and refused to compile. I would have expected it to have immidiatley compiled into a apk.
EDIT:
Here is my build.gradle file
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { namespace 'com.icompilecodewithnowarnings.ffmpegthing' compileSdk 33 defaultConfig { applicationId "com.icompilecodewithnowarnings.ffmpegthing" minSdk 26 targetSdk 33 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } } dependencies { implementation 'androidx.core:core-ktx:1.8.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation 'com.arthenica:mobile-ffmpeg-full:4.4' implementation files('src/main/java/musicg-1.4.2.0.jar') testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' }