Portál AbcLinuxu, 6. května 2025 16:32
dvbscan
, takže jsem to zmáknul programem scan
, i když se mi nějak nenaskenovaly programy České televize, což bych pro začátek oželel. Moc se mi líbil tento Cohenův blog, popisující použití daemona dvbd s možností nahrávat i více kanálů zaráz, jenže…
…on už je to starý neudržovaný projekt, poslední aktualizace 2005. Povedlo se mi opravit takové ty blbiny, jako
error: ‘strerror’ was not declared in this scopea podobné, jenže pak přišla bída na Kozáky, když na mne vyskočily chyby
In file included from connection.h:24, from connection.cpp:20: tunermanager.h:41: error: extra qualification ‘TunerManager::’ on member ‘parseConfig’ In file included from connection.h:25, from connection.cpp:20: stringrep.h:29: error: extra qualification ‘StringRep::’ on member ‘toString’ make[3]: *** [connection.o] Error 1Na tohle jsem nikde řešení nenašel, takže jsem se nedopracoval k funkčnímu daemonu. Zkoušel jsem program TVHeadend, tam jsem ztroskotal na tom, že to na mne řve něco o neoprávněném přístupu při pokusu o přehrávání. Zkoušel jsem pár dalších programů, neúspěšně. Při přehrávání mplayerem
mplayer dvb://"Prima COOL"
to na mne řve něco o pomalém počítači a obraz nestíhá, při použití parametru -vo gl
to stíhá, ale je tam nechutné řádkování.
Kaffeine mi padalo okamžitě při pokusu spustit TV. Nakonec jsem ho překompiloval a jede i nahrává. (Opět) jenže…
…jenže to není to, co bych chtěl. Rád bych něco, co by měl umožňovat zmiňovaný daemon. Poradíte mi něco, čím ho nahradit, nebo jak vyřešit uvedené chyby?
Řešení dotazu:
mplayer http://tv:1234/ct1
a nahravat se da wgetem: wget http://tv:1234/ct2
.
Pro pohodlnejsi nahravani pouzivame projekt dvbgrab (jemu je nutne spristupnit kanaly pres udp). Dale je nekde potreba vzit program stanic ve formatu xmltv - to lze napriklad na xmltv.arcao.com/ (my mame jiny vlastni zdroj).
V pripade potreby jsem ochoten postnout nejake konfiguraky...
Do projektu dvbgrab je treba trosku vice proniknout, ale lze nakonfigurovat treba tak, ze vysledny grab oreze o reklamy (vhodnym externim nastrojem) a prekonvertuje pomoci mencoderu do divx...
Stačí ty kvalifikátory z dané pozice umazat.In file included from connection.h:24, from connection.cpp:20: tunermanager.h:41: error: extra qualification ‘TunerManager::’ on member ‘parseConfig’ In file included from connection.h:25, from connection.cpp:20: stringrep.h:29: error: extra qualification ‘StringRep::’ on member ‘toString’ make[3]: *** [connection.o] Error 1
31 class Tuner; 32 class ConfigFile; 33 34 typedef std::list<Tuner *> TunerList; 35 36 class TunerManager : public Selectable { 37 public: 38 39 virtual ~TunerManager(); 40 41 bool TunerManager::parseConfig(ConfigFile &c); 42 void parseCommandLine(int argc, char *argv[]); 43 44 virtual void addSelectFDs(Select &) const; 45 virtual bool isReady(const Select &) const; 46 void processReady(const Select &s); 47 48 bool add( const std::string &type, 49 const std::string &device, 50 const std::string &channels );
26 class StringRep { 27 public: 28 friend std::ostream& operator << (std::ostream &o, const StringRep &s); 29 std::string StringRep::toString() const; 30 protected: 31 virtual ~StringRep(); 32 virtual std::ostream& printOn(std::ostream &) const = 0; 33 };
TunerManager::
na radce 41 v 1. vypisu, totez pro StringRep::
na radce 29 ve 2. vypisu
controlledconnection.cpp: In member function ‘virtual bool ControlledConnection: :processReady(const Select&)’: controlledconnection.cpp:154: error: call of overloaded ‘toString(size_t)’ is ambiguous stringutil.h:27: note: candidates are: std::string toString(bool) stringutil.h:28: note: std::string toString(int) stringutil.h:29: note: std::string toString(unsigned int) stringutil.h:30: note: std::string toString(double) controlledconnection.cpp:182: error: call of overloaded ‘toString(size_t)’ is ambiguous stringutil.h:27: note: candidates are: std::string toString(bool) stringutil.h:28: note: std::string toString(int) stringutil.h:29: note: std::string toString(unsigned int) stringutil.h:30: note: std::string toString(double) controlledconnection.cpp:242: error: call of overloaded ‘toString(size_t)’ is ambiguous stringutil.h:27: note: candidates are: std::string toString(bool) stringutil.h:28: note: std::string toString(int) stringutil.h:29: note: std::string toString(unsigned int) stringutil.h:30: note: std::string toString(double) make[3]: *** [controlledconnection.o] Error 1Ale každopádně díky.
toString()
na jeden ze zminenych ... nejlepe asi na unsigned int
, takze to volani bude vypadat nasledovne toString((unsigned int) TO_CO_TAM_JE)
ale vypada to, ze to asi nerozbehnete (kdyz jsou tam i takove problemy)
[ota@otula ota]$ dvbcat dvb-t "NOVA" | mplayer - Fatal error: failed to connect to server on socket /var/run/dvbd/dvbd.socket MPlayer SVN-r29776-4.4.1 (C) 2000-2009 MPlayer Team 141 audio & 306 video codecs mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control. Playing -. Reading from stdin...
[ota@otula ota]$ ls -l /var/run/dvbd celkem 4 -rw-r--r-- 1 root root 6 8. led 14.23 dvbd.pid srwxrwxrwx 1 root root 0 8. led 14.23 dvbd.socket
strace -f -o trace.txt -s 256 /etc/rc.d/dvbd start
video
:
Fatal error: failed to lookup user "video" in group database Success
[ota@otula ota]$ grep video /etc/group video:x:91:ota,jana,hts
strace
vyhodil docela zajímavé chyby. Celý výpis je přiložen a jak vidím, tak se snaží přistupovat ke knihovnám na nesmyslných místech. Pro ukázku jeden ze souborů, který nenašel:
[ota@otula ota]$ locate libstdc++.so.6 /opt/lib32/usr/lib/libstdc++.so.6 /opt/lib32/usr/lib/libstdc++.so.6.0.13 /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.6.0.13 /usr/lib/gcc/x86_64-unknown-linux-gnu/4.3.4/libstdc++.so.6 /usr/lib/gcc/x86_64-unknown-linux-gnu/4.3.4/libstdc++.so.6.0.10- jestli by stačil přidat ještě nějaký parametr při
configure
?
/etc/group
) chybí uživatel video
- což představuje skupinu video. Ale možná máš pravdu a vykládám si to blbě.
Fatal error: failed to lookup user "video" in group databaseHláška poněkud kryptická, nicméně podle zdrojáku je to tak, že hledá skupinu "video".
// set the group if (socketGid != "") { uid_t group; if (!sscanf(socketGid.c_str(), "%d", &group)) { struct group *p = getgrnam(socketGid.c_str()); if (p == NULL) { std::cerr << "Fatal error: failed to lookup user " << socketGid << " in group database\n" << strerror(errno) << std::endl; exit(1); } group = p->gr_gid; }Pokud se na to podíváte blíž, tak zjistíte, že hledáte skupinu "video" nikoliv video. Někde v konfiguráku budete mít kolem video uvozovky, zkuste to bez nich.
Celý výpis je přiložen a jak vidím, tak se snaží přistupovat ke knihovnám na nesmyslných místech.To je normální postup, jak najít, kde ta knihovna je. (Podobně funguje prohledávání PATH když spustíte něco z bashe.)
Mimochodem, nevědel by někdo, čím poeditovat nahrávku v HD?předpokládám že se jedná o mpeg-ts a vevnitř je mpeg4 avc.... netuším, ale odpoveď by mě také zajímala, bo mě to zachvilku čeká
Usage: xport <-pavtdszgher2> <infile> <program number> <video stream number> <audio stream number> Options: p = parse only, do not demux to video and audio files a = dump audio PTS v = dump video PTS t = GOP timecode mode, count repeated fields/frames d = dump all PID's (useful for debugging muxers, but tons of output) s = suppress TS rate dumping (useful when piping output to a file) z = demux to PES streams (instead of elementary streams) g = dump ATSC PSIP information h = input file is in HDMV (AVCHD and Blu-ray) format (192 byte packets) e = dump HDMV arrival_time_stamp difference r = dump PCR 2 = only extract 2 channels of HDMV LPCM audio from multi-channel tracksPředevším nemám páru, co by mohlo být myšleno parametrem
program number
./dvbstream -f 634000 -qam 64 -gi 4 -cr 2_3 -bw 8 -tm 8 -o:/home/chochi/f1.ts 401 411 -o:/home/chochi/f2.ts 101 111Nebo je moznost nahrat cely stream (v tomhle pripade nefunguje parametr -o):
./dvbstream -f 634000 -qam 64 -gi 4 -cr 2_3 -bw 8 -tm 8 -o 8192 > ~/f1.tsPak je v tom ale peknej bordel
$ mplayer -demuxer lavf ~/f1.ts MPlayer SVN-r29796-4.3.2 (C) 2000-2009 MPlayer Team Playing /home/chochi/f1.ts. libavformat file format detected. [mpeg2video @ 0x2f17de0]skipped MB in I frame at 18 6 [mpeg2video @ 0x2f17de0]ac-tex damaged at 33 27 [mpeg2video @ 0x2f17de0]Warning MVs not available [mpeg2video @ 0x2f17de0]concealing 180 DC, 180 AC, 180 MV errors [mpegts @ 0x2efed40]MAX_READ_SIZE:5000000 reached [lavf] Video stream found, -vid 0 [lavf] Audio stream found, -aid 2 [lavf] Audio stream found, -aid 3 [lavf] Audio stream found, -aid 4 [lavf] Audio stream found, -aid 5 [lavf] Audio stream found, -aid 6 [lavf] Audio stream found, -aid 7 [lavf] Video stream found, -vid 8 [lavf] Video stream found, -vid 9 [lavf] Audio stream found, -aid 10 [lavf] Audio stream found, -aid 11 [lavf] Audio stream found, -aid 12 [lavf] Video stream found, -vid 13 [lavf] Video stream found, -vid 14 LAVF: Program 514 LAVF: Program 513 LAVF: Program 2049 LAVF: Program 770 LAVF: Program 769 VIDEO: [MPG2] 720x576 0bpp 25.000 fps 15000.0 kbps (1831.1 kbyte/s) ========================================================================== Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough Could not find matching colorspace - retrying with -vf scale... Opening video filter: [scale] The selected video_out device is incompatible with this codec. Try appending the scale filter to your filter list, e.g. -vf spp,scale instead of -vf spp. VDecoder init failed :( Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Unsupported PixelFormat -1 Selected video codec: [ffmpeg2] vfm: ffmpeg (FFmpeg MPEG-2) ========================================================================== ========================================================================== Opening audio decoder: [mp3lib] MPEG layer-2, layer-3 AUDIO: 48000 Hz, 2 ch, s16le, 192.0 kbit/12.50% (ratio: 24000->192000) Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3) ========================================================================== AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample) Starting playback... Movie-Aspect is 1.33:1 - prescaling to correct movie aspect. VO: [vdpau] 720x576 => 768x576 Planar YV12 No bind found for key 'c'. 0% 2% 0.1% 0 0 A:10399.3 V:10405.6 A-V: -6.372 ct: -0.060 0/ 0 0% 2% 0.1% 0 0 Exiting... (Quit)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.