GNU/Linux >> Belajar Linux >  >> Linux

Bisakah saya menyimpan dokumen-dokumen ini di mesin sekarat dari pelupaan?

inilah contoh program libasound dengan definisi yang cukup untuk mendapatkan output dasar wav 44,1k 2 saluran tanpa header.

EDIT:Saya sebenarnya tidak yakin apakah langsung membuang data karena wav akan berfungsi, karena kebisingan saat merekam dapat dengan mudah merusaknya, tetapi Anda mungkin dapat melakukan sesuatu seperti gelombang sinus bit pada frekuensi tinggi yang lebih dapat diandalkan

EDIT2:jika aplay ada dan berfungsi, Anda juga dapat menggunakannya dan cukup menulis program yang mengeluarkan audio mentah dan menyalurkannya ke aplay atau apa pun yang dapat memutar audio

EDIT3:memodifikasinya untuk tidak menggunakan header sama sekali

jika -lasound tidak dapat dikompilasi, tambahkan -L/path/where/libasound/is/located

/*
    gcc alsa_noheader.c -lasound
    cat stuff.wav | ./a.out
*/

typedef unsigned int uint;
typedef unsigned long ulon;

int printf(char*, ...);
void* malloc(long);
long read(int fd, void* buf, ulon count);

int snd_pcm_open(void**, char*, int, int);
ulon snd_pcm_hw_params_sizeof();
int snd_pcm_hw_params_any(void*, void*);
int snd_pcm_hw_params_set_access(void*, void*, int);
int snd_pcm_hw_params_set_format(void*, void*, int);
int snd_pcm_hw_params_set_channels(void*, void*, uint);
int snd_pcm_hw_params_set_rate_near(void*, void*, uint*, int*);
int snd_pcm_hw_params(void*, void*);
int snd_pcm_hw_params_get_period_size(void*, ulon*, int*);
long snd_pcm_writei(void*, void*, uint);
int snd_pcm_prepare(void*);
int snd_pcm_drain(void*);
int snd_pcm_close(void*);

int main(int argc, char* argv[])
{
    void* pcm;
    void* params;

    int rate;
    int nchannels;
    ulon frames;
    void* buf;
    int bufsize;
    long nread;

    snd_pcm_open(&pcm, "default", 0, 0);
    params = malloc(snd_pcm_hw_params_sizeof());
    snd_pcm_hw_params_any(pcm, params);

    /* 3 = rw_interleaved */
    snd_pcm_hw_params_set_access(pcm, params, 3);

    /* 2 = 16-bit signed little endian */
    snd_pcm_hw_params_set_format(pcm, params, 2);

    /* 2 channels */
    nchannels = 2;
    snd_pcm_hw_params_set_channels(pcm, params, nchannels);

    /* sample rate */
    rate = 44100;
    snd_pcm_hw_params_set_rate_near(pcm, params, &rate, 0);

    snd_pcm_hw_params(pcm, params);
    snd_pcm_hw_params_get_period_size(params, &frames, 0);

    bufsize = frames * nchannels * 2;
    buf = malloc(bufsize);

    /* read file from stdin */
    while (nread = read(0, buf, bufsize) > 0)
    {
        if (snd_pcm_writei(pcm, buf, frames) == -29)
        {
            printf("W: underrun\n");
            snd_pcm_prepare(pcm);
        }
    }

    snd_pcm_drain(pcm);
    snd_pcm_close(pcm);

    return 0;
}

Apakah HDMI Anda atau port tampilan keluar lainnya berfungsi? Jika demikian, Anda dapat menggunakan perangkat tangkapan layar untuk merekamnya sebagai video dan memprosesnya nanti. Sehingga tidak dibatasi oleh frekuensi gambar webcam Anda.


Bagaimana dengan hex-encode data Anda dan menampilkannya halaman per halaman ke terminal?

Anda dapat menambahkan awalan dengan offset dalam biner sehingga Anda dapat membuat ulang halaman dengan mudah (untuk koreksi manual?)

Kemudian di komputer lain gunakan beberapa perangkat lunak OCR untuk memindai halaman.

Terminal 80x25 akan menghasilkan 1000 byte per halaman (dikurangi ruang untuk awalan). Jadi dalam kira-kira 1000 halaman Anda bisa mengeluarkan data Anda. Bahkan pada satu halaman per detik, itu kurang dari 20 menit.

Pengkodean hex mudah untuk ditulis dan juga menyediakan koreksi kesalahan dalam bentuk mentah (hanya ada 16 simbol yang valid).


Linux
  1. Bagaimana saya bisa mengecualikan direktori dari grep -R?

  2. Bagaimana saya bisa mengecualikan direktori dari perintah ls

  3. Bagaimana saya bisa menghapus jenkins sepenuhnya dari linux

  1. Bisakah saya mem-boot Linux dari VHD?

  2. Menghubungkan ke VPN SonicWall dari mesin Linux

  3. Bagaimana saya bisa menulis ke dmesg dari baris perintah?

  1. Bisakah saya terhubung ke mesin Windows dari shell Linux?

  2. Mengambil dump MySQL dari komputer lain

  3. Bisakah dpkg memverifikasi file dari paket yang diinstal?