Recherche avancée

Médias (91)

Autres articles (70)

  • Dépôt de média et thèmes par FTP

    31 mai 2013, par

    L’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, par

    The 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 (...)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

Sur d’autres sites (7295)

  • C++ ffmpeg lib version 7.0 - runtime error

    1er septembre 2024, par Chris P

    I want to make a C++ lib named cppdub which will mimic the python module pydub.

    


    One main function is to export the AudioSegment to a file with a specific format (example : mp3).

    


    The code is :

    


    void check_av_error(int error_code, const std::string&amp; msg) {&#xA;    if (error_code &lt; 0) {&#xA;        char errbuf[AV_ERROR_MAX_STRING_SIZE];&#xA;        av_strerror(error_code, errbuf, sizeof(errbuf));&#xA;        throw std::runtime_error(msg &#x2B; ": " &#x2B; errbuf);&#xA;    }&#xA;}&#xA;&#xA;std::string av_err2str_(int errnum) {&#xA;    char buf[AV_ERROR_MAX_STRING_SIZE];&#xA;    av_strerror(errnum, buf, sizeof(buf));&#xA;    return std::string(buf);&#xA;}&#xA;&#xA;void log_error(const std::string&amp; msg) {&#xA;    std::cerr &lt;&lt; "Error: " &lt;&lt; msg &lt;&lt; std::endl;&#xA;}&#xA;&#xA;std::ofstream cppdub::AudioSegment::export_segment(&#xA;    std::string&amp; out_f,&#xA;    const std::string&amp; format,&#xA;    const std::string&amp; codec,&#xA;    const std::string&amp; bitrate,&#xA;    const std::vector&amp; parameters,&#xA;    const std::map&amp; tags,&#xA;    const std::string&amp; id3v2_version,&#xA;    const std::string&amp; cover) {&#xA;&#xA;    av_log_set_level(AV_LOG_DEBUG);&#xA;    avformat_network_init();&#xA;&#xA;    AVFormatContext* format_ctx = nullptr;&#xA;    int ret = avformat_alloc_output_context2(&amp;format_ctx, nullptr, format.c_str(), out_f.c_str());&#xA;    check_av_error(ret, "Could not allocate format context");&#xA;&#xA;    if (!(format_ctx->oformat->flags &amp; AVFMT_NOFILE)) {&#xA;        ret = avio_open(&amp;format_ctx->pb, out_f.c_str(), AVIO_FLAG_WRITE);&#xA;        check_av_error(ret, "Could not open output file");&#xA;    }&#xA;&#xA;    AVStream* stream = avformat_new_stream(format_ctx, nullptr);&#xA;    if (!stream) {&#xA;        avformat_free_context(format_ctx);&#xA;        throw std::runtime_error("Could not allocate stream");&#xA;    }&#xA;&#xA;    const AVCodec* codec_obj = avcodec_find_encoder_by_name(codec.c_str());&#xA;    if (!codec_obj) {&#xA;        avformat_free_context(format_ctx);&#xA;        throw std::runtime_error("Codec not found");&#xA;    }&#xA;&#xA;    AVCodecContext* codec_ctx = avcodec_alloc_context3(codec_obj);&#xA;    if (!codec_ctx) {&#xA;        avformat_free_context(format_ctx);&#xA;        throw std::runtime_error("Could not allocate codec context");&#xA;    }&#xA;&#xA;    codec_ctx->sample_rate = this->get_frame_rate();&#xA;    AVChannelLayout ch_layout_1;&#xA;    av_channel_layout_uninit(&amp;ch_layout_1);&#xA;    av_channel_layout_default(&amp;ch_layout_1, 2);&#xA;    codec_ctx->ch_layout = ch_layout_1; // Adjust based on your needs&#xA;    codec_ctx->bit_rate = std::stoi(bitrate);&#xA;    codec_ctx->sample_fmt = codec_obj->sample_fmts[0];&#xA;&#xA;    if (format_ctx->oformat->flags &amp; AVFMT_GLOBALHEADER) {&#xA;        codec_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;&#xA;    }&#xA;&#xA;    ret = avcodec_open2(codec_ctx, codec_obj, nullptr);&#xA;    check_av_error(ret, "Could not open codec");&#xA;&#xA;    stream->time_base = { 1, codec_ctx->sample_rate };&#xA;    ret = avcodec_parameters_from_context(stream->codecpar, codec_ctx);&#xA;    check_av_error(ret, "Could not set codec parameters");&#xA;&#xA;    ret = avformat_write_header(format_ctx, nullptr);&#xA;    check_av_error(ret, "Error occurred when writing header");&#xA;&#xA;    AVPacket pkt;&#xA;    av_init_packet(&amp;pkt);&#xA;    pkt.data = nullptr;&#xA;    pkt.size = 0;&#xA;&#xA;    int frame_size = av_samples_get_buffer_size(nullptr, codec_ctx->ch_layout.nb_channels,&#xA;        codec_ctx->frame_size, codec_ctx->sample_fmt, 0);&#xA;    check_av_error(frame_size, "Could not calculate frame size");&#xA;&#xA;    AVFrame* frame = av_frame_alloc();&#xA;    if (!frame) {&#xA;        avcodec_free_context(&amp;codec_ctx);&#xA;        avformat_free_context(format_ctx);&#xA;        throw std::runtime_error("Error allocating frame");&#xA;    }&#xA;&#xA;    frame->format = codec_ctx->sample_fmt;&#xA;    frame->ch_layout = codec_ctx->ch_layout;&#xA;    frame->sample_rate = codec_ctx->sample_rate;&#xA;    frame->nb_samples = codec_ctx->frame_size;&#xA;&#xA;    ret = av_frame_get_buffer(frame, 0);&#xA;    if (ret &lt; 0) {&#xA;        av_frame_free(&amp;frame);&#xA;        avcodec_free_context(&amp;codec_ctx);&#xA;        avformat_free_context(format_ctx);&#xA;        throw std::runtime_error("Error allocating frame buffer: " &#x2B; av_err2str_(ret));&#xA;    }&#xA;&#xA;    size_t data_offset = 0;&#xA;&#xA;    while (data_offset &lt; this->raw_data().size()) {&#xA;        int samples_to_process = std::min(frame_size, static_cast<int>(this->raw_data().size()) - static_cast<int>(data_offset));&#xA;&#xA;        // Fill the frame with audio data&#xA;        ret = avcodec_fill_audio_frame(frame, codec_ctx->ch_layout.nb_channels, codec_ctx->sample_fmt,&#xA;            reinterpret_cast<const>(this->raw_data().data()) &#x2B; data_offset,&#xA;            samples_to_process, 0);&#xA;        if (ret &lt; 0) {&#xA;            log_error("Error filling audio frame: " &#x2B; av_err2str_(ret));&#xA;            av_frame_free(&amp;frame);&#xA;            avcodec_free_context(&amp;codec_ctx);&#xA;            avformat_free_context(format_ctx);&#xA;            throw std::runtime_error("Error filling audio frame: " &#x2B; av_err2str_(ret));&#xA;        }&#xA;&#xA;        data_offset &#x2B;= samples_to_process;&#xA;&#xA;        ret = avcodec_send_frame(codec_ctx, frame);&#xA;        if (ret &lt; 0) {&#xA;            log_error("Error sending frame for encoding: " &#x2B; av_err2str_(ret));&#xA;            av_frame_free(&amp;frame);&#xA;            avcodec_free_context(&amp;codec_ctx);&#xA;            avformat_free_context(format_ctx);&#xA;            throw std::runtime_error("Error sending frame for encoding: " &#x2B; av_err2str_(ret));&#xA;        }&#xA;&#xA;        while (ret >= 0) {&#xA;            ret = avcodec_receive_packet(codec_ctx, &amp;pkt);&#xA;            if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {&#xA;                break;&#xA;            }&#xA;            check_av_error(ret, "Error receiving packet");&#xA;&#xA;            pkt.stream_index = stream->index;&#xA;&#xA;            ret = av_interleaved_write_frame(format_ctx, &amp;pkt);&#xA;            check_av_error(ret, "Error writing encoded frame to output file");&#xA;&#xA;            av_packet_unref(&amp;pkt);&#xA;        }&#xA;    }&#xA;&#xA;    // Flush the encoder&#xA;    avcodec_send_frame(codec_ctx, nullptr);&#xA;    while (avcodec_receive_packet(codec_ctx, &amp;pkt) == 0) {&#xA;        pkt.stream_index = stream->index;&#xA;        av_interleaved_write_frame(format_ctx, &amp;pkt);&#xA;        av_packet_unref(&amp;pkt);&#xA;    }&#xA;&#xA;    av_write_trailer(format_ctx);&#xA;&#xA;    av_frame_free(&amp;frame);&#xA;    avcodec_free_context(&amp;codec_ctx);&#xA;    avformat_free_context(format_ctx);&#xA;&#xA;    return std::ofstream(out_f, std::ios::binary);&#xA;}&#xA;</const></int></int>

    &#xA;

    The runtime error is :

    &#xA;

    Exception thrown at 0x00007FF945137C9B (avcodec-61.dll) in cppdub_test.exe : 0xC0000005 : Access violation reading location 0x0000024CBCD25080.

    &#xA;

    for line :

    &#xA;

        ret = avcodec_send_frame(codec_ctx, frame);&#xA;

    &#xA;

    Call stack :

    &#xA;

        avcodec-61.dll!00007ff945137c9b()   Unknown&#xA;    avcodec-61.dll!00007ff9451381bb()   Unknown&#xA;    avcodec-61.dll!00007ff945139679()   Unknown&#xA;    avcodec-61.dll!00007ff94371521d()   Unknown&#xA;    avcodec-61.dll!00007ff9434a80c2()   Unknown&#xA;    avcodec-61.dll!00007ff9434a84a6()   Unknown&#xA;    avcodec-61.dll!00007ff9434a8749()   Unknown&#xA;>   cppdub_test.exe!cppdub::AudioSegment::export_segment(std::string &amp; out_f, const std::string &amp; format, const std::string &amp; codec, const std::string &amp; bitrate, const std::vector> &amp; parameters, const std::map,std::allocator>> &amp; tags, const std::string &amp; id3v2_version, const std::string &amp; cover) Line 572  C&#x2B;&#x2B;&#xA;    cppdub_test.exe!main() Line 33  C&#x2B;&#x2B;&#xA;    [External Code] &#xA;&#xA;

    &#xA;

    Autos :

    &#xA;

    &#x2B;       this    0x000000d3a08ff690 {data_="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0... ...} cppdub::AudioSegment *&#xA;&#x2B;       bitrate "128000"    const std::string &amp;&#xA;&#x2B;       ch_layout_1 {order=AV_CHANNEL_ORDER_NATIVE (1) nb_channels=2 u={mask=3 map=0x0000000000000003 {id=??? name=... opaque=...} } ...}   AVChannelLayout&#xA;&#x2B;       codec   "libmp3lame"    const std::string &amp;&#xA;&#x2B;       codec_ctx   0x0000024cbc78c240 {av_class=avcodec-61.dll!0x00007ff94789c760 {class_name=0x00007ff94789c740 "AVCodecContext" ...} ...}    AVCodecContext *&#xA;&#x2B;       codec_obj   avcodec-61.dll!0x00007ff9477fa4c0 (load symbols for additional information) {name=0x00007ff9477fa47c "libmp3lame" ...}  const AVCodec *&#xA;&#x2B;       cover   ""  const std::string &amp;&#xA;        data_offset 9216    unsigned __int64&#xA;&#x2B;       format  "mp3"   const std::string &amp;&#xA;&#x2B;       format_ctx  0x0000024cbc788a40 {av_class=avformat-61.dll!0x00007ff99eb09fe0 {class_name=0x00007ff99eb09fc0 "AVFormatContext" ...} ...}  AVFormatContext *&#xA;&#x2B;       frame   0x0000024cbc787380 {data=0x0000024cbc787380 {0x0000024cbcd25080 <error reading="reading" characters="characters" of="of">, ...} ...}    AVFrame *&#xA;        frame_size  9216    int&#xA;&#x2B;       id3v2_version   "4" const std::string &amp;&#xA;&#x2B;       out_f   "ha-ha-ha.mp3"  std::string &amp;&#xA;&#x2B;       parameters  { size=0 }  const std::vector> &amp;&#xA;&#x2B;       pkt {buf=0x0000000000000000 <null> pts=-9223372036854775808 dts=-9223372036854775808 ...}   AVPacket&#xA;        ret 9216    int&#xA;        samples_to_process  9216    int&#xA;&#x2B;       stream  0x0000024cbc789bc0 {av_class=avformat-61.dll!0x00007ff99eb09840 {class_name=0x00007ff99eb09820 "AVStream" ...} ...} AVStream *&#xA;&#x2B;       tags    { size=0 }  const std::map,std::allocator>> &amp;&#xA;</null></error>

    &#xA;

  • Error initializing FFmpegKit : "TypeError : Cannot read property 'getLogLevel' of null" in React Native

    9 janvier, par Md Monirozzaman khan

    I'm developing a React Native application where I need to process videos using the ffmpeg-kit-react-native library. However, I'm encountering an issue during the initialization of FFmpegKitConfig. The error message is :

    &#xA;

    ERROR  Error initializing FFmpegKit: [TypeError: Cannot read property &#x27;getLogLevel&#x27; of null]&#xA;

    &#xA;

    Here is my App.js code

    &#xA;

    &#xD;&#xA;
    &#xD;&#xA;
    import React, { useState, useEffect } from &#x27;react&#x27;;&#xA;import { StyleSheet, Text, View, TouchableOpacity, Alert, Dimensions, ScrollView, LayoutAnimation, UIManager, Platform } from &#x27;react-native&#x27;;&#xA;import * as ImagePicker from &#x27;expo-image-picker&#x27;;&#xA;import * as FileSystem from &#x27;expo-file-system&#x27;;&#xA;import { Video } from &#x27;expo-av&#x27;;&#xA;import { MaterialIcons } from &#x27;@expo/vector-icons&#x27;;&#xA;import { FFmpegKit, FFmpegKitConfig, ReturnCode } from &#x27;ffmpeg-kit-react-native&#x27;;&#xA;&#xA;const windowWidth = Dimensions.get(&#x27;window&#x27;).width;&#xA;&#xA;if (Platform.OS === &#x27;android&#x27;) {&#xA;  UIManager.setLayoutAnimationEnabledExperimental &amp;&amp; UIManager.setLayoutAnimationEnabledExperimental(true);&#xA;}&#xA;&#xA;export default function App() {&#xA;  const [videoFiles, setVideoFiles] = useState([]);&#xA;  const [isGridView, setIsGridView] = useState(false);&#xA;  const [isConverting, setIsConverting] = useState(false);&#xA;&#xA;  useEffect(() => {&#xA;    FFmpegKitConfig.init()&#xA;      .then(() => {&#xA;        console.log(&#x27;FFmpegKit initialized&#x27;);&#xA;      })&#xA;      .catch((error) => {&#xA;        console.error(&#x27;Error initializing FFmpegKit:&#x27;, error);&#xA;      });&#xA;  }, []);&#xA;&#xA;  const pickVideo = async () => {&#xA;    const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync();&#xA;    if (status !== &#x27;granted&#x27;) {&#xA;      alert(&#x27;Sorry, we need media library permissions to make this work!&#x27;);&#xA;      return;&#xA;    }&#xA;&#xA;    let result = await ImagePicker.launchImageLibraryAsync({&#xA;      mediaTypes: ImagePicker.MediaTypeOptions.Videos,&#xA;      allowsMultipleSelection: true,&#xA;    });&#xA;&#xA;    if (!result.canceled &amp;&amp; result.assets.length > 0) {&#xA;      const newFiles = result.assets.filter(&#xA;        (newFile) => !videoFiles.some((existingFile) => existingFile.uri === newFile.uri)&#xA;      );&#xA;&#xA;      if (newFiles.length &lt; result.assets.length) {&#xA;        Alert.alert(&#x27;Duplicate Files&#x27;, &#x27;Some files were already added.&#x27;);&#xA;      }&#xA;&#xA;      LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);&#xA;      setVideoFiles([...videoFiles, ...newFiles]);&#xA;    }&#xA;  };&#xA;&#xA;  const convertVideos = async () => {&#xA;    setIsConverting(true);&#xA;    const outputDir = `${FileSystem.documentDirectory}Output`;&#xA;&#xA;    const dirInfo = await FileSystem.getInfoAsync(outputDir);&#xA;    if (!dirInfo.exists) {&#xA;      await FileSystem.makeDirectoryAsync(outputDir, { intermediates: true });&#xA;    }&#xA;&#xA;    for (const video of videoFiles) {&#xA;      const { uri } = video;&#xA;      const filename = uri.split(&#x27;/&#x27;).pop();&#xA;      const outputFilePath = `${outputDir}/${filename.split(&#x27;.&#x27;).slice(0, -1).join(&#x27;.&#x27;)}_modified.mp4`;&#xA;&#xA;      const ffmpegCommand = `-y -i "${uri}" -af "atempo=1.02, bass=g=4:f=80:w=3, treble=g=4:f=3200:w=3, firequalizer=gain_entry=&#x27;entry(0,0);entry(62,2);entry(125,1.5);entry(250,1);entry(500,1);entry(1000,1);entry(2000,1.5);entry(4000,2.5);entry(8000,3);entry(16000,4)&#x27;, compand=attacks=0.05:decays=0.25:points=-80/-80-50/-15-30/-10-10/-2:soft-knee=4:gain=2, deesser, highpass=f=35, lowpass=f=17000, loudnorm=I=-16:LRA=11:TP=-1.5, volume=3.9dB" -c:v copy -c:a aac -b:a 224k -ar 48000 -threads 0 "${outputFilePath}"`;&#xA;&#xA;      try {&#xA;        const session = await FFmpegKit.execute(ffmpegCommand);&#xA;        const returnCode = await session.getReturnCode();&#xA;&#xA;        if (ReturnCode.isSuccess(returnCode)) {&#xA;          console.log(`Video converted: ${outputFilePath}`);&#xA;        } else if (ReturnCode.isCancel(returnCode)) {&#xA;          console.log(&#x27;Conversion cancelled&#x27;);&#xA;        } else {&#xA;          console.error(`FFmpeg process failed: ${session.getFailStackTrace()}`);&#xA;        }&#xA;      } catch (error) {&#xA;        console.error(`Error converting video: ${error.message}`);&#xA;      }&#xA;    }&#xA;&#xA;    setIsConverting(false);&#xA;    Alert.alert(&#x27;Conversion Complete&#x27;, &#x27;All videos have been converted.&#x27;);&#xA;  };&#xA;&#xA;  const deleteVideo = (uri) => {&#xA;    LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);&#xA;    setVideoFiles(videoFiles.filter((video) => video.uri !== uri));&#xA;  };&#xA;&#xA;  const clearAllVideos = () => {&#xA;    LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);&#xA;    setVideoFiles([]);&#xA;  };&#xA;&#xA;  const toggleLayout = () => {&#xA;    LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);&#xA;    setIsGridView(!isGridView);&#xA;  };&#xA;&#xA;  return (&#xA;    <view style="{styles.container}">&#xA;      <text style="{styles.header}">Video Converter App</text>&#xA;      <touchableopacity style="{styles.addButton}">&#xA;        <text style="{styles.addButtonText}">Select or Browse Videos</text>&#xA;      </touchableopacity>&#xA;      <view style="{styles.headerContainer}">&#xA;        <text style="{styles.videoCount}">Total Videos: {videoFiles.length}</text>&#xA;        {videoFiles.length > 0 &amp;&amp; (&#xA;          &lt;>&#xA;            <touchableopacity style="{styles.clearButtonContainer}">&#xA;              <materialicons size="{24}" color="red" style="{styles.clearIcon}"></materialicons>&#xA;              <text style="{styles.clearAllText}">Clear All</text>&#xA;            </touchableopacity>&#xA;            <touchableopacity style="{styles.toggleLayoutButton}">&#xA;              <materialicons size="{24}" color="#fff"></materialicons>&#xA;            </touchableopacity>&#xA;          >&#xA;        )}&#xA;      </view>&#xA;      {isGridView ? (&#xA;        <scrollview contentcontainerstyle="{styles.gridContainer}">&#xA;          {videoFiles.map((item, index) => (&#xA;            <view key="{index}" style="{styles.videoItemGrid}">&#xA;              &#xA;              <touchableopacity>> deleteVideo(item.uri)} style={styles.deleteButtonGrid}>&#xA;                <materialicons size="{24}" color="red"></materialicons>&#xA;              </touchableopacity>&#xA;            </view>&#xA;          ))}&#xA;        </scrollview>&#xA;      ) : (&#xA;        <view style="{styles.list}">&#xA;          {videoFiles.map((item, index) => (&#xA;            <view key="{index}" style="{styles.videoItem}">&#xA;              &#xA;              <text style="{styles.fileName}">{decodeURI(item.fileName || item.uri.split(&#x27;/&#x27;).pop() || &#x27;Unknown File&#x27;)}</text>&#xA;              <touchableopacity>> deleteVideo(item.uri)} style={styles.deleteButton}>&#xA;                <materialicons size="{24}" color="red"></materialicons>&#xA;              </touchableopacity>&#xA;            </view>&#xA;          ))}&#xA;        </view>&#xA;      )}&#xA;      {videoFiles.length > 0 &amp;&amp; (&#xA;        <touchableopacity style="{styles.convertButton}" disabled="{isConverting}">&#xA;          <text style="{styles.convertButtonText}">{isConverting ? &#x27;Converting...&#x27; : &#x27;Convert&#x27;}</text>&#xA;        </touchableopacity>&#xA;      )}&#xA;    </view>&#xA;  );&#xA;}&#xA;&#xA;const styles = StyleSheet.create({&#xA;  container: {&#xA;    flex: 1,&#xA;    backgroundColor: &#x27;#fff&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    padding: 10,&#xA;  },&#xA;  header: {&#xA;    fontSize: 24,&#xA;    fontWeight: &#x27;bold&#x27;,&#xA;    marginBottom: 5,&#xA;  },&#xA;  addButton: {&#xA;    backgroundColor: &#x27;#007BFF&#x27;,&#xA;    padding: 15,&#xA;    borderRadius: 10,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    marginBottom: 5,&#xA;    width: &#x27;100%&#x27;,&#xA;    elevation: 2,&#xA;    shadowColor: &#x27;#000&#x27;,&#xA;    shadowOffset: { width: 0, height: 5 },&#xA;    shadowOpacity: 0.8,&#xA;    shadowRadius: 2,&#xA;  },&#xA;  addButtonText: {&#xA;    color: &#x27;#fff&#x27;,&#xA;    fontSize: 18,&#xA;    fontWeight: &#x27;bold&#x27;,&#xA;  },&#xA;  headerContainer: {&#xA;    flexDirection: &#x27;row&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    justifyContent: &#x27;space-between&#x27;,&#xA;    width: &#x27;100%&#x27;,&#xA;    marginBottom: 10,&#xA;  },&#xA;  videoCount: {&#xA;    fontSize: 18,&#xA;  },&#xA;  clearButtonContainer: {&#xA;    flexDirection: &#x27;row&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    marginRight: 10,&#xA;  },&#xA;  clearIcon: {&#xA;    marginRight: 5,&#xA;  },&#xA;  clearAllText: {&#xA;    fontSize: 16,&#xA;    color: &#x27;red&#x27;,&#xA;    textDecorationLine: &#x27;underline&#x27;,&#xA;  },&#xA;  toggleLayoutButton: {&#xA;    backgroundColor: &#x27;#007BFF&#x27;,&#xA;    padding: 1,&#xA;    borderRadius: 8,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    justifyContent: &#x27;center&#x27;,&#xA;  },&#xA;  list: {&#xA;    flex: 1,&#xA;    width: &#x27;100%&#x27;,&#xA;  },&#xA;  videoItem: {&#xA;    padding: 5,&#xA;    borderBottomColor: &#x27;#ccc&#x27;,&#xA;    borderBottomWidth: 0.7,&#xA;    flexDirection: &#x27;row&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;  },&#xA;  videoItemGrid: {&#xA;    flexDirection: &#x27;column&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    margin: 4,&#xA;    borderWidth: 1,&#xA;    borderColor: &#x27;#ccc&#x27;,&#xA;    borderRadius: 8,&#xA;    padding: 2,&#xA;    position: &#x27;relative&#x27;,&#xA;  },&#xA;  thumbnail: {&#xA;    width: 70,&#xA;    height: 70,&#xA;    marginRight: 10,&#xA;  },&#xA;  thumbnailGrid: {&#xA;    width: 80,&#xA;    height: 80,&#xA;    marginBottom: 0,&#xA;  },&#xA;  fileName: {&#xA;    fontSize: 16,&#xA;    marginLeft: 10,&#xA;    flex: 1,&#xA;  },&#xA;  deleteButton: {&#xA;    marginLeft: 60,&#xA;    width: 20,&#xA;    height: 20,&#xA;  },&#xA;  deleteButtonGrid: {&#xA;    position: &#x27;absolute&#x27;,&#xA;    bottom: 5,&#xA;    right: 5,&#xA;  },&#xA;  convertButton: {&#xA;    backgroundColor: &#x27;#007BFF&#x27;,&#xA;    padding: 15,&#xA;    borderRadius: 10,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    marginTop: 20,&#xA;    width: &#x27;100%&#x27;,&#xA;  },&#xA;  convertButtonText: {&#xA;    color: &#x27;#fff&#x27;,&#xA;    fontSize: 18,&#xA;    fontWeight: &#x27;bold&#x27;,&#xA;  },&#xA;  gridContainer: {&#xA;    flexDirection: &#x27;row&#x27;,&#xA;    flexWrap: &#x27;wrap&#x27;,&#xA;    justifyContent: &#x27;flex-start&#x27;,&#xA;    paddingVertical: 5,&#xA;    paddingHorizontal: 5,&#xA;    width: &#x27;100%&#x27;,&#xA;  },&#xA;});

    &#xD;&#xA;

    &#xD;&#xA;

    &#xD;&#xA;&#xA;

    App.json

    &#xA;

    &#xD;&#xA;
    &#xD;&#xA;
    {&#xA;  "expo": {&#xA;    "name": "VidoeConvert",&#xA;    "slug": "VidoeConvert",&#xA;    "version": "1.0.0",&#xA;    "orientation": "portrait",&#xA;    "icon": "./assets/icon.png",&#xA;    "userInterfaceStyle": "light",&#xA;    "splash": {&#xA;      "image": "./assets/splash.png",&#xA;      "resizeMode": "contain",&#xA;      "backgroundColor": "#ffffff"&#xA;    },&#xA;    "ios": {&#xA;      "supportsTablet": true&#xA;    },&#xA;    "android": {&#xA;      "adaptiveIcon": {&#xA;        "foregroundImage": "./assets/adaptive-icon.png",&#xA;        "backgroundColor": "#ffffff"&#xA;      },&#xA;      "package": "com.anonymous.VidoeConvert"&#xA;    },&#xA;    "web": {&#xA;      "favicon": "./assets/favicon.png"&#xA;    },&#xA;    "plugins": [&#xA;      "@config-plugins/ffmpeg-kit-react-native",&#xA;      "expo-build-properties"&#xA;    ]&#xA;  }&#xA;}

    &#xD;&#xA;

    &#xD;&#xA;

    &#xD;&#xA;&#xA;

    Package.json

    &#xA;

    &#xD;&#xA;
    &#xD;&#xA;
    {&#xA;  "name": "vidoeconvert",&#xA;  "version": "1.0.0",&#xA;  "main": "expo/AppEntry.js",&#xA;  "scripts": {&#xA;    "start": "expo start",&#xA;    "android": "expo run:android",&#xA;    "ios": "expo run:ios",&#xA;    "web": "expo start --web"&#xA;  },&#xA;  "dependencies": {&#xA;    "@config-plugins/ffmpeg-kit-react-native": "^8.0.0",&#xA;    "@expo/metro-runtime": "~3.2.1",&#xA;    "expo": "~51.0.17",&#xA;    "expo-asset": "~10.0.10",&#xA;    "expo-av": "^14.0.6",&#xA;    "expo-document-picker": "~12.0.2",&#xA;    "expo-file-system": "~17.0.1",&#xA;    "expo-image-picker": "~15.0.7",&#xA;    "expo-media-library": "~16.0.4",&#xA;    "expo-status-bar": "~1.12.1",&#xA;    "ffmpeg-kit-react-native": "^6.0.2",&#xA;    "react": "18.2.0",&#xA;    "react-dom": "18.2.0",&#xA;    "react-native": "^0.74.3",&#xA;    "react-native-document-picker": "^9.3.0",&#xA;    "react-native-ffmpeg": "^0.5.2",&#xA;    "react-native-vector-icons": "^10.1.0",&#xA;    "react-native-web": "~0.19.10",&#xA;    "expo-build-properties": "~0.12.3"&#xA;  },&#xA;  "devDependencies": {&#xA;    "@babel/core": "^7.20.0"&#xA;  },&#xA;  "private": true&#xA;}

    &#xD;&#xA;

    &#xD;&#xA;

    &#xD;&#xA;&#xA;

    Has anyone encountered a similar issue or can point me in the right direction to resolve this error ? Any help would be greatly appreciated !

    &#xA;

    How to remove the error ?

    &#xA;

    any configruation required for this project ?

    &#xA;

  • RaspberryPi HQ camera not working with FFMPEG [closed]

    12 mars 2024, par GeeTee

    I just want to prefix this by saying I'm still quite fresh to linux so please bare with me as I don't always know exactly what I'm looking at.

    &#xA;

    Hardware : Raspberry Pi 5 4GB / Pi HQ camera (connected with adapter cable)&#xA;OS : Debain V12 (bookworm)&#xA;FFMPEG : ffmpeg version 5.1.4-0+rpt3+deb12u1&#xA;I2C = Enabled&#xA;X / Wayland : Wayland (had to use this for VNC)

    &#xA;

    I know the camera works as : when I use rpicam-vid -t 0 I have a working preview without issue (albeit slightly stuttery)

    &#xA;

    When I try to enter ffmpeg -f v4l2 -i /dev/video0 I get the following :&#xA;(with the goal of having some video in a preview window)

    &#xA;

    [video4linux2,v4l2 @ 0x5555a0811a20] ioctl(VIDIOC_G_PARM): Inappropriate ioctl for device&#xA;[video4linux2,v4l2 @ 0x5555a0811a20] Time per frame unknown&#xA;[video4linux2,v4l2 @ 0x5555a0811a20] ioctl(VIDIOC_STREAMON): Invalid argument&#xA;/dev/video0: Invalid argument&#xA;

    &#xA;

    I have also tried ffplay -f v4l2 -i /dev/video0 and get the same error as above.

    &#xA;

    Following other forums I've tried (I'm not sure this is all necessary but to cover all bases, and save time) :

    &#xA;

    Prompt : ffmpeg -sources device /dev/video0&#xA;Out : none (as in libpostproc    56.  6.100 / 56.  6.100 is the last line)

    &#xA;

    Promt : v4l2-ctl --list-devices&#xA;Out :

    &#xA;

    pispbe (platform:1000880000.pisp_be):&#xA;    /dev/video20&#xA;    /dev/video21&#xA;    /dev/video22&#xA;    /dev/video23&#xA;    /dev/video24&#xA;    /dev/video25&#xA;    /dev/video26&#xA;    /dev/video27&#xA;    /dev/video28&#xA;    /dev/video29&#xA;    /dev/video30&#xA;    /dev/video31&#xA;    /dev/video32&#xA;    /dev/video33&#xA;    /dev/video34&#xA;    /dev/video35&#xA;    /dev/video36&#xA;    /dev/video37&#xA;    /dev/media1&#xA;    /dev/media2&#xA;&#xA;rp1-cfe (platform:1f00110000.csi):&#xA;    /dev/video0&#xA;    /dev/video1&#xA;    /dev/video2&#xA;    /dev/video3&#xA;    /dev/video4&#xA;    /dev/video5&#xA;    /dev/video6&#xA;    /dev/video7&#xA;    /dev/media0&#xA;&#xA;rpivid (platform:rpivid):&#xA;    /dev/video19&#xA;    /dev/media3&#xA;

    &#xA;

    (seems to me rp1-cfe is what I want / need ? which is good that it shows up ?)

    &#xA;

    Prompt : strace cat /dev/video0&#xA;Out :

    &#xA;

    execve("/usr/bin/cat", ["cat", "/dev/video0"], 0x7fffc4c80c38 /* 41 vars */) = 0&#xA;brk(NULL)                               = 0x55567d41c000&#xA;faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)&#xA;openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3&#xA;newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=80471, ...}, AT_EMPTY_PATH) = 0&#xA;mmap(NULL, 80471, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fff59df4000&#xA;close(3)                                = 0&#xA;openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3&#xA;read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0py\2\0\0\0\0\0"..., 832) = 832&#xA;newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=1651472, ...}, AT_EMPTY_PATH) = 0&#xA;mmap(NULL, 1826976, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fff59c34000&#xA;mmap(0x7fff59c40000, 1761440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0x7fff59c40000&#xA;munmap(0x7fff59c34000, 49152)           = 0&#xA;munmap(0x7fff59df0000, 8352)            = 0&#xA;mprotect(0x7fff59dc8000, 81920, PROT_NONE) = 0&#xA;mmap(0x7fff59ddc000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18c000) = 0x7fff59ddc000&#xA;mmap(0x7fff59de4000, 41120, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fff59de4000&#xA;close(3)                                = 0&#xA;set_tid_address(0x7fff59e4b010)         = 1526021&#xA;set_robust_list(0x7fff59e4b020, 24)     = 0&#xA;rseq(0x7fff59e4b660, 0x20, 0, 0xd428bc00) = 0&#xA;mprotect(0x7fff59ddc000, 16384, PROT_READ) = 0&#xA;mprotect(0x5556410fc000, 16384, PROT_READ) = 0&#xA;mprotect(0x7fff59e44000, 16384, PROT_READ) = 0&#xA;prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0&#xA;munmap(0x7fff59df4000, 80471)           = 0&#xA;getrandom("\x5c\x96\x77\x22\xd2\x25\xd3\x23", 8, GRND_NONBLOCK) = 8&#xA;brk(NULL)                               = 0x55567d41c000&#xA;brk(0x55567d440000)                     = 0x55567d440000&#xA;openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3&#xA;newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=3048976, ...}, AT_EMPTY_PATH) = 0&#xA;mmap(NULL, 3048976, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fff59954000&#xA;close(3)                                = 0&#xA;newfstatat(1, "", {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x1), ...}, AT_EMPTY_PATH) = 0&#xA;openat(AT_FDCWD, "/dev/video0", O_RDONLY) = 3&#xA;newfstatat(3, "", {st_mode=S_IFCHR|0660, st_rdev=makedev(0x51, 0x13), ...}, AT_EMPTY_PATH) = 0&#xA;fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0&#xA;mmap(NULL, 163840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fff5992c000&#xA;read(3, 0x7fff59930000, 131072)         = -1 EINVAL (Invalid argument)&#xA;write(2, "cat: ", 5cat: )                    = 5&#xA;write(2, "/dev/video0", 11/dev/video0)             = 11&#xA;openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4&#xA;newfstatat(4, "", {st_mode=S_IFREG|0644, st_size=2996, ...}, AT_EMPTY_PATH) = 0&#xA;read(4, "# Locale name alias data base.\n#"..., 4096) = 2996&#xA;read(4, "", 4096)                       = 0&#xA;close(4)                                = 0&#xA;openat(AT_FDCWD, "/usr/share/locale/en_GB.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)&#xA;openat(AT_FDCWD, "/usr/share/locale/en_GB.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)&#xA;openat(AT_FDCWD, "/usr/share/locale/en_GB/LC_MESSAGES/libc.mo", O_RDONLY) = 4&#xA;newfstatat(4, "", {st_mode=S_IFREG|0644, st_size=1433, ...}, AT_EMPTY_PATH) = 0&#xA;mmap(NULL, 1433, PROT_READ, MAP_PRIVATE, 4, 0) = 0x7fff59e34000&#xA;close(4)                                = 0&#xA;openat(AT_FDCWD, "/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)&#xA;openat(AT_FDCWD, "/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)&#xA;openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)&#xA;write(2, ": Invalid argument", 18: Invalid argument)      = 18&#xA;write(2, "\n", 1&#xA;)                       = 1&#xA;munmap(0x7fff5992c000, 163840)          = 0&#xA;close(3)                                = 0&#xA;close(1)                                = 0&#xA;close(2)                                = 0&#xA;exit_group(1)                           = ?&#xA;&#x2B;&#x2B;&#x2B; exited with 1 &#x2B;&#x2B;&#x2B;&#xA;

    &#xA;

    (no idea what I'm reading here and if it's good or bad so I included it all)

    &#xA;

    Prompt : ffmpeg -f v4l2 -list_formats all -i /dev/video0&#xA;Out :

    &#xA;

    [video4linux2,v4l2 @ 0x55561cd9da20] Raw       :     yuyv422 :           YUYV 4:2:2 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :     uyvy422 :           UYVY 4:2:2 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported :           YVYU 4:2:2 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported :           VYUY 4:2:2 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    rgb565le :     16-bit RGB 5-6-5 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    rgb565be :  16-bit RGB 5-6-5 BE : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    rgb555le : 16-bit A/XRGB 1-5-5-5 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    rgb555be : 16-bit A/XRGB 1-5-5-5 BE : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :       rgb24 :     24-bit RGB 8-8-8 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :       bgr24 :     24-bit BGR 8-8-8 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :        0rgb : 32-bit A/XRGB 8-8-8-8 : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : bayer_bggr8 : 8-bit Bayer BGBG/GRGR : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : bayer_gbrg8 : 8-bit Bayer GBGB/RGRG : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : bayer_grbg8 : 8-bit Bayer GRGR/BGBG : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : bayer_rggb8 : 8-bit Bayer RGRG/GBGB : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Bayer BGBG/GRGR Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Bayer GBGB/RGRG Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Bayer GRGR/BGBG Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Bayer RGRG/GBGB Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Bayer BGBG/GRGR Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Bayer GBGB/RGRG Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Bayer GRGR/BGBG Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Bayer RGRG/GBGB Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Bayer BGBG/GRGR Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Bayer GBGB/RGRG Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Bayer GRGR/BGBG Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Bayer RGRG/GBGB Packed : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 16-bit Bayer BGBG/GRGR : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 16-bit Bayer GBGB/RGRG : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 16-bit Bayer GRGR/BGBG : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 16-bit Bayer RGRG/GBGB : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :        gray :      8-bit Greyscale : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 10-bit Greyscale (MIPI Packed) : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 12-bit Greyscale (MIPI Packed) : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       : Unsupported : 14-bit Greyscale (MIPI Packed) : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Raw       :    gray16le :     16-bit Greyscale : {16-16384, 2}x{16-16384, 1}&#xA;[video4linux2,v4l2 @ 0x55561cd9da20] Compressed: Unsupported : PiSP Bayer Compressed Format : {16-16384, 2}x{16-16384, 1}&#xA;/dev/video0: Immediate exit requested&#xA;

    &#xA;

    Not sure why so many of these are unsupported, I saw a video on YouTube with the same camera and older Pi and he did not have so many unsupported.

    &#xA;

    Also, I ran the config file in the ffmpeg directory and I think it generated some additional files (wasn't working before either) are these normal ? (ffmpeg $ ls)

    &#xA;

    Changelog        COPYING.LGPLv2.1  INSTALL.md   libpostproc    presets&#xA;compat           COPYING.LGPLv3    libavcodec   libswresample  README.md&#xA;configure        CREDITS           libavdevice  libswscale     RELEASE&#xA;CONTRIBUTING.md  doc               libavfilter  LICENSE.md     tests&#xA;COPYING.GPLv2    ffbuild           libavformat  MAINTAINERS    tools&#xA;COPYING.GPLv3    fftools           libavutil    Makefile&#xA;

    &#xA;

    A side question : How do I enable and disable libraries ? I tried entering —enable-pulse for example (with and without spaces and prefixed by ffmpeg) but get an error along the lines of unrecognised option or command not found. (I've tried google but as mentioned prior, I'm a bit lost)

    &#xA;

    Thanks in advance.

    &#xA;